From ba81f31027592b41d50291bc30b06158fd5e1a83 Mon Sep 17 00:00:00 2001 From: Ran <43445785+RanCraftPlayz@users.noreply.github.com> Date: Wed, 22 Dec 2021 22:16:08 +0600 Subject: [PATCH] Update some stuffs --- Readme.md | 16 +++++------ common/src/main/resources/lod.accesswidener | 3 +++ .../unsafe/MixinThreadingDectector.java | 26 ++++++++++++++++++ fabric/src/main/resources/lod.mixins.json | 8 +++--- .../unsafe/MixinThreadingDectector.java | 27 +++++++++++++++++++ forge/src/main/resources/lod.mixins.json | 5 +++- 6 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java create mode 100644 forge/src/main/java/com/seibel/lod/forge/mixins/unsafe/MixinThreadingDectector.java diff --git a/Readme.md b/Readme.md index c4e699eec..5e7544291 100644 --- a/Readme.md +++ b/Readme.md @@ -28,6 +28,11 @@ https://fabricmc.net/wiki/tutorial:setup * A Java Development Kit (JDK) for Java 17 (recommended) or newer. Visit https://www.oracle.com/java/technologies/downloads/ for installers. * Git or someway to clone git projects. Visit https://git-scm.com/ for installers. * Any Java IDE, for example Intellij IDEA and Eclipse. You may also use any other code editors, such as Visual Studio Code. (Optional) +It's better to use IntelliJ IDEA since Eclipse is not supported by Architectury, but it still works. + +**If using IntelliJ:** +1. open IDEA and import the build.gradle +2. refresh the Gradle project in IDEA if required **If using Ecplise:** 1. run the command: `./gradlew geneclipseruns` @@ -35,11 +40,6 @@ https://fabricmc.net/wiki/tutorial:setup 3. Make sure eclipse has the JDK 17 installed. (This is needed so that eclipse can run minecraft) 4. Import the project into eclipse -**If using IntelliJ:** -1. open IDEA and import the build.gradle -2. run the command: `./gradlew genIntellijRuns` -3. refresh the Gradle project in IDEA if required - ## Compiling **Using GUI** @@ -50,7 +50,7 @@ https://fabricmc.net/wiki/tutorial:setup **If in terminal:** 1. `git clone -b 1.18.X --recurse-submodules https://gitlab.com/jeseibel/minecraft-lod-mod.git` 2. `cd minecraft-lod-mod` -3. `./gradlew build` +3. `./gradlew assemble` or `./gradlew build` 4. The build should be in `fabric/build/libs/` and `forge/build/libs/` @@ -69,8 +69,8 @@ Source code uses Mojang mappings. ## Useful commands -Build only Fabric: `./gradlew fabric:build`\ -Build only Forge: `./gradlew forge:build`\ +Build only Fabric: `./gradlew fabric:assemble` or `./gradlew fabric:build`\ +Build only Forge: `./gradlew fabric:assemble` or `./gradlew forge:build`\ Run the Fabric client (for debugging): `./gradlew fabric:runClient`\ Run the Forge client (for debugging): `./gradlew forge:runClient` diff --git a/common/src/main/resources/lod.accesswidener b/common/src/main/resources/lod.accesswidener index 101e5aff3..19d697ac7 100644 --- a/common/src/main/resources/lod.accesswidener +++ b/common/src/main/resources/lod.accesswidener @@ -25,3 +25,6 @@ accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite mainIm accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameX (I)I accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameY (I)I extendable class com/mojang/math/Matrix4f + +# hacky stuff +mutable field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java new file mode 100644 index 000000000..e796fba8a --- /dev/null +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java @@ -0,0 +1,26 @@ +package com.seibel.lod.fabric.mixins.unsafe; + +import net.minecraft.util.ThreadingDetector; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.concurrent.Semaphore; + +/** + * Why does this exist? But okay! (Will be probably removed when the experimental generator is done) + */ +@Mixin(ThreadingDetector.class) +public class MixinThreadingDectector { + @Mutable + @Shadow @Final private Semaphore lock; + + @Inject(method = "", at = @At("RETURN")) + private void setSemaphore(CallbackInfo ci) { + this.lock = new Semaphore(2); + } +} diff --git a/fabric/src/main/resources/lod.mixins.json b/fabric/src/main/resources/lod.mixins.json index a0bd5ea26..b71c0db38 100644 --- a/fabric/src/main/resources/lod.mixins.json +++ b/fabric/src/main/resources/lod.mixins.json @@ -3,14 +3,16 @@ "minVersion": "0.8", "package": "com.seibel.lod.fabric.mixins", "compatibilityLevel": "JAVA_17", - "mixins": [], + "mixins": [ + "unsafe.MixinThreadingDectector", + "events.MixinServerLevel" + ], "client": [ "MixinMinecraft", "MixinOptionsScreen", "MixinWorldRenderer", "events.MixinClientLevel", - "events.MixinMinecraft", - "events.MixinServerLevel" + "events.MixinMinecraft" ], "server": [], "injectors": { diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/unsafe/MixinThreadingDectector.java b/forge/src/main/java/com/seibel/lod/forge/mixins/unsafe/MixinThreadingDectector.java new file mode 100644 index 000000000..2687cbb43 --- /dev/null +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/unsafe/MixinThreadingDectector.java @@ -0,0 +1,27 @@ +package com.seibel.lod.forge.mixins.unsafe; + +import net.minecraft.util.ThreadingDetector; +import net.minecraft.world.level.chunk.PalettedContainer; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.concurrent.Semaphore; + +/** + * Why does this exist? But okay! (Will be probably removed when the experimental generator is done) + */ +@Mixin(ThreadingDetector.class) +public class MixinThreadingDectector { + @Mutable + @Shadow @Final private Semaphore lock; + + @Inject(method = "", at = @At("RETURN")) + private void setSemaphore(CallbackInfo ci) { + this.lock = new Semaphore(2); + } +} diff --git a/forge/src/main/resources/lod.mixins.json b/forge/src/main/resources/lod.mixins.json index b62798311..a41f4b316 100644 --- a/forge/src/main/resources/lod.mixins.json +++ b/forge/src/main/resources/lod.mixins.json @@ -3,9 +3,12 @@ "package": "com.seibel.lod.forge.mixins", "compatibilityLevel": "JAVA_17", "refmap": "lod.refmap.json", - "mixins": [ + "client": [ "MixinWorldRenderer", "MixinOptionsScreen" ], + "mixins": [ + "unsafe.MixinThreadingDectector" + ], "minVersion": "0.8" } \ No newline at end of file