From cf746d8db5a6a3f0acf1579b2074a099f604d09a Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Fri, 9 Sep 2022 02:37:22 +0200 Subject: [PATCH 1/3] fix fireballs that stay immobile on world/chunk reload --- .../hodgepodge/core/LoadingConfig.java | 7 +++ .../mitchej123/hodgepodge/mixins/Mixins.java | 2 + .../mixins/minecraft/MixinEntityFireball.java | 45 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java diff --git a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java index 5d3197af..4d73dcda 100644 --- a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java +++ b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java @@ -36,6 +36,7 @@ public class LoadingConfig { public boolean fixPotionRenderOffset; public boolean fixPotionLimit; public boolean fixPerspectiveCamera; + public boolean fixImmobileFireballs; public boolean fixHopperVoidingItems; public boolean fixHugeChatKick; public boolean logHugeChat; @@ -170,6 +171,12 @@ public LoadingConfig(File file) { true, "Prevent tall grass and such to affect the perspective camera") .getBoolean(); + fixImmobileFireballs = config.get( + "fixes", + "fixImmobileFireballs", + true, + "Fix the bug that makes fireballs stop moving when chunk unloads") + .getBoolean(); fixGlStateBugs = config.get( "fixes", "fixGlStateBugs", diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java index 4448232d..624014e3 100644 --- a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java @@ -11,6 +11,8 @@ public enum Mixins { // Vanilla Fixes FIX_PERSPECTIVE_CAMERA( "minecraft.MixinEntityRenderer", () -> Hodgepodge.config.fixPerspectiveCamera, TargetedMod.VANILLA), + FIX_IMMOBILE_FIREBALLS( + "minecraft.MixinEntityFireball", ()-> Hodgepodge.config.fixImmobileFireballs, TargetedMod.VANILLA), FENCE_CONNECTIONS_FIX( "minecraft.MixinBlockFence", () -> Hodgepodge.config.fixFenceConnections, TargetedMod.VANILLA), FIX_INVENTORY_OFFSET_WITH_POTIONS( diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java new file mode 100644 index 00000000..e791ba02 --- /dev/null +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java @@ -0,0 +1,45 @@ +package com.mitchej123.hodgepodge.mixins.minecraft; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.projectile.EntityFireball; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; +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; + +@Mixin(EntityFireball.class) +public abstract class MixinEntityFireball extends Entity { + + @Shadow public double accelerationX; + + @Shadow public double accelerationY; + + @Shadow public double accelerationZ; + + @Inject(method = "writeEntityToNBT", at = @At("TAIL")) + public void hodgepodge$writeFireballAcceleration(NBTTagCompound p_70014_1_, CallbackInfo ci) { + p_70014_1_.setTag("acceleration", this.newDoubleNBTList(this.accelerationX, this.accelerationY, this.accelerationZ)); + } + + @Inject(method = "readEntityFromNBT", at = @At(value = "TAIL")) + public void hodgepodge$readFireballAcceleration(NBTTagCompound p_70037_1_, CallbackInfo ci) { + if (p_70037_1_.hasKey("acceleration", 9)) { + NBTTagList nbttaglist = p_70037_1_.getTagList("acceleration", 6); + this.accelerationX = nbttaglist.func_150309_d(0); + this.accelerationY = nbttaglist.func_150309_d(1); + this.accelerationZ = nbttaglist.func_150309_d(2); + } else { + this.setDead(); + } + } + + /*Forced to have constructor*/ + public MixinEntityFireball(World p_i1582_1_) { + super(p_i1582_1_); + } + +} From b2b599771da17fd115711aed88fcca52665402bf Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Fri, 9 Sep 2022 02:39:16 +0200 Subject: [PATCH 2/3] spotless --- .../com/mitchej123/hodgepodge/mixins/Mixins.java | 2 +- .../mixins/minecraft/MixinEntityFireball.java | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java index 624014e3..44bf5fd2 100644 --- a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java @@ -12,7 +12,7 @@ public enum Mixins { FIX_PERSPECTIVE_CAMERA( "minecraft.MixinEntityRenderer", () -> Hodgepodge.config.fixPerspectiveCamera, TargetedMod.VANILLA), FIX_IMMOBILE_FIREBALLS( - "minecraft.MixinEntityFireball", ()-> Hodgepodge.config.fixImmobileFireballs, TargetedMod.VANILLA), + "minecraft.MixinEntityFireball", () -> Hodgepodge.config.fixImmobileFireballs, TargetedMod.VANILLA), FENCE_CONNECTIONS_FIX( "minecraft.MixinBlockFence", () -> Hodgepodge.config.fixFenceConnections, TargetedMod.VANILLA), FIX_INVENTORY_OFFSET_WITH_POTIONS( diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java index e791ba02..3d26535b 100644 --- a/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinEntityFireball.java @@ -14,15 +14,19 @@ @Mixin(EntityFireball.class) public abstract class MixinEntityFireball extends Entity { - @Shadow public double accelerationX; + @Shadow + public double accelerationX; - @Shadow public double accelerationY; + @Shadow + public double accelerationY; - @Shadow public double accelerationZ; + @Shadow + public double accelerationZ; @Inject(method = "writeEntityToNBT", at = @At("TAIL")) public void hodgepodge$writeFireballAcceleration(NBTTagCompound p_70014_1_, CallbackInfo ci) { - p_70014_1_.setTag("acceleration", this.newDoubleNBTList(this.accelerationX, this.accelerationY, this.accelerationZ)); + p_70014_1_.setTag( + "acceleration", this.newDoubleNBTList(this.accelerationX, this.accelerationY, this.accelerationZ)); } @Inject(method = "readEntityFromNBT", at = @At(value = "TAIL")) @@ -41,5 +45,4 @@ public abstract class MixinEntityFireball extends Entity { public MixinEntityFireball(World p_i1582_1_) { super(p_i1582_1_); } - } From 0b5cd44d61343d02d782b7cda7a4afada6814390 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Fri, 9 Sep 2022 17:46:49 +0200 Subject: [PATCH 3/3] resolve conflicts --- .../mitchej123/hodgepodge/core/LoadingConfig.java | 14 +++++++------- .../com/mitchej123/hodgepodge/mixins/Mixins.java | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java index 4d73dcda..51144134 100644 --- a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java +++ b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java @@ -35,8 +35,8 @@ public class LoadingConfig { public boolean fixPotionEffectRender; public boolean fixPotionRenderOffset; public boolean fixPotionLimit; - public boolean fixPerspectiveCamera; public boolean fixImmobileFireballs; + public boolean fixPerspectiveCamera; public boolean fixHopperVoidingItems; public boolean fixHugeChatKick; public boolean logHugeChat; @@ -165,18 +165,18 @@ public LoadingConfig(File file) { .getBoolean(); fixPotionLimit = config.get("fixes", "fixPotionLimit", true, "Fix potions >= 128") .getBoolean(); - fixPerspectiveCamera = config.get( - "fixes", - "fixPerspectiveCamera", - true, - "Prevent tall grass and such to affect the perspective camera") - .getBoolean(); fixImmobileFireballs = config.get( "fixes", "fixImmobileFireballs", true, "Fix the bug that makes fireballs stop moving when chunk unloads") .getBoolean(); + fixPerspectiveCamera = config.get( + "fixes", + "fixPerspectiveCamera", + true, + "Prevent tall grass and such to affect the perspective camera") + .getBoolean(); fixGlStateBugs = config.get( "fixes", "fixGlStateBugs", diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java index 44bf5fd2..4f3dd139 100644 --- a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java @@ -11,8 +11,6 @@ public enum Mixins { // Vanilla Fixes FIX_PERSPECTIVE_CAMERA( "minecraft.MixinEntityRenderer", () -> Hodgepodge.config.fixPerspectiveCamera, TargetedMod.VANILLA), - FIX_IMMOBILE_FIREBALLS( - "minecraft.MixinEntityFireball", () -> Hodgepodge.config.fixImmobileFireballs, TargetedMod.VANILLA), FENCE_CONNECTIONS_FIX( "minecraft.MixinBlockFence", () -> Hodgepodge.config.fixFenceConnections, TargetedMod.VANILLA), FIX_INVENTORY_OFFSET_WITH_POTIONS( @@ -25,6 +23,8 @@ public enum Mixins { Side.CLIENT, () -> Hodgepodge.config.fixPotionEffectRender, TargetedMod.VANILLA), + FIX_IMMOBILE_FIREBALLS( + "minecraft.MixinEntityFireball", () -> Hodgepodge.config.fixImmobileFireballs, TargetedMod.VANILLA), CHUNK_COORDINATES_HASHCODE( "minecraft.MixinChunkCoordinates", () -> Hodgepodge.config.speedupChunkCoordinatesHashCode,