]> git.lizzy.rs Git - LightOverlay.git/commitdiff
Adds 2 more options
authorshedaniel <daniel@shedaniel.me>
Mon, 27 Apr 2020 08:41:57 +0000 (16:41 +0800)
committershedaniel <daniel@shedaniel.me>
Mon, 27 Apr 2020 08:41:57 +0000 (16:41 +0800)
build.gradle
src/main/java/me/shedaniel/lightoverlay/LightOverlayClient.java
src/main/java/me/shedaniel/lightoverlay/LightOverlayCloth.java
src/main/resources/META-INF/NetworkManager.js
src/main/resources/META-INF/WorldRenderer.js [new file with mode: 0644]
src/main/resources/META-INF/coremods.json
src/main/resources/assets/lightoverlay-forge/.modassetroot [deleted file]
src/main/resources/assets/lightoverlay-forge/lang/en_us.json

index 9d194a44ffd13d57eebb39a51d1b79a84cf3f061..8b2329d0e6fe1d3d739fb0dc49b9584c93c7c2fc 100644 (file)
@@ -16,7 +16,7 @@ plugins {
 apply plugin: 'net.minecraftforge.gradle'
 apply plugin: 'eclipse'
 
-version = "4.5"
+version = "4.6"
 group = "me.shedaniel" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
 archivesBaseName = "LightOverlay"
 
index 891123e96334c2950cd39fb84f6f7e71b01cffd8..f8b6c37de2faa54d3a468bfd96a5ac29407f4a27 100644 (file)
@@ -73,6 +73,8 @@ public class LightOverlayClient {
     static int reach = 12;
     static int crossLevel = 7;
     static boolean showNumber = false;
+    static boolean smoothLines = true;
+    static boolean underwater = false;
     static EntityType<Entity> testingEntityType;
     static float lineWidth = 1.0F;
     static int yellowColor = 0xFFFF00, redColor = 0xFF0000;
@@ -114,7 +116,7 @@ public class LightOverlayClient {
         BlockState blockBelowState = reader.getBlockState(down);
         BlockState blockUpperState = reader.getBlockState(pos);
         VoxelShape upperCollisionShape = blockUpperState.getCollisionShape(reader, pos, selectionContext);
-        if (!blockUpperState.getFluidState().isEmpty())
+        if (!underwater && !blockUpperState.getFluidState().isEmpty())
             return CrossType.NONE;
         /* WorldEntitySpawner.func_222266_a */
         // Check if the outline is full
@@ -143,13 +145,13 @@ public class LightOverlayClient {
         BlockState blockUpperState = reader.getBlockState(pos);
         VoxelShape collisionShape = blockBelowState.getCollisionShape(reader, down, context);
         VoxelShape upperCollisionShape = blockUpperState.getCollisionShape(reader, pos, context);
-        if (!blockUpperState.getFluidState().isEmpty())
+        if (!underwater && !blockUpperState.getFluidState().isEmpty())
             return -1;
         if (!blockBelowState.getFluidState().isEmpty())
             return -1;
         if (blockBelowState.isAir(reader, down))
             return -1;
-        if (!blockUpperState.isAir(reader, pos))
+        if (Block.doesSideFillSquare(upperCollisionShape, Direction.DOWN))
             return -1;
         return light.getLightFor(pos);
     }
@@ -336,12 +338,9 @@ public class LightOverlayClient {
         CHUNK_MAP.put(chunkPos, map);
     }
     
-    @SubscribeEvent
-    public static void renderWorldLast(RenderWorldLastEvent event) {
+    public static void renderWorldLast() {
         if (LightOverlayClient.enabled) {
             RenderSystem.pushMatrix();
-            RenderSystem.loadIdentity();
-            RenderSystem.multMatrix(event.getMatrixStack().getLast().getMatrix());
             Minecraft client = Minecraft.getInstance();
             ClientPlayerEntity playerEntity = client.player;
             int playerPosX = ((int) playerEntity.getPosX()) >> 4;
@@ -372,11 +371,12 @@ public class LightOverlayClient {
                 RenderSystem.enableDepthTest();
             } else {
                 RenderSystem.enableDepthTest();
+                RenderSystem.shadeModel(7425);
+                RenderSystem.enableAlphaTest();
+                RenderSystem.defaultAlphaFunc();
                 RenderSystem.disableTexture();
-                RenderSystem.enableBlend();
-                RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
-                RenderSystem.disableLighting();
-                GL11.glEnable(GL11.GL_LINE_SMOOTH);
+                RenderSystem.disableBlend();
+                if (smoothLines) GL11.glEnable(GL11.GL_LINE_SMOOTH);
                 RenderSystem.lineWidth(lineWidth);
                 Tessellator tessellator = Tessellator.getInstance();
                 BufferBuilder buffer = tessellator.getBuffer();
@@ -396,9 +396,10 @@ public class LightOverlayClient {
                         }
                     }
                 }
-                RenderSystem.disableBlend();
+                RenderSystem.enableBlend();
                 RenderSystem.enableTexture();
-                GL11.glDisable(GL11.GL_LINE_SMOOTH);
+                RenderSystem.shadeModel(7424);
+                if (smoothLines) GL11.glDisable(GL11.GL_LINE_SMOOTH);
             }
             RenderSystem.popMatrix();
         }
@@ -423,6 +424,8 @@ public class LightOverlayClient {
             reach = Integer.parseInt((String) properties.computeIfAbsent("reach", a -> "12"));
             crossLevel = Integer.parseInt((String) properties.computeIfAbsent("crossLevel", a -> "7"));
             showNumber = ((String) properties.computeIfAbsent("showNumber", a -> "false")).equalsIgnoreCase("true");
+            smoothLines = ((String) properties.computeIfAbsent("smoothLines", a -> "true")).equalsIgnoreCase("true");
+            underwater = ((String) properties.computeIfAbsent("underwater", a -> "false")).equalsIgnoreCase("true");
             lineWidth = Float.parseFloat((String) properties.computeIfAbsent("lineWidth", a -> "1"));
             {
                 int r, g, b;
@@ -445,6 +448,9 @@ public class LightOverlayClient {
             lineWidth = 1.0F;
             redColor = 0xFF0000;
             yellowColor = 0xFFFF00;
+            showNumber = false;
+            smoothLines = true;
+            underwater = false;
             try {
                 saveConfig(file);
             } catch (IOException ex) {
@@ -463,6 +469,10 @@ public class LightOverlayClient {
         fos.write("\n".getBytes());
         fos.write(("showNumber=" + showNumber).getBytes());
         fos.write("\n".getBytes());
+        fos.write(("smoothLines=" + smoothLines).getBytes());
+        fos.write("\n".getBytes());
+        fos.write(("underwater=" + underwater).getBytes());
+        fos.write("\n".getBytes());
         fos.write(("lineWidth=" + FORMAT.format(lineWidth)).getBytes());
         fos.write("\n".getBytes());
         fos.write(("yellowColorRed=" + ((yellowColor >> 16) & 255)).getBytes());
index 71b72b1790d8b3bef7797ae6fc702f87930659d1..1dd264e814e42e1a5b6cddab31ea8448e0d55632 100644 (file)
@@ -17,6 +17,8 @@ public class LightOverlayCloth {
             general.addEntry(eb.startIntSlider("config.lightoverlay-forge.reach", LightOverlayClient.reach, 1, 64).setDefaultValue(12).setTextGetter(integer -> "Reach: " + integer + " Blocks").setSaveConsumer(integer -> LightOverlayClient.reach = integer).build());
             general.addEntry(eb.startIntSlider("config.lightoverlay-forge.crossLevel", LightOverlayClient.crossLevel, 0, 15).setDefaultValue(7).setTextGetter(integer -> "Cross Level: " + integer).setSaveConsumer(integer -> LightOverlayClient.crossLevel = integer).build());
             general.addEntry(eb.startBooleanToggle("config.lightoverlay-forge.showNumber", LightOverlayClient.showNumber).setDefaultValue(false).setSaveConsumer(bool -> LightOverlayClient.showNumber = bool).build());
+            general.addEntry(eb.startBooleanToggle("config.lightoverlay-forge.smoothLines", LightOverlayClient.smoothLines).setDefaultValue(true).setSaveConsumer(bool -> LightOverlayClient.smoothLines = bool).build());
+            general.addEntry(eb.startBooleanToggle("config.lightoverlay-forge.underwater", LightOverlayClient.underwater).setDefaultValue(false).setSaveConsumer(bool -> LightOverlayClient.underwater = bool).build());
             general.addEntry(eb.startIntSlider("config.lightoverlay-forge.lineWidth", MathHelper.floor(LightOverlayClient.lineWidth * 100), 100, 700).setDefaultValue(100).setTextGetter(integer -> "Light Width: " + LightOverlayClient.FORMAT.format(integer / 100d)).setSaveConsumer(integer -> LightOverlayClient.lineWidth = integer / 100f).build());
             general.addEntry(eb.startColorField("config.lightoverlay-forge.yellowColor", LightOverlayClient.yellowColor).setDefaultValue(0xFFFF00).setSaveConsumer(color -> LightOverlayClient.yellowColor = color).build());
             general.addEntry(eb.startColorField("config.lightoverlay-forge.redColor", LightOverlayClient.redColor).setDefaultValue(0xFF0000).setSaveConsumer(color -> LightOverlayClient.redColor = color).build());
index cf853b17bc1a37bd6d4d2c91503b186bfce35e54..134c427fa05c6dba04dab738e6c0d5fe6c08b0d9 100644 (file)
@@ -1,7 +1,4 @@
 var Opcodes = Java.type("org.objectweb.asm.Opcodes");
-var FieldNode = Java.type("org.objectweb.asm.tree.FieldNode");
-var InsnNode = Java.type("org.objectweb.asm.tree.InsnNode");
-var JumpInsnNode = Java.type("org.objectweb.asm.tree.JumpInsnNode");
 var LabelNode = Java.type("org.objectweb.asm.tree.LabelNode");
 var VarInsnNode = Java.type("org.objectweb.asm.tree.VarInsnNode");
 var MethodInsnNode = Java.type("org.objectweb.asm.tree.MethodInsnNode");
@@ -9,7 +6,7 @@ var ASMAPI = Java.type("net.minecraftforge.coremod.api.ASMAPI");
 
 function initializeCoreMod() {
     return {
-        "smooth-scrolling-everywhere": {
+        "light-overlay-forge": {
             'target': {
                 'type': 'CLASS',
                 'name': 'net.minecraft.network.NetworkManager'
diff --git a/src/main/resources/META-INF/WorldRenderer.js b/src/main/resources/META-INF/WorldRenderer.js
new file mode 100644 (file)
index 0000000..0282268
--- /dev/null
@@ -0,0 +1,37 @@
+var Opcodes = Java.type("org.objectweb.asm.Opcodes");
+var LabelNode = Java.type("org.objectweb.asm.tree.LabelNode");
+var VarInsnNode = Java.type("org.objectweb.asm.tree.VarInsnNode");
+var MethodInsnNode = Java.type("org.objectweb.asm.tree.MethodInsnNode");
+var ASMAPI = Java.type("net.minecraftforge.coremod.api.ASMAPI");
+
+function initializeCoreMod() {
+    return {
+        "light-overlay-forge": {
+            'target': {
+                'type': 'CLASS',
+                'name': 'net.minecraft.client.renderer.debug.DebugRenderer'
+            },
+            'transformer': function (classNode) {
+                var render = ASMAPI.mapMethod("func_229019_a_");
+                for (i in classNode.methods) {
+                    var method = classNode.methods[i];
+                    if (method.name === render) {
+                        var instructions = method.instructions;
+                        var insnArray = instructions.toArray();
+                        for (j in insnArray) {
+                            var instruction = insnArray[j];
+                            if (instruction instanceof LabelNode) {
+                                instructions.insertBefore(instruction, new LabelNode());
+                                instructions.insertBefore(instruction, new VarInsnNode(Opcodes.ALOAD, 0));
+                                instructions.insertBefore(instruction, new MethodInsnNode(Opcodes.INVOKESTATIC, "me/shedaniel/lightoverlay/LightOverlayClient", "renderWorldLast", "()V", false));
+                                break;
+                            }
+                        }
+                        break;
+                    }
+                }
+                return classNode;
+            }
+        }
+    }
+}
\ No newline at end of file
index cf54f3a80a5778d5e3e4a0444f087cc809d074c7..ed2abed1ea748a43cbabb7a04c02587326b801df 100644 (file)
@@ -1,3 +1,4 @@
 {
-  "NetworkManager": "META-INF/NetworkManager.js"
+  "NetworkManager": "META-INF/NetworkManager.js",
+  "WorldRenderer": "META-INF/WorldRenderer.js"
 }
\ No newline at end of file
diff --git a/src/main/resources/assets/lightoverlay-forge/.modassetroot b/src/main/resources/assets/lightoverlay-forge/.modassetroot
deleted file mode 100755 (executable)
index e69de29..0000000
index 1c6902274b3c0edda877faab22a6caf212b6387c..f209db8d7711c8a9f8127873dfd403c408bcfec6 100755 (executable)
@@ -11,6 +11,8 @@
   "config.lightoverlay-forge.reach": "Reach:",
   "config.lightoverlay-forge.crossLevel": "Light Level:",
   "config.lightoverlay-forge.showNumber": "Show Number Instead:",
+  "config.lightoverlay-forge.smoothLines": "Smooth Lines:",
+  "config.lightoverlay-forge.underwater": "Display Underwater:",
   "config.lightoverlay-forge.lineWidth": "Line Width:",
   "config.lightoverlay-forge.yellowColor": "Yellow Color:",
   "config.lightoverlay-forge.redColor": "Red Color:",