diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index bbf5fbe..9e14757 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -64,6 +64,19 @@ } else if (damageSource.is(DamageTypeTags.IS_DROWNING)) { return !level.getGameRules().getBoolean(GameRules.RULE_DROWNING_DAMAGE); } else if (damageSource.is(DamageTypeTags.IS_FALL)) { +@@ -755,6 +_,12 @@ + } + } + ++ // Sakura start - add max damage taken ++ final double maxDamage = level.sakuraConfig().players.combat.maxDamage.or(-1.0); ++ if (amount > 0.0 && maxDamage >= 0.0) { ++ amount = Math.min(amount, (float) maxDamage); ++ } ++ // Sakura end - add max damage taken + // return amount != 0.0F && super.hurtServer(level, damageSource, amount); + // CraftBukkit start - Don't filter out 0 damage + boolean damaged = super.hurtServer(level, damageSource, amount); @@ -1030,13 +_,19 @@ if (playerAttackEntityEvent.callEvent() && willAttack) { // Logic moved to willAttack local variable. { diff --git a/sakura-server/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java b/sakura-server/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java index c16e44a..3db0e01 100644 --- a/sakura-server/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java +++ b/sakura-server/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java @@ -152,6 +152,12 @@ public final class WorldConfiguration extends ConfigurationPart { public boolean oldEnchantedGoldenApple = false; public boolean oldSoundsAndParticleEffects = false; public boolean fastHealthRegen = true; + + @Comment( + "The maximum damage a player can take in a single hit.\n" + + "This can prevent arrows and maces instantly killing players." + ) + public DoubleOr.Disabled maxDamage = DoubleOr.Disabled.DISABLED; public IntOr.Default maxArmourDamage = IntOr.Default.USE_DEFAULT; }