From 8e25b197bf44369dbc2cfaf42520e008a32b7901 Mon Sep 17 00:00:00 2001 From: HeyBlack Date: Fri, 20 Dec 2024 22:10:30 +0800 Subject: [PATCH 1/4] 1.20.4 --- build.gradle | 67 +++---------------- gradle.properties | 25 +++---- gradle/wrapper/gradle-wrapper.properties | 6 +- .../timetolive/CountdownRenderer.java | 24 +++++-- .../timetolive/mixin/WorldRendererMixin.java | 6 +- src/main/resources/fabric.mod.json | 2 +- src/main/resources/timetolive.mixins.json | 4 +- 7 files changed, 42 insertions(+), 92 deletions(-) diff --git a/build.gradle b/build.gradle index c68c126..68aeefb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,6 @@ plugins { - id 'fabric-loom' version '1.0-SNAPSHOT' + id 'fabric-loom' version '1.6-SNAPSHOT' id 'maven-publish' - - id "com.modrinth.minotaur" version "2.+" - id 'com.matthewprenger.cursegradle' version '1.4.0' } sourceCompatibility = JavaVersion.VERSION_17 @@ -12,8 +9,6 @@ targetCompatibility = JavaVersion.VERSION_17 archivesBaseName = "${project.mod_name} ${project.mod_version} (${project.minecraft_version})" version = project.mod_version group = project.maven_group -def CHANGELOG = new File("./gradle", "CHANGELOG.md").text -def SUPPORTED_VERSIONS = Arrays.asList(project.supported_versions.split(',')) repositories { maven { @@ -24,6 +19,10 @@ repositories { name = 'TerraformersMC' url = 'https://maven.terraformersmc.com/releases' } + maven { + name = 'Nucleoid' + url = 'https://maven.nucleoid.xyz/' + } } dependencies { @@ -34,16 +33,9 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - //Cloth Config - modApi("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config}") { - exclude(group: "net.fabricmc.fabric-api") - } - include("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config}") - - //Modmenu - modImplementation("com.terraformersmc:modmenu:${project.modmenu}") { - exclude(group: "net.fabricmc.fabric-api") - } + modApi "me.shedaniel.cloth:cloth-config-fabric:13.0.138" + modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}") + modImplementation(include("eu.pb4:placeholder-api:2.4.0-pre.1+1.20.4")) } processResources { @@ -93,46 +85,3 @@ publishing { // retrieving dependencies. } } - -import com.modrinth.minotaur.dependencies.ModDependency -if (System.getenv().MODRINTH_TOKEN) modrinth { - projectId = project.modrinth_id - versionName = archivesBaseName - versionNumber = "${project.mod_version}-${project.minecraft_version}" - versionType = "beta" - uploadFile = tasks.remapJar - gameVersions = [project.minecraft_version] - loaders = ["fabric"] - dependencies = [ - new ModDependency("fabric-api", "required"), - new ModDependency("cloth-config", "embedded"), - new ModDependency("modmenu", "optional") - ] -} - -if (System.getenv().CURSEFORGE_API_KEY) curseforge { - apiKey = System.getenv().CURSEFORGE_API_KEY - - project { - id = project.curseforge_id - addGameVersion "Fabric" - for (final def cf_ver in SUPPORTED_VERSIONS) addGameVersion cf_ver - - changelog = CHANGELOG - releaseType = "beta" - - mainArtifact(remapJar) { - displayName = archivesBaseName - relations { - requiredDependency "fabric-api" - embeddedLibrary "cloth-config" - - optionalDependency 'modmenu' - } - } - - afterEvaluate { uploadTask.dependsOn(remapJar) } - } - - options { forgeGradleIntegration = false } -} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index a900c16..c753105 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,24 +3,19 @@ org.gradle.jvmargs=-Xmx3G # Fabric Properties # check these on https://fabricmc.net/versions.html - minecraft_version=1.19.2 - yarn_mappings=1.19.2+build.28 - loader_version=0.14.10 +minecraft_version=1.20.4 +yarn_mappings=1.20.4+build.3 +loader_version=0.16.9 #Fabric api - fabric_version=0.64.0+1.19.2 +fabric_version=0.97.2+1.20.4 # Mod Properties - mod_version = 0.4 - maven_group = schauweg - archives_base_name = timetolive - mod_name = Time To Live +mod_version = 0.4 +maven_group = schauweg +archives_base_name = timetolive +mod_name = Time To Live # Dependencies - cloth_config=8.0.75 - modmenu=4.0.5 - -# Upload configs - curseforge_id = 357220 - modrinth_id = rCeI5tOW - supported_versions=1.19.2 \ No newline at end of file +cloth_config=13.0.138 +modmenu_version=9.2.0 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a2..62d4e87 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.6-bin.zip \ No newline at end of file diff --git a/src/main/java/schauweg/timetolive/CountdownRenderer.java b/src/main/java/schauweg/timetolive/CountdownRenderer.java index 78b150b..232f87d 100644 --- a/src/main/java/schauweg/timetolive/CountdownRenderer.java +++ b/src/main/java/schauweg/timetolive/CountdownRenderer.java @@ -2,6 +2,7 @@ import com.google.common.collect.Iterables; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; import net.minecraft.client.render.Camera; import net.minecraft.client.render.Frustum; import net.minecraft.client.render.VertexConsumerProvider; @@ -10,9 +11,9 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.TntEntity; import net.minecraft.entity.mob.CreeperEntity; -import net.minecraft.util.math.Matrix4f; -import net.minecraft.util.math.Quaternion; import net.minecraft.util.math.Vec3d; +import org.joml.Matrix4f; +import org.joml.Quaternionf; import schauweg.timetolive.config.TTLConfigManger; import schauweg.timetolive.mixin.CreeperEntityMixin; @@ -52,7 +53,7 @@ public static void render(MatrixStack matrices, float partialTicks, Camera camer @SuppressWarnings( "deprecation" ) - private static void renderCountdown(Entity passedEntity, MatrixStack matrices, float partialTicks, Camera camera, Entity viewPoint, int fuse){ + private static void renderCountdown(Entity passedEntity, MatrixStack matrices, float partialTicks, Camera camera, Entity viewPoint, int fuse) { MinecraftClient mc = MinecraftClient.getInstance(); matrices.push(); @@ -64,8 +65,17 @@ private static void renderCountdown(Entity passedEntity, MatrixStack matrices, f matrices.translate(x - renderManager.camera.getPos().x, y - renderManager.camera.getPos().y + passedEntity.getHeight() + 0.5F, z - renderManager.camera.getPos().z); VertexConsumerProvider.Immediate immediate = mc.getBufferBuilders().getEntityVertexConsumers(); - Quaternion rotation = camera.getRotation().copy(); - rotation.scale(-1.0F); + Quaternionf rotation = null; + try { + rotation = (Quaternionf) camera.getRotation().clone(); + } catch (CloneNotSupportedException e) { + + } + + if (rotation == null) { + return; + } + matrices.multiply(rotation); matrices.scale(-0.025F, -0.025F, 0.025F); @@ -73,8 +83,8 @@ private static void renderCountdown(Entity passedEntity, MatrixStack matrices, f String time = TTLConfigManger.getConfig().isDisplayInTicks() ? fuse + " t" : ticksToTime(fuse); float offset = (float)(-mc.textRenderer.getWidth(time)/2); Matrix4f modelViewMatrix = matrices.peek().getPositionMatrix(); - mc.textRenderer.draw(time, offset, 0, 553648127, false, modelViewMatrix, immediate, true, 1056964608, 15728640); - mc.textRenderer.draw(time, offset, 0, -1, false, modelViewMatrix, immediate, false, 0, 15728640); + mc.textRenderer.draw(time, offset, 0, 553648127, false, modelViewMatrix, immediate, TextRenderer.TextLayerType.NORMAL, 1056964608, 15728640); + mc.textRenderer.draw(time, offset, 0, -1, false, modelViewMatrix, immediate, TextRenderer.TextLayerType.NORMAL, 0, 15728640); matrices.pop(); } diff --git a/src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java b/src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java index 955e08f..c4f5702 100644 --- a/src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java +++ b/src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java @@ -2,7 +2,7 @@ import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.Matrix4f; +import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -18,9 +18,9 @@ public class WorldRendererMixin { private Frustum capturedFrustum; @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;checkEmpty(Lnet/minecraft/client/util/math/MatrixStack;)V", ordinal = 0)) - private void render(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f projection, CallbackInfo ci) { + private void render(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f projectionMatrix, CallbackInfo ci) { if (!TTLConfigManger.getConfig().isOverlayActive()) return; - CountdownRenderer.render(matrices, tickDelta, camera, projection, this.capturedFrustum); + CountdownRenderer.render(matrices, tickDelta, camera, projectionMatrix, this.capturedFrustum); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index dac0f00..6537b37 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,7 +23,7 @@ "depends": { "fabricloader": ">=0.14.8", "fabric": "*", - "minecraft": "1.19.x", + "minecraft": "1.20.x", "java": ">=17" } } diff --git a/src/main/resources/timetolive.mixins.json b/src/main/resources/timetolive.mixins.json index 7f95398..13f2e72 100644 --- a/src/main/resources/timetolive.mixins.json +++ b/src/main/resources/timetolive.mixins.json @@ -3,8 +3,8 @@ "minVersion": "0.8", "package": "schauweg.timetolive.mixin", "client": [ - "WorldRendererMixin", - "CreeperEntityMixin" + "CreeperEntityMixin", + "WorldRendererMixin" ], "injectors": { "defaultRequire": 1 From 5bcea66740246c726a944eea8e3d855aaee9353a Mon Sep 17 00:00:00 2001 From: HeyBlack Date: Fri, 20 Dec 2024 22:58:20 +0800 Subject: [PATCH 2/4] gradle stuff --- build.gradle | 6 +++--- gradle.properties | 11 ++++++----- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 68aeefb..08b1b61 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.6-SNAPSHOT' + id 'fabric-loom' version '1.9-SNAPSHOT' id 'maven-publish' } @@ -33,9 +33,9 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modApi "me.shedaniel.cloth:cloth-config-fabric:13.0.138" + modApi "me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config}" modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}") - modImplementation(include("eu.pb4:placeholder-api:2.4.0-pre.1+1.20.4")) + modImplementation(include("eu.pb4:placeholder-api:${project.placeholder_api}")) } processResources { diff --git a/gradle.properties b/gradle.properties index c753105..bf670b0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,12 +3,12 @@ org.gradle.jvmargs=-Xmx3G # Fabric Properties # check these on https://fabricmc.net/versions.html -minecraft_version=1.20.4 -yarn_mappings=1.20.4+build.3 +minecraft_version=1.21.4 +yarn_mappings=1.21.4+build.2 loader_version=0.16.9 #Fabric api -fabric_version=0.97.2+1.20.4 +fabric_version=0.112.2+1.21.4 # Mod Properties mod_version = 0.4 @@ -17,5 +17,6 @@ archives_base_name = timetolive mod_name = Time To Live # Dependencies -cloth_config=13.0.138 -modmenu_version=9.2.0 +cloth_config=17.0.144 +modmenu_version=13.0.0-beta.1 +placeholder_api=2.5.1+1.21.3 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 62d4e87..4f0b015 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1 +1 @@ -distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.6-bin.zip \ No newline at end of file +distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.11-bin.zip \ No newline at end of file From ca4678fed05da826869fade77e37bc7fab59f4a6 Mon Sep 17 00:00:00 2001 From: HeyBlack Date: Sat, 21 Dec 2024 17:21:10 +0800 Subject: [PATCH 3/4] 1.21.4 --- .../timetolive/CountdownRenderer.java | 91 +++++++------------ .../mixin/EntityRenderDispatcherMixin.java | 30 ++++++ .../timetolive/mixin/WorldRendererMixin.java | 26 ------ src/main/resources/fabric.mod.json | 2 +- src/main/resources/timetolive.mixins.json | 2 +- 5 files changed, 63 insertions(+), 88 deletions(-) create mode 100644 src/main/java/schauweg/timetolive/mixin/EntityRenderDispatcherMixin.java delete mode 100644 src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java diff --git a/src/main/java/schauweg/timetolive/CountdownRenderer.java b/src/main/java/schauweg/timetolive/CountdownRenderer.java index 232f87d..b793780 100644 --- a/src/main/java/schauweg/timetolive/CountdownRenderer.java +++ b/src/main/java/schauweg/timetolive/CountdownRenderer.java @@ -1,92 +1,63 @@ package schauweg.timetolive; -import com.google.common.collect.Iterables; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.render.Camera; -import net.minecraft.client.render.Frustum; import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.EntityRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import net.minecraft.entity.TntEntity; import net.minecraft.entity.mob.CreeperEntity; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import org.joml.Matrix4f; -import org.joml.Quaternionf; import schauweg.timetolive.config.TTLConfigManger; import schauweg.timetolive.mixin.CreeperEntityMixin; -import java.util.stream.StreamSupport; - public class CountdownRenderer { + public static void renderCountdown(E entity, float tickDelta, MatrixStack matrices, VertexConsumerProvider immediate, EntityRenderer renderer) { + if (entity instanceof TntEntity || entity instanceof CreeperEntity) { + double x = MathHelper.lerp(tickDelta, entity.lastRenderX, entity.getX()); + double y = MathHelper.lerp(tickDelta, entity.lastRenderY, entity.getY()); + double z = MathHelper.lerp(tickDelta, entity.lastRenderZ, entity.getZ()); - public static void render(MatrixStack matrices, float partialTicks, Camera camera, Matrix4f projection, Frustum capturedFrustum) { - MinecraftClient mc = MinecraftClient.getInstance(); - if(mc.world == null || !MinecraftClient.isHudEnabled()) { - return; - } - final Entity cameraEntity = camera.getFocusedEntity() != null ? camera.getFocusedEntity() : mc.player; //possible fix for optifine (see https://github.com/UpcraftLP/Orderly/issues/3) - assert cameraEntity != null : "Camera Entity must not be null!"; + Vec3d pos = new Vec3d(x, y, z); - Vec3d cameraPos = camera.getPos(); - final Frustum frustum; - if(capturedFrustum != null) { - frustum = capturedFrustum; - } - else { - frustum = new Frustum(matrices.peek().getPositionMatrix(), projection); - frustum.setPosition(cameraPos.getX(), cameraPos.getY(), cameraPos.getZ()); - } + MinecraftClient client = MinecraftClient.getInstance(); + Camera camera = client.gameRenderer.getCamera(); - StreamSupport.stream(mc.world.getEntities().spliterator(), false).filter(entity -> entity instanceof CreeperEntity && entity != cameraEntity && entity.isAlive() && Iterables.isEmpty(entity.getPassengersDeep()) && entity.shouldRender(cameraPos.getX(), cameraPos.getY(), cameraPos.getZ()) && (entity.ignoreCameraFrustum || frustum.isVisible(entity.getBoundingBox()))).map(CreeperEntity.class::cast).forEach(entity -> { + Vec3d vec3d = pos.subtract(camera.getPos()); - if (entity.isIgnited()){ - int fuse = ((CreeperEntityMixin)entity).getFuseTime() - ((CreeperEntityMixin)entity).getCurrentFuseTime(); - renderCountdown(entity, matrices, partialTicks, camera, cameraEntity, fuse); - } - - }); + matrices.push(); - StreamSupport.stream(mc.world.getEntities().spliterator(), false).filter(entity -> entity instanceof TntEntity && entity != cameraEntity && entity.isAlive() && Iterables.isEmpty(entity.getPassengersDeep()) && entity.shouldRender(cameraPos.getX(), cameraPos.getY(), cameraPos.getZ()) && (entity.ignoreCameraFrustum || frustum.isVisible(entity.getBoundingBox()))).map(TntEntity.class::cast).forEach(entity -> renderCountdown(entity, matrices, partialTicks, camera, cameraEntity, entity.getFuse())); - } + int fuse = 0; + if (entity instanceof TntEntity) { + fuse = ((TntEntity) entity).getFuse(); + matrices.translate(vec3d.x, vec3d.y + entity.getHeight() + 0.5, vec3d.z); + } else if (entity instanceof CreeperEntity) { + if (((CreeperEntity) entity).isIgnited()) { + fuse = ((CreeperEntityMixin)entity).getFuseTime() - ((CreeperEntityMixin)entity).getCurrentFuseTime(); + matrices.translate(vec3d.x, vec3d.y + 2, vec3d.z); + } + } - @SuppressWarnings( "deprecation" ) - private static void renderCountdown(Entity passedEntity, MatrixStack matrices, float partialTicks, Camera camera, Entity viewPoint, int fuse) { - MinecraftClient mc = MinecraftClient.getInstance(); + matrices.multiplyPositionMatrix(new Matrix4f().rotation(camera.getRotation())); + matrices.scale(0.025F, -0.025F, 0.025F); + Matrix4f matrix4f = matrices.peek().getPositionMatrix(); + TextRenderer textRenderer = renderer.getTextRenderer(); - matrices.push(); - double x = passedEntity.prevX + (passedEntity.getX() - passedEntity.prevX) * partialTicks; - double y = passedEntity.prevY + (passedEntity.getY() - passedEntity.prevY) * partialTicks; - double z = passedEntity.prevZ + (passedEntity.getZ() - passedEntity.prevZ) * partialTicks; - EntityRenderDispatcher renderManager = MinecraftClient.getInstance().getEntityRenderDispatcher(); - matrices.translate(x - renderManager.camera.getPos().x, y - renderManager.camera.getPos().y + passedEntity.getHeight() + 0.5F, z - renderManager.camera.getPos().z); + String time = TTLConfigManger.getConfig().isDisplayInTicks() ? fuse + " t" : ticksToTime(fuse); - VertexConsumerProvider.Immediate immediate = mc.getBufferBuilders().getEntityVertexConsumers(); - Quaternionf rotation = null; - try { - rotation = (Quaternionf) camera.getRotation().clone(); - } catch (CloneNotSupportedException e) { + float f = (float)(-textRenderer.getWidth(time)) / 2.0F; - } + textRenderer.draw(time, f, 0, 553648127, false, matrix4f, immediate, TextRenderer.TextLayerType.SEE_THROUGH, 1056964608, 15728640); + textRenderer.draw(time, f, 0, -1, false, matrix4f, immediate, TextRenderer.TextLayerType.NORMAL, 0, 15728640); - if (rotation == null) { - return; + matrices.pop(); } - - matrices.multiply(rotation); - - matrices.scale(-0.025F, -0.025F, 0.025F); - - String time = TTLConfigManger.getConfig().isDisplayInTicks() ? fuse + " t" : ticksToTime(fuse); - float offset = (float)(-mc.textRenderer.getWidth(time)/2); - Matrix4f modelViewMatrix = matrices.peek().getPositionMatrix(); - mc.textRenderer.draw(time, offset, 0, 553648127, false, modelViewMatrix, immediate, TextRenderer.TextLayerType.NORMAL, 1056964608, 15728640); - mc.textRenderer.draw(time, offset, 0, -1, false, modelViewMatrix, immediate, TextRenderer.TextLayerType.NORMAL, 0, 15728640); - - matrices.pop(); } private static String ticksToTime(int ticks){ diff --git a/src/main/java/schauweg/timetolive/mixin/EntityRenderDispatcherMixin.java b/src/main/java/schauweg/timetolive/mixin/EntityRenderDispatcherMixin.java new file mode 100644 index 0000000..c1c3acd --- /dev/null +++ b/src/main/java/schauweg/timetolive/mixin/EntityRenderDispatcherMixin.java @@ -0,0 +1,30 @@ +package schauweg.timetolive.mixin; + +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.EntityRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.Entity; +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 schauweg.timetolive.CountdownRenderer; +import schauweg.timetolive.config.TTLConfigManger; + +@Mixin(EntityRenderDispatcher.class) +public class EntityRenderDispatcherMixin { + @Inject( + method = "render", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;DDDFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/EntityRenderer;)V", + shift = At.Shift.AFTER + ) + ) + private void drawCountdown(E entity, double x, double y, double z, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, CallbackInfo ci, @Local EntityRenderer entityRenderer) { + if (!TTLConfigManger.getConfig().isOverlayActive()) return; + CountdownRenderer.renderCountdown(entity, tickDelta, matrices, vertexConsumers, entityRenderer); + } +} diff --git a/src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java b/src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java deleted file mode 100644 index c4f5702..0000000 --- a/src/main/java/schauweg/timetolive/mixin/WorldRendererMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package schauweg.timetolive.mixin; - -import net.minecraft.client.render.*; -import net.minecraft.client.util.math.MatrixStack; -import org.joml.Matrix4f; -import org.spongepowered.asm.mixin.Mixin; -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 schauweg.timetolive.CountdownRenderer; -import schauweg.timetolive.config.TTLConfigManger; - -@Mixin(WorldRenderer.class) -public class WorldRendererMixin { - - @Shadow - private Frustum capturedFrustum; - - @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;checkEmpty(Lnet/minecraft/client/util/math/MatrixStack;)V", ordinal = 0)) - private void render(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f projectionMatrix, CallbackInfo ci) { - if (!TTLConfigManger.getConfig().isOverlayActive()) return; - CountdownRenderer.render(matrices, tickDelta, camera, projectionMatrix, this.capturedFrustum); - } - -} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6537b37..121b0c3 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,7 +23,7 @@ "depends": { "fabricloader": ">=0.14.8", "fabric": "*", - "minecraft": "1.20.x", + "minecraft": "1.21.x", "java": ">=17" } } diff --git a/src/main/resources/timetolive.mixins.json b/src/main/resources/timetolive.mixins.json index 13f2e72..96eb6f1 100644 --- a/src/main/resources/timetolive.mixins.json +++ b/src/main/resources/timetolive.mixins.json @@ -4,7 +4,7 @@ "package": "schauweg.timetolive.mixin", "client": [ "CreeperEntityMixin", - "WorldRendererMixin" + "EntityRenderDispatcherMixin" ], "injectors": { "defaultRequire": 1 From 3782da0104e94f8b9234328d6423d16b339d2bd6 Mon Sep 17 00:00:00 2001 From: HeyBlack Date: Sat, 21 Dec 2024 17:54:33 +0800 Subject: [PATCH 4/4] quick fix and update version --- gradle.properties | 2 +- src/main/java/schauweg/timetolive/CountdownRenderer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index bf670b0..27c86ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ loader_version=0.16.9 fabric_version=0.112.2+1.21.4 # Mod Properties -mod_version = 0.4 +mod_version = 0.4.1 maven_group = schauweg archives_base_name = timetolive mod_name = Time To Live diff --git a/src/main/java/schauweg/timetolive/CountdownRenderer.java b/src/main/java/schauweg/timetolive/CountdownRenderer.java index b793780..faea4b9 100644 --- a/src/main/java/schauweg/timetolive/CountdownRenderer.java +++ b/src/main/java/schauweg/timetolive/CountdownRenderer.java @@ -39,7 +39,7 @@ public static void renderCountdown(E entity, float tickDelta, } else if (entity instanceof CreeperEntity) { if (((CreeperEntity) entity).isIgnited()) { fuse = ((CreeperEntityMixin)entity).getFuseTime() - ((CreeperEntityMixin)entity).getCurrentFuseTime(); - matrices.translate(vec3d.x, vec3d.y + 2, vec3d.z); + matrices.translate(vec3d.x, vec3d.y + entity.getHeight() + 0.5, vec3d.z); } }