From 3b29d4f19c730d9f8f6acd9073a960de97ded671 Mon Sep 17 00:00:00 2001 From: Flatkat <87091676+Flatkat@users.noreply.github.com> Date: Fri, 1 Nov 2024 23:23:41 +0100 Subject: [PATCH] Refactored code a bit --- .../transportation/LivingEntityMixin.java | 69 +--------------- .../{ => riptide}/LivingEntityAccessor.java | 2 +- .../riptide/LivingEntityMixin.java | 82 +++++++++++++++++++ .../{ => riptide}/TridentItemMixin.java | 2 +- .../transportation/riptide/package-info.java | 4 + src/main/resources/harmony.mixins.json | 9 +- 6 files changed, 94 insertions(+), 74 deletions(-) rename src/main/java/dev/symphony/harmony/mixin/transportation/{ => riptide}/LivingEntityAccessor.java (81%) create mode 100644 src/main/java/dev/symphony/harmony/mixin/transportation/riptide/LivingEntityMixin.java rename src/main/java/dev/symphony/harmony/mixin/transportation/{ => riptide}/TridentItemMixin.java (98%) create mode 100644 src/main/java/dev/symphony/harmony/mixin/transportation/riptide/package-info.java diff --git a/src/main/java/dev/symphony/harmony/mixin/transportation/LivingEntityMixin.java b/src/main/java/dev/symphony/harmony/mixin/transportation/LivingEntityMixin.java index 9b4d88e..7c77a87 100644 --- a/src/main/java/dev/symphony/harmony/mixin/transportation/LivingEntityMixin.java +++ b/src/main/java/dev/symphony/harmony/mixin/transportation/LivingEntityMixin.java @@ -5,81 +5,16 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; -import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(LivingEntity.class) -abstract public class LivingEntityMixin extends Entity { - /** - * FEATURE: Using riptide trident enchant underwater makes the player gain acceleration during its effect. - * @author Kiku - * @author Flatkat - */ - @SuppressWarnings("JavadocDeclaration") - @Unique - private static final float MODIFIER = HarmonyConfig.riptideAccelerationOnWater; - @Unique - private static final float DEG = (float) (Math.PI / 180F); - - @Shadow - protected int riptideTicks; - - @Shadow public abstract void setSprinting(boolean sprinting); - +public abstract class LivingEntityMixin extends Entity { public LivingEntityMixin(EntityType type, World world) { super(type, world); } - //Applies constant acceleration when using riptide and touching water. - @Inject( - method = "tickMovement", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/LivingEntity;tickRiptide(Lnet/minecraft/util/math/Box;Lnet/minecraft/util/math/Box;)V" - ) - ) - private void accelerateWhenRiptide(CallbackInfo ci) { - if(HarmonyConfig.riptideAccelerationOnWater != 0){ - if (!this.isTouchingWater()) return; - float f = getYaw(); - float g = getPitch(); - float h = -MathHelper.sin(f * DEG) * MathHelper.cos(g * DEG); - float k = -MathHelper.sin(g * DEG); - float l = MathHelper.cos(f * DEG) * MathHelper.cos(g * DEG); - float m = MathHelper.sqrt(h * h + k * k + l * l); - h *= MODIFIER / m; - k *= MODIFIER / m; - l *= MODIFIER / m; - addVelocity(h, k, l); - } - } - - - /** - * FEATURE: Reduced water drag when using riptide - * @author Kiku - * @author Flatkat - **/ - @ModifyExpressionValue( - method = "travelInFluid", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/LivingEntity;hasStatusEffect(Lnet/minecraft/registry/entry/RegistryEntry;)Z" - ) - ) - private boolean boostWhenRiptide(boolean original) { - if(HarmonyConfig.reduceRiptideWaterDrag){ - return original || this.riptideTicks>0; - } - return original; - } - - - /** * FEATURE: Flying through liquids deactivates the Elytra * @author Kiku @@ -95,6 +30,4 @@ private boolean cancelElytraInLiquid(boolean original) { } return false; } - - } diff --git a/src/main/java/dev/symphony/harmony/mixin/transportation/LivingEntityAccessor.java b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/LivingEntityAccessor.java similarity index 81% rename from src/main/java/dev/symphony/harmony/mixin/transportation/LivingEntityAccessor.java rename to src/main/java/dev/symphony/harmony/mixin/transportation/riptide/LivingEntityAccessor.java index cc4d81d..d318873 100644 --- a/src/main/java/dev/symphony/harmony/mixin/transportation/LivingEntityAccessor.java +++ b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/LivingEntityAccessor.java @@ -1,4 +1,4 @@ -package dev.symphony.harmony.mixin.transportation; +package dev.symphony.harmony.mixin.transportation.riptide; import net.minecraft.entity.LivingEntity; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/LivingEntityMixin.java b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/LivingEntityMixin.java new file mode 100644 index 0000000..8fc8895 --- /dev/null +++ b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/LivingEntityMixin.java @@ -0,0 +1,82 @@ +package dev.symphony.harmony.mixin.transportation.riptide; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import dev.symphony.harmony.config.HarmonyConfig; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public abstract class LivingEntityMixin extends Entity { + /** + * FEATURE: Using riptide trident enchant underwater makes the player gain acceleration during its effect. + * @author Kiku + * @author Flatkat + */ + @SuppressWarnings("JavadocDeclaration") + @Unique + private static final float MODIFIER = HarmonyConfig.riptideAccelerationOnWater; + @Unique + private static final float DEG = (float) (Math.PI / 180F); + + @Shadow + protected int riptideTicks; + + @Shadow public abstract void setSprinting(boolean sprinting); + + public LivingEntityMixin(EntityType type, World world) { + super(type, world); + } + + //Applies constant acceleration when using riptide and touching water. + @Inject( + method = "tickMovement", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/entity/LivingEntity;tickRiptide(Lnet/minecraft/util/math/Box;Lnet/minecraft/util/math/Box;)V" + ) + ) + private void accelerateWhenRiptide(CallbackInfo ci) { + if(HarmonyConfig.riptideAccelerationOnWater != 0){ + if (!this.isTouchingWater()) return; + float f = getYaw(); + float g = getPitch(); + float h = -MathHelper.sin(f * DEG) * MathHelper.cos(g * DEG); + float k = -MathHelper.sin(g * DEG); + float l = MathHelper.cos(f * DEG) * MathHelper.cos(g * DEG); + float m = MathHelper.sqrt(h * h + k * k + l * l); + h *= MODIFIER / m; + k *= MODIFIER / m; + l *= MODIFIER / m; + addVelocity(h, k, l); + } + } + + + /** + * FEATURE: Reduced water drag when using riptide + * @author Kiku + * @author Flatkat + **/ + @ModifyExpressionValue( + method = "travelInFluid", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/entity/LivingEntity;hasStatusEffect(Lnet/minecraft/registry/entry/RegistryEntry;)Z" + ) + ) + private boolean boostWhenRiptide(boolean original) { + if(HarmonyConfig.reduceRiptideWaterDrag){ + return original || this.riptideTicks>0; + } + return original; + } + + +} diff --git a/src/main/java/dev/symphony/harmony/mixin/transportation/TridentItemMixin.java b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/TridentItemMixin.java similarity index 98% rename from src/main/java/dev/symphony/harmony/mixin/transportation/TridentItemMixin.java rename to src/main/java/dev/symphony/harmony/mixin/transportation/riptide/TridentItemMixin.java index a08c1cd..0d771f0 100644 --- a/src/main/java/dev/symphony/harmony/mixin/transportation/TridentItemMixin.java +++ b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/TridentItemMixin.java @@ -1,4 +1,4 @@ -package dev.symphony.harmony.mixin.transportation; +package dev.symphony.harmony.mixin.transportation.riptide; import com.llamalad7.mixinextras.sugar.Local; import dev.symphony.harmony.config.HarmonyConfig; diff --git a/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/package-info.java b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/package-info.java new file mode 100644 index 0000000..6a23f5b --- /dev/null +++ b/src/main/java/dev/symphony/harmony/mixin/transportation/riptide/package-info.java @@ -0,0 +1,4 @@ +/** + * Contains multiple features related to Trident's Riptide enchantment + */ +package dev.symphony.harmony.mixin.transportation.riptide; \ No newline at end of file diff --git a/src/main/resources/harmony.mixins.json b/src/main/resources/harmony.mixins.json index fd2b924..e8efb87 100644 --- a/src/main/resources/harmony.mixins.json +++ b/src/main/resources/harmony.mixins.json @@ -8,20 +8,21 @@ "building.ArmorStandStickArms", "combat.ItemEntityMixin", "food.GlowBerryMixin", + "mobs.HuskEntityMixin", + "mobs.mismatched_mob_armor.MobEntityMixin", "mobs.permissive_parrot_perching.EntityImplMixin", "mobs.permissive_parrot_perching.PlayerEntityMixin", "mobs.permissive_parrot_perching.SitOnOwnerShoulderGoalMixin", - "mobs.mismatched_mob_armor.MobEntityMixin", "mobs.wolves_growl_at_monsters.WolfEntityMixin", - "mobs.HuskEntityMixin", "potions.BeaconBlockEntityMixin", "redstone.AbstractBlockImplMixin", "redstone.OneTickCopperBulbDelay", "transportation.ExitVehicleOnDamage", "transportation.HorseArmorPreventsBucking", - "transportation.TridentItemMixin", "transportation.LivingEntityMixin", - "transportation.LivingEntityAccessor" + "transportation.riptide.LivingEntityAccessor", + "transportation.riptide.LivingEntityMixin", + "transportation.riptide.TridentItemMixin" ], "injectors": { "defaultRequire": 1