Updated core

This commit is contained in:
coolGi2007
2021-12-09 05:32:48 +00:00
parent 5dec52e493
commit 69b2b1725b
4 changed files with 136 additions and 28 deletions
@@ -45,7 +45,7 @@ import java.util.regex.Pattern;
* Credits to Motschen
*
* @author coolGi2007
* @version 12-06-2021
* @version 12-09-2021
*/
// Everything required is packed into 1 class, so it is easier to copy
// This config should work for both Fabric and Forge as long as you use Mojang mappings
@@ -3,6 +3,10 @@ package com.seibel.lod.common.wrappers.minecraft;
import java.awt.*;
import java.util.HashSet;
import com.mojang.blaze3d.platform.NativeImage;
import com.seibel.lod.common.wrappers.misc.LightMapWrapper;
import com.seibel.lod.core.util.LodUtil;
import net.minecraft.client.renderer.LightTexture;
import org.lwjgl.opengl.GL20;
import com.mojang.math.Vector3f;
@@ -32,21 +36,22 @@ import net.minecraft.world.phys.Vec3;
* related to rendering in Minecraft.
*
* @author James Seibel
* @version 11-26-2021
* @version 12-05-2021
*/
public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
{
public static final MinecraftRenderWrapper INSTANCE = new MinecraftRenderWrapper();
public static final MinecraftWrapper MC_WRAPPER = MinecraftWrapper.INSTANCE;
private final GameRenderer gameRenderer = Minecraft.getInstance().gameRenderer;
private final static Minecraft mc = Minecraft.getInstance();
private static final Minecraft MC = Minecraft.getInstance();
private static final GameRenderer GAME_RENDERER = MC.gameRenderer;
@Override
public Vec3f getLookAtVector()
{
Camera camera = gameRenderer.getMainCamera();
Camera camera = GAME_RENDERER.getMainCamera();
Vector3f cameraDir = camera.getLookVector();
return new Vec3f(cameraDir.x(), cameraDir.y(), cameraDir.z());
}
@@ -54,7 +59,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
@Override
public AbstractBlockPosWrapper getCameraBlockPosition()
{
Camera camera = gameRenderer.getMainCamera();
Camera camera = GAME_RENDERER.getMainCamera();
BlockPos blockPos = camera.getBlockPosition();
return new BlockPosWrapper(blockPos.getX(), blockPos.getY(), blockPos.getZ());
}
@@ -62,13 +67,13 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
@Override
public boolean playerHasBlindnessEffect()
{
return mc.player.getActiveEffectsMap().get(MobEffects.BLINDNESS) != null;
return MC.player.getActiveEffectsMap().get(MobEffects.BLINDNESS) != null;
}
@Override
public Vec3d getCameraExactPosition()
{
Camera camera = gameRenderer.getMainCamera();
Camera camera = GAME_RENDERER.getMainCamera();
Vec3 projectedView = camera.getPosition();
return new Vec3d(projectedView.x, projectedView.y, projectedView.z);
@@ -77,13 +82,13 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
@Override
public Mat4f getDefaultProjectionMatrix(float partialTicks)
{
return McObjectConverter.Convert(gameRenderer.getProjectionMatrix(gameRenderer.getFov(gameRenderer.getMainCamera(), partialTicks, true)));
return McObjectConverter.Convert(GAME_RENDERER.getProjectionMatrix(GAME_RENDERER.getFov(GAME_RENDERER.getMainCamera(), partialTicks, true)));
}
@Override
public double getGamma()
{
return mc.options.gamma;
return MC.options.gamma;
}
@Override
@@ -95,8 +100,8 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
@Override
public Color getSkyColor() {
if (mc.level.dimensionType().hasSkyLight()) {
Vec3 colorValues = mc.level.getSkyColor(mc.gameRenderer.getMainCamera().getPosition(), mc.getFrameTime());
if (MC.level.dimensionType().hasSkyLight()) {
Vec3 colorValues = MC.level.getSkyColor(MC.gameRenderer.getMainCamera().getPosition(), MC.getFrameTime());
return new Color((float) colorValues.x, (float) colorValues.y, (float) colorValues.z);
} else
return new Color(0, 0, 0);
@@ -105,25 +110,25 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
@Override
public double getFov(float partialTicks)
{
return gameRenderer.getFov(gameRenderer.getMainCamera(), partialTicks, true);
return GAME_RENDERER.getFov(GAME_RENDERER.getMainCamera(), partialTicks, true);
}
/** Measured in chunks */
@Override
public int getRenderDistance()
{
return mc.options.renderDistance;
return MC.options.renderDistance;
}
@Override
public int getScreenWidth()
{
return mc.getWindow().getWidth();
return MC.getWindow().getWidth();
}
@Override
public int getScreenHeight()
{
return mc.getWindow().getHeight();
return MC.getWindow().getHeight();
}
/**
@@ -142,7 +147,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
// Wow, those are some long names!
// go through every RenderInfo to get the compiled chunks
LevelRenderer renderer = mc.levelRenderer;
LevelRenderer renderer = MC.levelRenderer;
for (RenderChunkInfo worldRenderer$LocalRenderInformationContainer : renderer.renderChunks)
{
CompiledChunk compiledChunk = worldRenderer$LocalRenderInformationContainer.chunk.getCompiledChunk();
@@ -158,4 +163,102 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
return loadedPos;
}
@Override
public int[] getLightmapPixels()
{
LightTexture tex = GAME_RENDERER.lightTexture();
NativeImage lightMapPixels = tex.lightPixels;
LightMapWrapper lightMap = new LightMapWrapper(lightMapPixels);
int lightMapHeight = getLightmapTextureHeight();
int lightMapWidth = getLightmapTextureWidth();
int pixels[] = new int[lightMapWidth * lightMapHeight];
for (int u = 0; u < lightMapWidth; u++)
{
for (int v = 0; v < lightMapWidth; v++)
{
// this could probably be kept as a int, but
// it is easier to test and see the colors when debugging this way.
// When creating a new release this should be changed to the int version.
Color c = LodUtil.intToColor(lightMap.getLightValue(u, v));
// these should both create a totally white image
// int col =
// Integer.MAX_VALUE;
// int col =
// 0b11111111 + // red
// (0b11111111 << 8) + // green
// (0b11111111 << 16) + // blue
// (0b11111111 << 24); // blue
int col =
(c.getRed() & 0b11111111) + // red
((c.getGreen() & 0b11111111) << 8) + // green
((c.getBlue() & 0b11111111) << 16) + // blue
((c.getAlpha() & 0b11111111) << 24); // alpha
// 2D array stored in a 1D array.
// Thank you Tim from College ;)
pixels[u * lightMapWidth + v] = col;
}
}
return pixels;
}
@Override
public int getLightmapTextureHeight()
{
int height = -1;
LightTexture lightTexture = GAME_RENDERER.lightTexture();
if (lightTexture != null)
{
NativeImage tex = lightTexture.lightPixels;
if (tex != null)
{
height = tex.getHeight();
}
}
return height;
}
@Override
public int getLightmapTextureWidth()
{
int width = -1;
LightTexture lightTexture = GAME_RENDERER.lightTexture();
if (lightTexture != null)
{
NativeImage tex = lightTexture.lightPixels;
if (tex != null)
{
width = tex.getWidth();
}
}
return width;
}
@Override
public int getLightmapGLFormat() {
int glFormat = -1;
LightTexture lightTexture = GAME_RENDERER.lightTexture();
if (lightTexture != null) {
NativeImage tex = lightTexture.lightPixels;
if (tex != null) {
glFormat = tex.format().glFormat();
}
}
return glFormat;
}
}
@@ -73,7 +73,7 @@ public class MinecraftWrapper implements IMinecraftWrapper
{
public static final MinecraftWrapper INSTANCE = new MinecraftWrapper();
private final Minecraft mc = Minecraft.getInstance();
public final Minecraft mc = Minecraft.getInstance();
/**
* The lightmap for the current:
@@ -178,31 +178,36 @@ public class MinecraftWrapper implements IMinecraftWrapper
/**
* Returns the color int at the given pixel coordinates
* from the current lightmap.
* @param u x location in texture space
* @param v z location in texture space
* @param blockLight x location in texture space
* @param skyLight z location in texture space
*/
@Override
public int getColorIntFromLightMap(int u, int v)
public int getColorIntFromLightMap(int blockLight, int skyLight)
{
if (lightMap == null)
{
sendChatMessage("new");
// make sure the lightMap is up-to-date
getCurrentLightMap();
}
return lightMap.getPixelRGBA(u, v);
return lightMap.getPixelRGBA(blockLight, skyLight);
}
/**
* Returns the Color at the given pixel coordinates
* from the current lightmap.
* @param u x location in texture space
* @param v z location in texture space
* @param blockLight x location in texture space
* @param skyLight z location in texture space
*/
@Override
public Color getColorFromLightMap(int u, int v)
{
return LodUtil.intToColor(lightMap.getPixelRGBA(u, v));
public Color getColorFromLightMap(int blockLight, int skyLight) {
if (lightMap == null) {
// make sure the lightMap is up-to-date
getCurrentLightMap();
}
return LodUtil.intToColor(lightMap.getPixelRGBA(blockLight, skyLight));
}
+1 -1
Submodule core updated: e4e21d2dc8...5c31927d54