feat: make shield disable cooldown also a gamerule

This commit is contained in:
2025-12-03 03:24:26 +01:00
parent 88620d9d24
commit fe7a1992b6
3 changed files with 36 additions and 1 deletions

View File

@@ -8,8 +8,13 @@ import net.minecraft.world.GameRules;
public class Tweaks implements ModInitializer {
public static final GameRules.Key<GameRules.IntRule> ENTITY_PORTAL_COOLDOWN =
GameRuleRegistry.register("entityPortalCooldown", GameRules.Category.MOBS, GameRuleFactory.createIntRule(300, 0, Integer.MAX_VALUE));
public static final GameRules.Key<GameRules.IntRule> ENDER_PEARL_DAMAGE =
GameRuleRegistry.register("enderPearlDamage", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(5, 0, Integer.MAX_VALUE));
public static final GameRules.Key<GameRules.IntRule> SHIELD_AXE_COOLDOWN =
GameRuleRegistry.register("shieldAxeCooldown", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(100, 0, Integer.MAX_VALUE));
@Override
public void onInitialize() {
}

View File

@@ -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;
}
}

View File

@@ -5,7 +5,8 @@
"compatibilityLevel": "JAVA_21",
"mixins": [
"DontHurtMePearlMixin",
"JustTeleportAlreadyMixin"
"JustTeleportAlreadyMixin",
"PlayerEntityMixin"
],
"injectors": {
"defaultRequire": 1