From f7dafcae34f1dbe86a34c68dd5b440b9ec16b886 Mon Sep 17 00:00:00 2001 From: Owen <23108066+Owen1212055@users.noreply.github.com> Date: Tue, 27 Dec 2022 19:54:57 -0500 Subject: [PATCH] Add attribute clamping and armor limit config (#1172) --- ...bute-clamping-and-armor-limit-config.patch | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 patches/server/0310-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0310-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0310-Add-attribute-clamping-and-armor-limit-config.patch new file mode 100644 index 000000000..da4a54569 --- /dev/null +++ b/patches/server/0310-Add-attribute-clamping-and-armor-limit-config.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Thu, 27 Oct 2022 23:12:45 -0400 +Subject: [PATCH] Add attribute clamping and armor limit config + + +diff --git a/src/main/java/net/minecraft/world/damagesource/CombatRules.java b/src/main/java/net/minecraft/world/damagesource/CombatRules.java +index ccbfcef3e83b1bef364447657bfd08a92d615cf6..aa2331c6df4e79d4bb0add071a0b11d2a3a08b88 100644 +--- a/src/main/java/net/minecraft/world/damagesource/CombatRules.java ++++ b/src/main/java/net/minecraft/world/damagesource/CombatRules.java +@@ -11,12 +11,12 @@ public class CombatRules { + + public static float getDamageAfterAbsorb(float damage, float armor, float armorToughness) { + float f = 2.0F + armorToughness / 4.0F; +- float g = Mth.clamp(armor - damage / f, armor * 0.2F, 20.0F); ++ float g = Mth.clamp(armor - damage / f, armor * 0.2F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur + return damage * (1.0F - g / 25.0F); + } + + public static float getDamageAfterMagicAbsorb(float damageDealt, float protection) { +- float f = Mth.clamp(protection, 0.0F, 20.0F); ++ float f = Mth.clamp(protection, 0.0F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur + return damageDealt * (1.0F - f / 25.0F); + } + } +diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java b/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8d1723c78 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java ++++ b/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +@@ -29,6 +29,7 @@ public class RangedAttribute extends Attribute { + + @Override + public double sanitizeValue(double value) { ++ if (!org.purpurmc.purpur.PurpurConfig.clampAttributes) return Double.isNaN(value) ? this.minValue : value; // Purpur + return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue); + } + } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 76cbfb7e900bf2698776f54cfe498f4b42965221..80770fdd6ed27cdabc79296875f03ac3b8018b39 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -577,6 +577,16 @@ public class PurpurConfig { + fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); + } + ++ public static boolean clampAttributes = true; ++ private static void clampAttributes() { ++ clampAttributes = getBoolean("settings.clamp-attributes", clampAttributes); ++ } ++ ++ public static boolean limitArmor = true; ++ private static void limitArmor() { ++ limitArmor = getBoolean("settings.limit-armor", limitArmor); ++ } ++ + private static void blastResistanceSettings() { + getMap("settings.blast-resistance-overrides", Collections.emptyMap()).forEach((blockId, value) -> { + Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId));