From c162fedc1695e60478a36acdba45ba309ec3ab29 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Sat, 2 Nov 2024 16:53:39 +1100 Subject: [PATCH] SPIGOT-7941: Fix resistance over 4 amplify causing issues in damage By: Doc --- .../minecraft/world/entity/EntityLiving.patch | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/paper-server/nms-patches/net/minecraft/world/entity/EntityLiving.patch b/paper-server/nms-patches/net/minecraft/world/entity/EntityLiving.patch index 730ea72b1f..26012563a6 100644 --- a/paper-server/nms-patches/net/minecraft/world/entity/EntityLiving.patch +++ b/paper-server/nms-patches/net/minecraft/world/entity/EntityLiving.patch @@ -727,7 +727,7 @@ int i = (this.getEffect(MobEffects.DAMAGE_RESISTANCE).getAmplifier() + 1) * 5; int j = 25 - i; float f1 = f * (float) j; -@@ -1873,15 +2185,140 @@ +@@ -1873,15 +2185,141 @@ } } @@ -785,7 +785,8 @@ + int i = (EntityLiving.this.getEffect(MobEffects.DAMAGE_RESISTANCE).getAmplifier() + 1) * 5; + int j = 25 - i; + float f1 = f.floatValue() * (float) j; -+ return -(f - (f1 / 25.0F)); ++ ++ return -(f - Math.max(f1 / 25.0F, 0.0F)); + } + return -0.0; + } @@ -875,7 +876,7 @@ if (f2 > 0.0F && f2 < 3.4028235E37F) { Entity entity = damagesource.getEntity(); -@@ -1893,13 +2330,48 @@ +@@ -1893,13 +2331,48 @@ } } @@ -926,7 +927,7 @@ } public CombatTracker getCombatTracker() { -@@ -1924,9 +2396,19 @@ +@@ -1924,9 +2397,19 @@ } public final void setArrowCount(int i) { @@ -947,7 +948,7 @@ public final int getStingerCount() { return (Integer) this.entityData.get(EntityLiving.DATA_STINGER_COUNT_ID); } -@@ -2171,6 +2653,12 @@ +@@ -2171,6 +2654,12 @@ public abstract ItemStack getItemBySlot(EnumItemSlot enumitemslot); @@ -960,7 +961,7 @@ public abstract void setItemSlot(EnumItemSlot enumitemslot, ItemStack itemstack); public Iterable getHandSlots() { -@@ -2623,7 +3111,7 @@ +@@ -2623,7 +3112,7 @@ } } @@ -969,7 +970,7 @@ if (this.tickCount % 20 == 0) { this.getCombatTracker().recheckStatus(); } -@@ -2730,7 +3218,7 @@ +@@ -2730,7 +3219,7 @@ this.elytraAnimationState.tick(); } @@ -978,7 +979,7 @@ Map map = this.collectEquipmentChanges(); if (map != null) { -@@ -3052,6 +3540,7 @@ +@@ -3052,6 +3541,7 @@ this.checkSlowFallDistance(); if (!this.level().isClientSide) { if (!this.canGlide()) { @@ -986,7 +987,7 @@ this.setSharedFlag(7, false); return; } -@@ -3298,14 +3787,21 @@ +@@ -3298,14 +3788,21 @@ @Override public boolean isPickable() { @@ -1010,7 +1011,7 @@ @Override public float getYHeadRot() { return this.yHeadRot; -@@ -3476,7 +3972,30 @@ +@@ -3476,7 +3973,30 @@ this.releaseUsingItem(); } else { if (!this.useItem.isEmpty() && this.isUsingItem()) { @@ -1042,7 +1043,7 @@ if (itemstack != this.useItem) { this.setItemInHand(enumhand, itemstack); -@@ -3561,6 +4080,12 @@ +@@ -3561,6 +4081,12 @@ } public boolean randomTeleport(double d0, double d1, double d2, boolean flag) { @@ -1055,7 +1056,7 @@ double d3 = this.getX(); double d4 = this.getY(); double d5 = this.getZ(); -@@ -3585,16 +4110,41 @@ +@@ -3585,16 +4111,41 @@ } if (flag2) { @@ -1100,7 +1101,7 @@ } else { if (flag) { world.broadcastEntityEvent(this, (byte) 46); -@@ -3606,7 +4156,7 @@ +@@ -3606,7 +4157,7 @@ entitycreature.getNavigation().stop(); } @@ -1109,7 +1110,7 @@ } } -@@ -3699,7 +4249,7 @@ +@@ -3699,7 +4250,7 @@ } public void stopSleeping() { @@ -1118,7 +1119,7 @@ World world = this.level(); java.util.Objects.requireNonNull(world); -@@ -3733,7 +4283,7 @@ +@@ -3733,7 +4284,7 @@ @Nullable public EnumDirection getBedOrientation() {