diff --git a/src/main/java/systems/brn/tweaks/Tweaks.java b/src/main/java/systems/brn/tweaks/Tweaks.java index 8604bc6..7b66dd8 100644 --- a/src/main/java/systems/brn/tweaks/Tweaks.java +++ b/src/main/java/systems/brn/tweaks/Tweaks.java @@ -30,6 +30,12 @@ public class Tweaks implements ModInitializer { public static final GameRules.Key ENDER_EYE_POP_CHANCE = GameRuleRegistry.register("enderEyePopChance", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(20, 0, 100)); + public static final GameRules.Key LEASH_BREAK_DISTANCE = + GameRuleRegistry.register("leashBreakDistance", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(10, 0, Integer.MAX_VALUE)); + + public static final GameRules.Key LEASH_ELASTIC_DISTANCE = + GameRuleRegistry.register("leashElasticDistance", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(6, 0, Integer.MAX_VALUE)); + @Override public void onInitialize() { } diff --git a/src/main/java/systems/brn/tweaks/mixin/LeashableMixin.java b/src/main/java/systems/brn/tweaks/mixin/LeashableMixin.java new file mode 100644 index 0000000..54ba67c --- /dev/null +++ b/src/main/java/systems/brn/tweaks/mixin/LeashableMixin.java @@ -0,0 +1,32 @@ +package systems.brn.tweaks.mixin; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.Leashable; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.GameRules; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import systems.brn.tweaks.Tweaks; + +@Mixin(Leashable.class) +public interface LeashableMixin { + + @ModifyConstant( + method = "tickLeash", + constant = @Constant(doubleValue = 10.0) + ) + private static double modifyLeashBreakDistance(double original, ServerWorld world, Entity entity) { + GameRules.IntRule rule = world.getGameRules().get(Tweaks.LEASH_BREAK_DISTANCE); + return rule.get(); + } + + @ModifyConstant( + method = "tickLeash", + constant = @Constant(doubleValue = 6.0) + ) + private static double modifyLeashElasticDistance(double original, ServerWorld world, Entity entity) { + GameRules.IntRule rule = world.getGameRules().get(Tweaks.LEASH_ELASTIC_DISTANCE); + return rule.get(); + } +} \ No newline at end of file