diff --git a/src/main/java/systems/brn/tweaks/Tweaks.java b/src/main/java/systems/brn/tweaks/Tweaks.java index 414fd53..1d742fc 100644 --- a/src/main/java/systems/brn/tweaks/Tweaks.java +++ b/src/main/java/systems/brn/tweaks/Tweaks.java @@ -8,8 +8,13 @@ import net.minecraft.world.GameRules; public class Tweaks implements ModInitializer { public static final GameRules.Key ENTITY_PORTAL_COOLDOWN = GameRuleRegistry.register("entityPortalCooldown", GameRules.Category.MOBS, GameRuleFactory.createIntRule(300, 0, Integer.MAX_VALUE)); + public static final GameRules.Key ENDER_PEARL_DAMAGE = GameRuleRegistry.register("enderPearlDamage", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(5, 0, Integer.MAX_VALUE)); + + public static final GameRules.Key SHIELD_AXE_COOLDOWN = + GameRuleRegistry.register("shieldAxeCooldown", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(100, 0, Integer.MAX_VALUE)); + @Override public void onInitialize() { } diff --git a/src/main/java/systems/brn/tweaks/mixin/PlayerEntityMixin.java b/src/main/java/systems/brn/tweaks/mixin/PlayerEntityMixin.java new file mode 100644 index 0000000..d71d384 --- /dev/null +++ b/src/main/java/systems/brn/tweaks/mixin/PlayerEntityMixin.java @@ -0,0 +1,29 @@ +package systems.brn.tweaks.mixin; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.GameRules; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import systems.brn.tweaks.Tweaks; + +@Mixin(PlayerEntity.class) +public abstract class PlayerEntityMixin { + + @ModifyConstant( + method = "disableShield(Lnet/minecraft/item/ItemStack;)V", + constant = @Constant(intValue = 100) + ) + private int modifyShieldCooldownConstant(int original) { + PlayerEntity player = (PlayerEntity)(Object)this; + if (player.getWorld() != null && player.getWorld() instanceof ServerWorld sWorld) { + GameRules.IntRule rule = sWorld.getGameRules().get(Tweaks.SHIELD_AXE_COOLDOWN); + return rule.get(); + } + return original; + } +} \ No newline at end of file diff --git a/src/main/resources/tweaks.mixins.json b/src/main/resources/tweaks.mixins.json index c017c57..0ece2ab 100644 --- a/src/main/resources/tweaks.mixins.json +++ b/src/main/resources/tweaks.mixins.json @@ -5,7 +5,8 @@ "compatibilityLevel": "JAVA_21", "mixins": [ "DontHurtMePearlMixin", - "JustTeleportAlreadyMixin" + "JustTeleportAlreadyMixin", + "PlayerEntityMixin" ], "injectors": { "defaultRequire": 1