From 69b2b1725b53311635c9cffa2be8b0b4a3ea58be Mon Sep 17 00:00:00 2001 From: coolGi2007 Date: Thu, 9 Dec 2021 05:32:48 +0000 Subject: [PATCH] Updated core --- .../lod/common/wrappers/config/ConfigGui.java | 2 +- .../minecraft/MinecraftRenderWrapper.java | 135 +++++++++++++++--- .../wrappers/minecraft/MinecraftWrapper.java | 25 ++-- core | 2 +- 4 files changed, 136 insertions(+), 28 deletions(-) diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java index 308f974ed..bb4dde917 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java @@ -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 diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java index 3fe97ea0f..1e5404822 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -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; + } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java index f7591e002..35d48b691 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java @@ -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)); } diff --git a/core b/core index e4e21d2dc..5c31927d5 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit e4e21d2dc8d083b1da686e528f4deb3f287163a0 +Subproject commit 5c31927d54564dd21ac59d4d42dd91fe7f91c818