]> git.lizzy.rs Git - LightOverlay.git/commitdiff
Support 1.17 Forge
authorshedaniel <daniel@shedaniel.me>
Fri, 13 Aug 2021 13:42:58 +0000 (21:42 +0800)
committershedaniel <daniel@shedaniel.me>
Fri, 13 Aug 2021 13:42:58 +0000 (21:42 +0800)
Signed-off-by: shedaniel <daniel@shedaniel.me>
19 files changed:
build.gradle
common/build.gradle
common/src/main/java/me/shedaniel/lightoverlay/common/LightOverlayRenderer.java
forge/build.gradle
forge/src/main/java/me/shedaniel/lightoverlay/forge/LightOverlay.java
forge/src/main/java/me/shedaniel/lightoverlay/forge/LightOverlayCloth.java
forge/src/main/java/me/shedaniel/lightoverlay/forge/LightOverlayImpl.java
forge/src/main/java/me/shedaniel/lightoverlay/forge/mixin/MixinClientConnection.java
forge/src/main/java/me/shedaniel/lightoverlay/forge/mixin/MixinDebugRenderer.java
forge/src/main/java/me/shedaniel/lightoverlay/forge/mixin/MixinLevelRenderer.java
forge/src/main/resources/META-INF/Connection.js [new file with mode: 0644]
forge/src/main/resources/META-INF/DebugRenderer.js [new file with mode: 0644]
forge/src/main/resources/META-INF/LevelRenderer.js [new file with mode: 0644]
forge/src/main/resources/META-INF/accesstransformer.cfg
forge/src/main/resources/META-INF/coremods.json [new file with mode: 0644]
forge/src/main/resources/META-INF/mods.toml
forge/src/main/resources/lightoverlay-forge.mixins.json [deleted file]
gradle.properties
settings.gradle

