From 28021c389a8aa30c70b0c5128084b6b5a7c05f60 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Mon, 14 Nov 2022 20:10:28 +0100 Subject: [PATCH] gamerule for toggling player crits --- README.md | 3 +++ .../moregamerules/ExtraGameRule.java | 7 +++++++ .../mixin/PlayerEntityMixin.java | 21 +++++++++++++++++++ .../assets/moregamerules/lang/en_us.json | 4 +++- src/main/resources/moregamerules.mixins.json | 1 + 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/main/java/me/youhavetrouble/moregamerules/mixin/PlayerEntityMixin.java diff --git a/README.md b/README.md index b585df2..1903b5b 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,6 @@ Controls how much damage elytras take when boosting with a firework ### elytraDamageFromRiptideTrident Controls how much damage elytras take when boosting with a riptide trident + +### playerCrits +Decides if players should be able to crit \ No newline at end of file diff --git a/src/main/java/me/youhavetrouble/moregamerules/ExtraGameRule.java b/src/main/java/me/youhavetrouble/moregamerules/ExtraGameRule.java index 2d586a2..978d1de 100644 --- a/src/main/java/me/youhavetrouble/moregamerules/ExtraGameRule.java +++ b/src/main/java/me/youhavetrouble/moregamerules/ExtraGameRule.java @@ -12,6 +12,8 @@ public class ExtraGameRule { public static GameRules.Key ELYTRA_DAMAGE_FROM_FIREWORK_BOOST; public static GameRules.Key ELYTRA_DAMAGE_FROM_RIPTIDE_BOOST; + public static GameRules.Key PLAYER_CRITS; + protected static void init() { MAGMA_BLOCK_DAMAGE = GameRuleRegistry.register( "magmaBlockDamage", @@ -38,6 +40,11 @@ public class ExtraGameRule { GameRules.Category.MISC, GameRuleFactory.createIntRule(0, 0, Integer.MAX_VALUE) ); + PLAYER_CRITS = GameRuleRegistry.register( + "playerCrits", + GameRules.Category.PLAYER, + GameRuleFactory.createBooleanRule(true) + ); } } diff --git a/src/main/java/me/youhavetrouble/moregamerules/mixin/PlayerEntityMixin.java b/src/main/java/me/youhavetrouble/moregamerules/mixin/PlayerEntityMixin.java new file mode 100644 index 0000000..6bb8768 --- /dev/null +++ b/src/main/java/me/youhavetrouble/moregamerules/mixin/PlayerEntityMixin.java @@ -0,0 +1,21 @@ +package me.youhavetrouble.moregamerules.mixin; + +import me.youhavetrouble.moregamerules.ExtraGameRule; +import net.minecraft.entity.player.PlayerEntity; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(PlayerEntity.class) +public class PlayerEntityMixin { + + @Redirect(method = "attack", at = @At(value = "FIELD", target = "Lnet/minecraft/entity/player/PlayerEntity;fallDistance:F", opcode = Opcodes.GETFIELD)) + private float injected(PlayerEntity instance) { + if (instance.world.getGameRules().getBoolean(ExtraGameRule.PLAYER_CRITS)) { + return instance.fallDistance; + } + return 0f; + } + +} diff --git a/src/main/resources/assets/moregamerules/lang/en_us.json b/src/main/resources/assets/moregamerules/lang/en_us.json index 5bab1ab..7a27c72 100644 --- a/src/main/resources/assets/moregamerules/lang/en_us.json +++ b/src/main/resources/assets/moregamerules/lang/en_us.json @@ -8,5 +8,7 @@ "gamerule.elytraDamageFromFirework": "Elytra damage from firework boost", "gamerule.elytraDamageFromFirework.description": "Controls how much damage elytras take when boosting with a firework", "gamerule.elytraDamageFromRiptideTrident": "Elytra damage from firework boost", - "gamerule.elytraDamageFromRiptideTrident.description": "Controls how much damage elytras take when boosting with a riptide trident" + "gamerule.elytraDamageFromRiptideTrident.description": "Controls how much damage elytras take when boosting with a riptide trident", + "gamerule.playerCrits": "Player crits", + "gamerule.playerCrits.description": "Decides if players should be able to crit" } \ No newline at end of file diff --git a/src/main/resources/moregamerules.mixins.json b/src/main/resources/moregamerules.mixins.json index 621a4e7..b6ab520 100644 --- a/src/main/resources/moregamerules.mixins.json +++ b/src/main/resources/moregamerules.mixins.json @@ -6,6 +6,7 @@ "mixins": [ "FireworkItemMixin", "LivingEntityMixin", + "PlayerEntityMixin", "ServerWorldMixin", "TridentItemMixin" ],