From: shedaniel Date: Mon, 27 Apr 2020 08:41:57 +0000 (+0800) Subject: Adds 2 more options X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=a713e7742afae0bd203d3b1a96419bd28112ed4f;p=LightOverlay.git Adds 2 more options --- diff --git a/build.gradle b/build.gradle index 9d194a4..8b2329d 100644 --- a/build.gradle +++ b/build.gradle @@ -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" diff --git a/src/main/java/me/shedaniel/lightoverlay/LightOverlayClient.java b/src/main/java/me/shedaniel/lightoverlay/LightOverlayClient.java index 891123e..f8b6c37 100644 --- a/src/main/java/me/shedaniel/lightoverlay/LightOverlayClient.java +++ b/src/main/java/me/shedaniel/lightoverlay/LightOverlayClient.java @@ -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 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()); diff --git a/src/main/java/me/shedaniel/lightoverlay/LightOverlayCloth.java b/src/main/java/me/shedaniel/lightoverlay/LightOverlayCloth.java index 71b72b1..1dd264e 100644 --- a/src/main/java/me/shedaniel/lightoverlay/LightOverlayCloth.java +++ b/src/main/java/me/shedaniel/lightoverlay/LightOverlayCloth.java @@ -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()); diff --git a/src/main/resources/META-INF/NetworkManager.js b/src/main/resources/META-INF/NetworkManager.js index cf853b1..134c427 100644 --- a/src/main/resources/META-INF/NetworkManager.js +++ b/src/main/resources/META-INF/NetworkManager.js @@ -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 index 0000000..0282268 --- /dev/null +++ b/src/main/resources/META-INF/WorldRenderer.js @@ -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 diff --git a/src/main/resources/META-INF/coremods.json b/src/main/resources/META-INF/coremods.json index cf54f3a..ed2abed 100644 --- a/src/main/resources/META-INF/coremods.json +++ b/src/main/resources/META-INF/coremods.json @@ -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 index e69de29..0000000 diff --git a/src/main/resources/assets/lightoverlay-forge/lang/en_us.json b/src/main/resources/assets/lightoverlay-forge/lang/en_us.json index 1c69022..f209db8 100755 --- a/src/main/resources/assets/lightoverlay-forge/lang/en_us.json +++ b/src/main/resources/assets/lightoverlay-forge/lang/en_us.json @@ -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:",