From 10b15f408e4e10b3a229956c8c52ab54b63feee3 Mon Sep 17 00:00:00 2001 From: Gaider10 <72764892+Gaider10@users.noreply.github.com> Date: Sun, 16 Apr 2023 12:23:34 +0300 Subject: [PATCH] Backport to 1.16 --- build.gradle | 6 +-- gradle.properties | 6 +-- .../healthindicators/HealthIndicatorsMod.java | 50 +++++++++---------- .../mixin/MinecraftClientMixin.java | 19 +++++++ .../mixin/PlayerEntityRendererMixin.java | 19 +++---- src/main/resources/fabric.mod.json | 4 +- .../resources/healthindicators.mixins.json | 3 +- 7 files changed, 64 insertions(+), 43 deletions(-) create mode 100644 src/main/java/me/andrew/healthindicators/mixin/MinecraftClientMixin.java diff --git a/build.gradle b/build.gradle index 008da5a..85ca6ae 100644 --- a/build.gradle +++ b/build.gradle @@ -2,8 +2,8 @@ plugins { id 'fabric-loom' version '1.1-SNAPSHOT' } -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 archivesBaseName = project.archives_base_name version = "${project.mod_version}-${project.minecraft_version}" @@ -29,7 +29,7 @@ processResources { } tasks.withType(JavaCompile).configureEach { - it.options.release = 17 + it.options.release = 8 } java { diff --git a/gradle.properties b/gradle.properties index edfd707..855843c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,8 +2,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties -minecraft_version=1.19.3 -yarn_mappings=1.19.3+build.5 +minecraft_version=1.16 +yarn_mappings=1.16+build.4 loader_version=0.14.19 # Mod Properties @@ -11,4 +11,4 @@ mod_version = 1.1.0 archives_base_name = PlayerHealthIndicators # Dependencies -fabric_version=0.76.1+1.19.3 +fabric_version=0.42.0+1.16 diff --git a/src/main/java/me/andrew/healthindicators/HealthIndicatorsMod.java b/src/main/java/me/andrew/healthindicators/HealthIndicatorsMod.java index 6c04d19..713eedc 100644 --- a/src/main/java/me/andrew/healthindicators/HealthIndicatorsMod.java +++ b/src/main/java/me/andrew/healthindicators/HealthIndicatorsMod.java @@ -1,11 +1,11 @@ package me.andrew.healthindicators; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; -import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.options.KeyBinding; import net.minecraft.client.util.InputUtil; -import net.minecraft.text.Text; +import net.minecraft.text.LiteralText; public class HealthIndicatorsMod implements ModInitializer { public static final String MOD_ID = "healthindicators"; @@ -36,35 +36,35 @@ public class HealthIndicatorsMod implements ModInitializer { @Override public void onInitialize() { Config.load(); + } - ClientTickEvents.END_CLIENT_TICK.register(client -> { - while (RENDERING_ENABLED_KEY_BINDING.wasPressed()) { - Config.setRenderingEnabled(!Config.getRenderingEnabled()); - if (client.player != null) { - client.player.sendMessage(Text.literal((Config.getRenderingEnabled() ? "Enabled" : "Disabled") + " Health Indicators"), true); - } + public static void onTick(MinecraftClient client) { + while (RENDERING_ENABLED_KEY_BINDING.wasPressed()) { + Config.setRenderingEnabled(!Config.getRenderingEnabled()); + if (client.player != null) { + client.player.sendMessage(new LiteralText((Config.getRenderingEnabled() ? "Enabled" : "Disabled") + " Health Indicators"), true); } + } - while (HEART_STACKING_ENABLED_KEY_BINDING.wasPressed()) { - Config.setHeartStackingEnabled(!Config.getHeartStackingEnabled()); - if (client.player != null) { - client.player.sendMessage(Text.literal((Config.getHeartStackingEnabled() ? "Enabled" : "Disabled") + " Heart Stacking"), true); - } + while (HEART_STACKING_ENABLED_KEY_BINDING.wasPressed()) { + Config.setHeartStackingEnabled(!Config.getHeartStackingEnabled()); + if (client.player != null) { + client.player.sendMessage(new LiteralText((Config.getHeartStackingEnabled() ? "Enabled" : "Disabled") + " Heart Stacking"), true); } + } - while (INCREASE_HEART_OFFSET_KEY_BINDING.wasPressed()) { - Config.setHeartOffset(Config.getHeartOffset() + 1); - if (client.player != null) { - client.player.sendMessage(Text.literal("Set heart offset to " + Config.getHeartOffset()), true); - } + while (INCREASE_HEART_OFFSET_KEY_BINDING.wasPressed()) { + Config.setHeartOffset(Config.getHeartOffset() + 1); + if (client.player != null) { + client.player.sendMessage(new LiteralText("Set heart offset to " + Config.getHeartOffset()), true); } + } - while (DECREASE_HEART_OFFSET_KEY_BINDING.wasPressed()) { - Config.setHeartOffset(Config.getHeartOffset() - 1); - if (client.player != null) { - client.player.sendMessage(Text.literal("Set heart offset to " + Config.getHeartOffset()), true); - } + while (DECREASE_HEART_OFFSET_KEY_BINDING.wasPressed()) { + Config.setHeartOffset(Config.getHeartOffset() - 1); + if (client.player != null) { + client.player.sendMessage(new LiteralText("Set heart offset to " + Config.getHeartOffset()), true); } - }); + } } } diff --git a/src/main/java/me/andrew/healthindicators/mixin/MinecraftClientMixin.java b/src/main/java/me/andrew/healthindicators/mixin/MinecraftClientMixin.java new file mode 100644 index 0000000..85aec4e --- /dev/null +++ b/src/main/java/me/andrew/healthindicators/mixin/MinecraftClientMixin.java @@ -0,0 +1,19 @@ +package me.andrew.healthindicators.mixin; + +import me.andrew.healthindicators.HealthIndicatorsMod; +import net.minecraft.client.MinecraftClient; +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(MinecraftClient.class) +public abstract class MinecraftClientMixin { + @Inject( + method = "tick", + at = @At("HEAD") + ) + private void inject_tick(CallbackInfo ci) { + HealthIndicatorsMod.onTick((MinecraftClient)(Object) this); + } +} diff --git a/src/main/java/me/andrew/healthindicators/mixin/PlayerEntityRendererMixin.java b/src/main/java/me/andrew/healthindicators/mixin/PlayerEntityRendererMixin.java index 31de3f3..1407aa4 100644 --- a/src/main/java/me/andrew/healthindicators/mixin/PlayerEntityRendererMixin.java +++ b/src/main/java/me/andrew/healthindicators/mixin/PlayerEntityRendererMixin.java @@ -7,14 +7,14 @@ import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.render.*; -import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.render.entity.LivingEntityRenderer; import net.minecraft.client.render.entity.PlayerEntityRenderer; import net.minecraft.client.render.entity.model.PlayerEntityModel; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import net.minecraft.util.math.MathHelper; -import org.joml.Matrix4f; +import net.minecraft.util.math.Matrix4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -22,8 +22,8 @@ @Mixin(PlayerEntityRenderer.class) public abstract class PlayerEntityRendererMixin extends LivingEntityRenderer> { - public PlayerEntityRendererMixin(EntityRendererFactory.Context ctx, PlayerEntityModel model, float shadowRadius) { - super(ctx, model, shadowRadius); + public PlayerEntityRendererMixin(EntityRenderDispatcher dispatcher, PlayerEntityModel model, float shadowRadius) { + super(dispatcher, model, shadowRadius); } @Inject( @@ -57,12 +57,12 @@ public void renderHealth(AbstractClientPlayerEntity abstractClientPlayerEntity, Tessellator tessellator = Tessellator.getInstance(); BufferBuilder vertexConsumer = tessellator.getBuffer(); - vertexConsumer.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE); - RenderSystem.setShader(GameRenderer::getPositionTexProgram); - RenderSystem.setShaderTexture(0, DrawableHelper.GUI_ICONS_TEXTURE); + vertexConsumer.begin(7, VertexFormats.POSITION_TEXTURE); + MinecraftClient.getInstance().getTextureManager().bindTexture(DrawableHelper.GUI_ICONS_TEXTURE); + RenderSystem.enableBlend(); RenderSystem.enableDepthTest(); - Matrix4f model = matrixStack.peek().getPositionMatrix(); + Matrix4f model = matrixStack.peek().getModel(); int healthRed = MathHelper.ceil(abstractClientPlayerEntity.getHealth()); int maxHealth = MathHelper.ceil(abstractClientPlayerEntity.getMaxHealth()); @@ -115,7 +115,8 @@ public void renderHealth(AbstractClientPlayerEntity abstractClientPlayerEntity, } private static boolean shouldRenderHeartsForEntity(Entity entity) { - if (entity instanceof AbstractClientPlayerEntity abstractClientPlayerEntity) { + if (entity instanceof AbstractClientPlayerEntity) { + AbstractClientPlayerEntity abstractClientPlayerEntity = (AbstractClientPlayerEntity) entity; return !abstractClientPlayerEntity.isMainPlayer() && !abstractClientPlayerEntity.isInvisibleTo(MinecraftClient.getInstance().player); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2151044..58e022e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,7 +24,7 @@ "depends": { "fabricloader": ">=0.11.3", "fabric": "*", - "minecraft": "1.19.x", - "java": ">=17" + "minecraft": "1.16.x", + "java": ">=8" } } diff --git a/src/main/resources/healthindicators.mixins.json b/src/main/resources/healthindicators.mixins.json index dd702bf..f00b20d 100644 --- a/src/main/resources/healthindicators.mixins.json +++ b/src/main/resources/healthindicators.mixins.json @@ -2,8 +2,9 @@ "required": true, "minVersion": "0.8", "package": "me.andrew.healthindicators.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_8", "client": [ + "MinecraftClientMixin", "PlayerEntityRendererMixin" ], "injectors": {