index 59744a31718bc83dad41337c085771be37f80150..2ab6ad7700b3acad241435ce890c891241c30b56 100644 (file)
@@ -1,6 +1,6 @@
 plugins {
-    id "architectury-plugin" version "3.2-SNAPSHOT"
-    id "dev.architectury.loom" version "0.7.2-SNAPSHOT" apply false
+    id "architectury-plugin" version "3.3-SNAPSHOT"
+    id "dev.architectury.loom" version "0.7.4-SNAPSHOT" apply false
 }
 
 architectury {
index f1f5bb37e1e4720ad284732cdd152d45335a0687..f0b4f2a3e93af0fcfc6b8eba424748c7c6324f49 100644 (file)
@@ -9,5 +9,5 @@ dependencies {
 }
 
 architectury {
-    common(false)
+    common()
 }
\ No newline at end of file
index 7204963b4ece27da4cd3d72d7b310a0ac9025522..9505cb98adede282cf04992cb5b5676a4f77bb39 100644 (file)
@@ -113,7 +113,6 @@ public class LightOverlayRenderer implements Consumer<PoseStack> {
         builder.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
         BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos();
     
-        System.out.println(ticker.CHUNK_MAP.size());
         for (Map.Entry<CubicChunkPos, Long2ByteMap> entry : ticker.CHUNK_MAP.entrySet()) {
             CubicChunkPos chunkPos = entry.getKey();
             if (LightOverlay.caching && (Mth.abs(chunkPos.x - playerPosX) > chunkRange || Mth.abs(chunkPos.y - playerPosY) > Math.max(1, chunkRange >> 1) || Mth.abs(chunkPos.z - playerPosZ) > chunkRange)) {
index fe2097e4cfcf3950f50741cdbb8cdb5b5ac78ffc..ce0bbf08270e86d536b83b42b5079870b77b60ba 100644 (file)
@@ -1,5 +1,5 @@
 plugins {
-    id "com.github.johnrengelman.shadow" version "5.0.0"
+    id "com.github.johnrengelman.shadow" version "7.0.0"
 }
 
 configurations {
@@ -11,10 +11,6 @@ architectury {
     forge()
 }
 
-loom {
-    mixinConfig "lightoverlay-forge.mixins.json"
-}
-
 processResources {
     filesMatching("META-INF/mods.toml") {
         expand "version": project.version
@@ -26,8 +22,8 @@ dependencies {
     minecraft("com.mojang:minecraft:${rootProject.architectury.minecraft}")
     mappings(minecraft.officialMojangMappings())
     forge("net.minecraftforge:forge:${rootProject.architectury.minecraft}-${project.forge_version}")
-    modCompile("me.shedaniel.cloth:cloth-config-forge:${rootProject.cloth_config_version}")
-    modCompile("me.shedaniel:architectury:${rootProject.architectury_version}:forge")
+    modImplementation("me.shedaniel.cloth:cloth-config-forge:${rootProject.cloth_config_version}")
+    modImplementation("dev.architectury:architectury-forge:${rootProject.architectury_version}")
 
     implementation(project(path: ":common")) {
         transitive = false
index 4c840aa9cf4fac07ef9fae3ff70b97ccc94c784f..eeee0e787d357efacbf8a598dd31934a11551210 100644 (file)
@@ -2,16 +2,15 @@ package me.shedaniel.lightoverlay.forge;
 
 import net.minecraftforge.api.distmarker.Dist;
 import net.minecraftforge.fml.DistExecutor;
-import net.minecraftforge.fml.ExtensionPoint;
+import net.minecraftforge.fml.IExtensionPoint;
 import net.minecraftforge.fml.ModLoadingContext;
 import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.network.FMLNetworkConstants;
-import org.apache.commons.lang3.tuple.Pair;
+import net.minecraftforge.fmllegacy.network.FMLNetworkConstants;
 
 @Mod("lightoverlay")
 public class LightOverlay {
     public LightOverlay() {
-        ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.DISPLAYTEST, () -> Pair.of(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));
+        ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));
         DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> LightOverlayImpl::register);
     }
 }
index ed6fea3b5cf9c3ab201dafa8f45fb275fb747ec2..2b65c3938ea04c742ed091a43075b9801ab6088b 100644 (file)
@@ -1,13 +1,13 @@
 package me.shedaniel.lightoverlay.forge;
 
 import me.shedaniel.lightoverlay.common.ClothScreen;
-import net.minecraftforge.fml.ExtensionPoint;
 import net.minecraftforge.fml.ModLoadingContext;
+import net.minecraftforge.fmlclient.ConfigGuiHandler;
 
 public class LightOverlayCloth {
     public static void register() {
-        ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY, () -> (client, parent) -> {
+        ModLoadingContext.get().registerExtensionPoint(ConfigGuiHandler.ConfigGuiFactory.class, () -> new ConfigGuiHandler.ConfigGuiFactory((client, parent) -> {
             return ClothScreen.getConfigScreenByCloth(parent);
-        });
+        }));
     }
 }
index 624b9bebd037e6666ca2dd02535fa041e9f4ec0e..676208d0b5d19b07b7cd7acc502ef5bfad5485dc 100644 (file)
@@ -1,12 +1,15 @@
 package me.shedaniel.lightoverlay.forge;
 
+import com.mojang.blaze3d.vertex.PoseStack;
 import me.shedaniel.lightoverlay.common.LightOverlay;
 import net.minecraft.client.renderer.culling.Frustum;
 import net.minecraftforge.api.distmarker.Dist;
 import net.minecraftforge.fml.DistExecutor;
 
+import java.util.function.Consumer;
+
 public class LightOverlayImpl {
-    public static Runnable debugRenderer = () -> {};
+    public static Consumer<PoseStack> debugRenderer = poses -> {};
     
     public static void register() {
         LightOverlay.register();
@@ -23,7 +26,7 @@ public class LightOverlayImpl {
         return FrustumHelper.isVisible(clippingHelper, v, v1, v2, v3, v4, v5);
     }
     
-    public static void renderWorldLast() {
-        debugRenderer.run();
+    public static void renderWorldLast(PoseStack stack) {
+        debugRenderer.accept(stack);
     }
 }
index 02f46debc4b81a21200f7446fbda208629220010..fcf74b7d19995e49f0b5c59c2630966ad329f2df 100644 (file)
@@ -2,36 +2,50 @@ package me.shedaniel.lightoverlay.forge.mixin;
 
 import me.shedaniel.lightoverlay.common.CubicChunkPos;
 import me.shedaniel.lightoverlay.common.LightOverlay;
-import net.minecraft.network.Connection;
+//import net.minecraft.network.Connection;
+import net.minecraft.client.multiplayer.ClientPacketListener;
 import net.minecraft.network.PacketListener;
 import net.minecraft.network.protocol.Packet;
 import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
 import net.minecraft.network.protocol.game.ClientboundLightUpdatePacket;
 import net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket;
 import net.minecraft.network.protocol.game.ClientboundSetChunkCacheCenterPacket;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import net.minecraft.util.Mth;
+//import org.spongepowered.asm.mixin.Mixin;
+//import org.spongepowered.asm.mixin.injection.At;
+//import org.spongepowered.asm.mixin.injection.Inject;
+//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 
-@Mixin(Connection.class)
+//@Mixin(Connection.class)
 public class MixinClientConnection {
-    @Inject(method = "genericsFtw", at = @At("HEAD"))
-    private static void handlePacket(Packet packet, PacketListener listener, CallbackInfo ci) {
-        if (packet instanceof ClientboundBlockUpdatePacket) {
-            LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundBlockUpdatePacket) packet).getPos()));
-        } else if (packet instanceof ClientboundSetChunkCacheCenterPacket) {
-            for (int y = 0; y <= 15; y++) {
-                LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundSetChunkCacheCenterPacket) packet).getX(), y, ((ClientboundSetChunkCacheCenterPacket) packet).getZ()));
-            }
-        } else if (packet instanceof ClientboundSectionBlocksUpdatePacket) {
-            for (int y = 0; y <= 15; y++) {
-                LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundSectionBlocksUpdatePacket) packet).sectionPos.getX(), y, ((ClientboundSectionBlocksUpdatePacket) packet).sectionPos.getZ()));
-            }
-        } else if (packet instanceof ClientboundLightUpdatePacket) {
-            for (int y = 0; y <= 15; y++) {
-                LightOverlay.queueChunk(new CubicChunkPos(((ClientboundLightUpdatePacket) packet).getX(), y, ((ClientboundLightUpdatePacket) packet).getZ()));
+//    @Inject(method = "genericsFtw", at = @At("HEAD"))
+//    private static void handlePacket(Packet packet, PacketListener listener, CallbackInfo ci) {
+//        
+//    }
+    public static void handlePacket(Packet packet, PacketListener listener) {
+        try {
+            if (!(listener instanceof ClientPacketListener packetListener)) return;
+            var level = packetListener.getLevel();
+            if (level == null) return;
+            if (packet instanceof ClientboundBlockUpdatePacket p) {
+                LightOverlay.queueChunkAndNear(new CubicChunkPos(p.getPos()));
+            } else if (packet instanceof ClientboundSetChunkCacheCenterPacket p) {
+                var height = Mth.ceil(level.getHeight() / 32.0);
+                var start = Math.floorDiv(level.getMinBuildHeight(), 32);
+                for (int y = start; y < start + height; y++) {
+                    LightOverlay.queueChunkAndNear(new CubicChunkPos(p.getX(), y, p.getZ()));
+                }
+            } else if (packet instanceof ClientboundSectionBlocksUpdatePacket p) {
+                LightOverlay.queueChunkAndNear(new CubicChunkPos(p.sectionPos.getX(), p.sectionPos.getY() >> 1, p.sectionPos.getZ()));
+            } else if (packet instanceof ClientboundLightUpdatePacket p) {
+                var height = Mth.ceil(level.getHeight() / 32.0);
+                var start = Math.floorDiv(level.getMinBuildHeight(), 32);
+                for (int y = start; y < start + height; y++) {
+                    LightOverlay.queueChunk(new CubicChunkPos(p.getX(), y, p.getZ()));
+                }
             }
+        } catch (Throwable throwable) {
+            new RuntimeException("Light Overlay failed to process packet", throwable).printStackTrace();
         }
     }
 }
index dd29fd9fa10ccde5bfc0ae0d11177289409fd5bd..b34bf7197b3583936c918d189b4104ec22b8531f 100644 (file)
@@ -2,17 +2,22 @@ package me.shedaniel.lightoverlay.forge.mixin;
 
 import com.mojang.blaze3d.vertex.PoseStack;
 import me.shedaniel.lightoverlay.forge.LightOverlayImpl;
+/*import com.mojang.blaze3d.vertex.PoseStack;
 import net.minecraft.client.renderer.MultiBufferSource;
 import net.minecraft.client.renderer.debug.DebugRenderer;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.injection.At;
 import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;*/
 
-@Mixin(DebugRenderer.class)
+//@Mixin(DebugRenderer.class)
 public class MixinDebugRenderer {
-    @Inject(method = "render", at = @At("HEAD"))
-    private void render(PoseStack arg, MultiBufferSource.BufferSource arg2, double d, double e, double f, CallbackInfo ci) {
-        LightOverlayImpl.renderWorldLast();
+//    @Inject(method = "render", at = @At("HEAD"))
+//    private void render(PoseStack arg, MultiBufferSource.BufferSource arg2, double d, double e, double f, CallbackInfo ci) {
+//        LightOverlayImpl.renderWorldLast();
+//    }
+    
+    public static void render(PoseStack stack) {
+        LightOverlayImpl.renderWorldLast(stack);
     }
 }
index e77d2d651a91c6dc1c0732cb8817746ab9ea2399..3b9277ca51dbb31a520c3b49c2c24bc8c3bbbac9 100644 (file)
@@ -1,18 +1,22 @@
 package me.shedaniel.lightoverlay.forge.mixin;
 
 import me.shedaniel.lightoverlay.common.LightOverlay;
-import net.minecraft.client.Camera;
-import net.minecraft.client.renderer.LevelRenderer;
 import net.minecraft.client.renderer.culling.Frustum;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+//import net.minecraft.client.Camera;
+//import net.minecraft.client.renderer.LevelRenderer;
+//import org.spongepowered.asm.mixin.Mixin;
+//import org.spongepowered.asm.mixin.injection.At;
+//import org.spongepowered.asm.mixin.injection.Inject;
+//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 
-@Mixin(LevelRenderer.class)
+//@Mixin(LevelRenderer.class)
 public class MixinLevelRenderer {
-    @Inject(method = "setupRender", at = @At("HEAD"))
-    private void setupTerrain(Camera camera, Frustum frustum, boolean bl, int i, boolean bl2, CallbackInfo ci) {
-        LightOverlay.frustum = frustum;
+//    @Inject(method = "setupRender", at = @At("HEAD"))
+//    private void setupTerrain(Camera camera, Frustum frustum, boolean bl, int i, boolean bl2, CallbackInfo ci) {
+//        LightOverlay.renderer.frustum = frustum;
+//    }
+    
+    public static void setupTerrain(Frustum frustum) {
+        LightOverlay.renderer.frustum = frustum;
     }
 }
diff --git a/forge/src/main/resources/META-INF/Connection.js b/forge/src/main/resources/META-INF/Connection.js
new file mode 100644 (file)
index 0000000..7f7e122
--- /dev/null
@@ -0,0 +1,33 @@
+var Opcodes = Java.type("org.objectweb.asm.Opcodes");
+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 transformMethod(method) {
+    var instructions = method.instructions;
+    instructions.insert(new MethodInsnNode(Opcodes.INVOKESTATIC, "me/shedaniel/lightoverlay/forge/mixin/MixinClientConnection", "handlePacket", "(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;)V", false));
+    instructions.insert(new VarInsnNode(Opcodes.ALOAD, 1));
+    instructions.insert(new VarInsnNode(Opcodes.ALOAD, 0));
+}
+
+function initializeCoreMod() {
+    return {
+        "lightoverlay": {
+            'target': {
+                'type': 'CLASS',
+                'name': 'net.minecraft.network.Connection'
+            },
+            'transformer': function (classNode) {
+                var genericsFtw = ASMAPI.mapMethod("m_129517_");
+                for (i in classNode.methods) {
+                    var method = classNode.methods[i];
+                    if (method.name === genericsFtw) {
+                        transformMethod(method)
+                        break;
+                    }
+                }
+                return classNode;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/forge/src/main/resources/META-INF/DebugRenderer.js b/forge/src/main/resources/META-INF/DebugRenderer.js
new file mode 100644 (file)
index 0000000..c67dba3
--- /dev/null
@@ -0,0 +1,32 @@
+var Opcodes = Java.type("org.objectweb.asm.Opcodes");
+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 transformMethod(method) {
+    var instructions = method.instructions;
+    instructions.insert(new MethodInsnNode(Opcodes.INVOKESTATIC, "me/shedaniel/lightoverlay/forge/mixin/MixinDebugRenderer", "render", "(Lcom/mojang/blaze3d/vertex/PoseStack;)V", false));
+    instructions.insert(new VarInsnNode(Opcodes.ALOAD, 1));
+}
+
+function initializeCoreMod() {
+    return {
+        "lightoverlay": {
+            'target': {
+                'type': 'CLASS',
+                'name': 'net.minecraft.client.renderer.debug.DebugRenderer'
+            },
+            'transformer': function (classNode) {
+                var render = ASMAPI.mapMethod("m_113457_");
+                for (i in classNode.methods) {
+                    var method = classNode.methods[i];
+                    if (method.name === render) {
+                        transformMethod(method)
+                        break;
+                    }
+                }
+                return classNode;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/forge/src/main/resources/META-INF/LevelRenderer.js b/forge/src/main/resources/META-INF/LevelRenderer.js
new file mode 100644 (file)
index 0000000..6ad2b6d
--- /dev/null
@@ -0,0 +1,32 @@
+var Opcodes = Java.type("org.objectweb.asm.Opcodes");
+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 transformMethod(method) {
+    var instructions = method.instructions;
+    instructions.insert(new MethodInsnNode(Opcodes.INVOKESTATIC, "me/shedaniel/lightoverlay/forge/mixin/MixinLevelRenderer", "setupTerrain", "(Lnet/minecraft/client/renderer/culling/Frustum;)V", false));
+    instructions.insert(new VarInsnNode(Opcodes.ALOAD, 2));
+}
+
+function initializeCoreMod() {
+    return {
+        "lightoverlay": {
+            'target': {
+                'type': 'CLASS',
+                'name': 'net.minecraft.client.renderer.LevelRenderer'
+            },
+            'transformer': function (classNode) {
+                var setupRender = ASMAPI.mapMethod("m_109695_");
+                for (i in classNode.methods) {
+                    var method = classNode.methods[i];
+                    if (method.name === setupRender) {
+                        transformMethod(method)
+                        break;
+                    }
+                }
+                return classNode;
+            }
+        }
+    }
+}
\ No newline at end of file
index c459c1b31a1b8c1d5733736e769d4347a78317fc..6c6bb47fdd650600341ea1bf991df1499b45a955 100644 (file)
@@ -1,5 +1,5 @@
-public net.minecraft.client.renderer.culling.ClippingHelper field_228949_b_ #cameraX
-public net.minecraft.client.renderer.culling.ClippingHelper field_228950_c_ #cameraY
-public net.minecraft.client.renderer.culling.ClippingHelper field_228951_d_ #cameraZ
-public net.minecraft.client.renderer.culling.ClippingHelper field_228948_a_ #frustum
-public net.minecraft.network.play.server.SMultiBlockChangePacket field_244305_a #field_244305_a
\ No newline at end of file
+public net.minecraft.client.renderer.culling.Frustum f_112996_ # camX
+public net.minecraft.client.renderer.culling.Frustum f_112997_ # camY
+public net.minecraft.client.renderer.culling.Frustum f_112998_ # camZ
+public net.minecraft.client.renderer.culling.Frustum f_112995_ # frustumData
+public net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket f_132980_ # sectionPos
\ No newline at end of file
diff --git a/forge/src/main/resources/META-INF/coremods.json b/forge/src/main/resources/META-INF/coremods.json
new file mode 100644 (file)
index 0000000..17c6500
--- /dev/null
@@ -0,0 +1,5 @@
+{
+  "Connection": "META-INF/Connection.js",
+  "DebugRenderer": "META-INF/DebugRenderer.js",
+  "LevelRenderer": "META-INF/LevelRenderer.js"
+}
\ No newline at end of file
index d4f372d2cac4e4bcc56da72d7bd57e481078213f..a04bdd63e0b3831ecd179b9b913af325527daeb0 100755 (executable)
@@ -1,5 +1,5 @@
 modLoader = "javafml"
-loaderVersion = "[33,)"
+loaderVersion = "[37,)"
 issueTrackerURL = "https://github.com/shedaniel/LightOverlay/issues/" #optional
 logoFile = "icon.png"
 authors = "shedaniel"
@@ -13,15 +13,15 @@ To provide users with NEI-like light overlay.
 '''
 
 [[dependencies.lightoverlay]]
-modId = "cloth-config"
+modId = "cloth_config"
 mandatory = true
-versionRange = "[4.10.13,)"
+versionRange = "[5.0.38,)"
 ordering = "NONE"
 side = "CLIENT"
 
 [[dependencies.lightoverlay]]
 modId = "architectury"
 mandatory = true
-versionRange = "[1.5.112,)"
+versionRange = "[2.3.24,)"
 ordering = "NONE"
 side = "CLIENT"
\ No newline at end of file
diff --git a/forge/src/main/resources/lightoverlay-forge.mixins.json b/forge/src/main/resources/lightoverlay-forge.mixins.json
deleted file mode 100644 (file)
index 798efb5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "required": true,
-  "package": "me.shedaniel.lightoverlay.forge.mixin",
-  "minVersion": "0.7.11",
-  "compatibilityLevel": "JAVA_8",
-  "mixins": [],
-  "client": [
-    "MixinClientConnection",
-    "MixinDebugRenderer",
-    "MixinLevelRenderer"
-  ],
-  "injectors": {
-    "defaultRequire": 1
-  }
-}
\ No newline at end of file
index b18dc0338b9b49731bfb512ac031b240744dca62..edc7831f9b103629981332088199ab288c30c657 100755 (executable)
@@ -2,15 +2,15 @@ org.gradle.jvmargs=-Xmx3G
 org.gradle.daemon=false
 
 mod_version=6.0.0
-minecraft_version=1.17
+minecraft_version=1.17.1
 
-architectury_version=2.0.9
+architectury_version=2.3.24
 
 # fabric
 fabric_loader_version=0.11.6
-fabric_api_version=0.35.1+1.17
-cloth_config_version=5.0.34
+fabric_api_version=0.37.2+1.17
+cloth_config_version=5.0.38
 modmenu_version=2.0.2
 
 # forge
-forge_version=35.1.7
\ No newline at end of file
+forge_version=37.0.13
\ No newline at end of file
index 323a92b2c0469908ea2a4ed3fc34881b527abe6a..a232ac9e2b4c4f3bec988c1203a274ef8113264f 100644 (file)
@@ -11,5 +11,5 @@ rootProject.name = "light-overlay"
 
 include("common")
 include("fabric")
-//include("forge")
+include("forge")