From f8671786eeeea921ced9e2a53dd2ec8283d41bec Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Sun, 12 Jan 2025 14:29:41 +0400 Subject: [PATCH 01/10] removed random damage & fix visually open chest --- ...-Remove-random-damage-for-protection.patch | 19 +++++++ .../0108-Prevent-chest-visual-open-bug.patch | 54 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 patches/server/0107-Remove-random-damage-for-protection.patch create mode 100644 patches/server/0108-Prevent-chest-visual-open-bug.patch diff --git a/patches/server/0107-Remove-random-damage-for-protection.patch b/patches/server/0107-Remove-random-damage-for-protection.patch new file mode 100644 index 00000000..a289237e --- /dev/null +++ b/patches/server/0107-Remove-random-damage-for-protection.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kirill +Date: Fri, 3 Jan 2025 21:55:01 +0500 +Subject: [PATCH] Remove random damage for protection. + + +diff --git a/src/main/java/net/minecraft/server/EnchantmentManager.java b/src/main/java/net/minecraft/server/EnchantmentManager.java +index 98656815ff5b4a176e145162d0077c30cb1ea1a6..09c69dd4f984201a7bf1168623e8574918e41d36 100644 +--- a/src/main/java/net/minecraft/server/EnchantmentManager.java ++++ b/src/main/java/net/minecraft/server/EnchantmentManager.java +@@ -148,7 +148,7 @@ public class EnchantmentManager { + EnchantmentManager.b.a = 0; + } + +- return (EnchantmentManager.b.a + 1 >> 1) + EnchantmentManager.a.nextInt((EnchantmentManager.b.a >> 1) + 1); ++ return (EnchantmentManager.b.a + 1 >> 1); + } + + public static float a(ItemStack itemstack, EnumMonsterType enummonstertype) { diff --git a/patches/server/0108-Prevent-chest-visual-open-bug.patch b/patches/server/0108-Prevent-chest-visual-open-bug.patch new file mode 100644 index 00000000..1a0411c3 --- /dev/null +++ b/patches/server/0108-Prevent-chest-visual-open-bug.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Rejomy +Date: Fri, 10 Jan 2025 21:02:29 +0500 +Subject: [PATCH] Prevent chest visual open bug. + + +diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java +index 1d8e4d1050ebafef8784920481621965fd5c212f..66bb8b59e406a54e10a2291e0615c3e2b6b24285 100644 +--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java ++++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java +@@ -94,6 +94,9 @@ public class PandaSpigotConfig { + public static PandaSpigotConfig get() { + return config; + } ++ ++ @Comment("Prevent chest and sound bugs.") ++ public boolean dropUsePacketsInInventory = true; + + //------------------------------------------------------------------------ + @Comment("On servers with plugins that constantly churn through scoreboards, there is a risk of\n" + +diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java +index 40dc1eb6a86dede8377775ad2776fd9193d24cbc..0b1d3f5c79bf3ca9a9b2a3b51f39db225493d8c5 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -4,6 +4,7 @@ import com.google.common.collect.Lists; + import com.google.common.primitives.Doubles; + import com.google.common.primitives.Floats; + import com.google.common.util.concurrent.Futures; ++import com.hpfxd.pandaspigot.config.PandaSpigotConfig; + import io.netty.buffer.Unpooled; + import io.netty.util.concurrent.Future; + import io.netty.util.concurrent.GenericFutureListener; +@@ -24,6 +25,7 @@ import java.util.concurrent.ExecutionException; + import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; + import java.util.HashSet; + ++import org.bukkit.Bukkit; + import org.bukkit.craftbukkit.entity.CraftPlayer; + import org.bukkit.craftbukkit.event.CraftEventFactory; + import org.bukkit.craftbukkit.inventory.CraftInventoryView; +@@ -658,6 +660,13 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList + // CraftBukkit start + if (this.player.dead) return; + ++ // Rejomy patch Use packets while inventory is open. ++ // Even if inventory is not open active container will equals player inventory same with defaultContainer. ++ if (PandaSpigotConfig.get().dropUsePacketsInInventory && player.activeContainer != player.defaultContainer) { ++ return; ++ } ++ // Rejomy patch End ++ + // CraftBukkit - if rightclick decremented the item, always send the update packet. */ + // this is not here for CraftBukkit's own functionality; rather it is to fix + // a notch bug where the item doesn't update correctly. From f4ebbfcd74e23e5b3b5bcc67e99ef36f9d3fb49a Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Sat, 18 Jan 2025 17:51:28 +0400 Subject: [PATCH 02/10] 0109-Reset-NaN-Entity-Values.patch --- .../server/0109-Reset-NaN-Entity-Values.patch | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 patches/server/0109-Reset-NaN-Entity-Values.patch diff --git a/patches/server/0109-Reset-NaN-Entity-Values.patch b/patches/server/0109-Reset-NaN-Entity-Values.patch new file mode 100644 index 00000000..2e920d96 --- /dev/null +++ b/patches/server/0109-Reset-NaN-Entity-Values.patch @@ -0,0 +1,39 @@ +From 750a22a1f122a92275eebd14b555ea0482010b54 Mon Sep 17 00:00:00 2001 +From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> +Date: Fri, 13 Jan 2023 17:02:17 -0300 +Subject: [PATCH] Reset NaN Entity Values + + +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index 5971e4375..2d48d02ab 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -1204,6 +1204,12 @@ public abstract class Entity implements ICommandListener { + + public void e(NBTTagCompound nbttagcompound) { + try { ++ // FlamePaper start - Reset NaN Entity Values ++ if (Double.isNaN(locX)) this.locX = 0; ++ if (Double.isNaN(locY)) this.locY = 0; ++ if (Double.isNaN(locZ)) this.locZ = 0; ++ // FlamePaper start - Reset NaN Entity Values ++ + nbttagcompound.set("Pos", this.a(new double[] { this.locX, this.locY, this.locZ})); + nbttagcompound.set("Motion", this.a(new double[] { this.motX, this.motY, this.motZ})); + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +index d44fc62b9..a0269fbe0 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +@@ -1374,7 +1374,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + + @Override + public double getHealth() { +- return health; ++ return Double.isNaN(health) ? 0.0D : health; // FlamePaper - Reset NaN Entity Values + } + + public void setRealHealth(double health) { +-- +2.37.3.windows.1 + From 0c8901a7a3f215272616c50eb466e1e829156828 Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Sat, 25 Jan 2025 16:51:36 +0400 Subject: [PATCH 03/10] Ensure correct attack damage on slot change --- ...correct-attack-damage-on-slot-change.patch | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 patches/server/0110-Ensure-correct-attack-damage-on-slot-change.patch diff --git a/patches/server/0110-Ensure-correct-attack-damage-on-slot-change.patch b/patches/server/0110-Ensure-correct-attack-damage-on-slot-change.patch new file mode 100644 index 00000000..1687fece --- /dev/null +++ b/patches/server/0110-Ensure-correct-attack-damage-on-slot-change.patch @@ -0,0 +1,88 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: necrozma +Date: Fri, 14 Jul 2023 22:16:17 -0600 +Subject: [PATCH] Ensure correct attack damage on slot change + + +diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java +index 86ab9994079c6e18e3aed885db4171d0d87b4c1a..10284da163e2f1d1b5f12ca738a8fc5580d1373b 100644 +--- a/src/main/java/net/minecraft/server/EntityHuman.java ++++ b/src/main/java/net/minecraft/server/EntityHuman.java +@@ -692,6 +692,7 @@ public abstract class EntityHuman extends EntityLiving { + NBTTagList nbttaglist = nbttagcompound.getList("Inventory", 10); + + this.inventory.b(nbttaglist); ++ this.inventory.prevItemInHandIndex = this.inventory.itemInHandIndex; // PandaSpigot + this.inventory.itemInHandIndex = nbttagcompound.getInt("SelectedItemSlot"); + this.sleeping = nbttagcompound.getBoolean("Sleeping"); + this.sleepTicks = nbttagcompound.getShort("SleepTimer"); +diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java +index 94d8f2ffe938bd2d57d0297f9efc43ee55da3ba9..95c92fe5a1f1866da16fb991d29c6de1671684d6 100644 +--- a/src/main/java/net/minecraft/server/EntityLiving.java ++++ b/src/main/java/net/minecraft/server/EntityLiving.java +@@ -34,7 +34,7 @@ public abstract class EntityLiving extends Entity { + + private static final UUID a = UUID.fromString("662A6B8D-DA3E-4C1C-8813-96EA6097278D"); + private static final AttributeModifier b = (new AttributeModifier(EntityLiving.a, "Sprinting speed boost", 0.30000001192092896D, 2)).a(false); +- private AttributeMapBase c; ++ public AttributeMapBase c; // PandaSpigot + public CombatTracker combatTracker = new CombatTracker(this); + public final Map effects = Maps.newHashMap(); + private final ItemStack[] h = new ItemStack[5]; +diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java +index 23bd5d11f8b909817855f593adc51d3ca5d9f976..eb56c4ee33c756bc7adfed0e76ef516b5c0566da 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -963,8 +963,20 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList + return; + } + // CraftBukkit end ++ this.player.inventory.prevItemInHandIndex = this.player.inventory.itemInHandIndex; // PandaSpigot + this.player.inventory.itemInHandIndex = packetplayinhelditemslot.a(); + this.player.resetIdleTimer(); ++ // PandaSpigot start - ensure correct attack damage on slot change ++ ItemStack prevItemStack = this.player.inventory.items[this.player.inventory.prevItemInHandIndex]; ++ if (prevItemStack != null) { ++ for (AttributeModifier attributemodifier : prevItemStack.B().get("generic.attackDamage")) { ++ this.player.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).c(attributemodifier); // remove attack damage from previous held item ++ } ++ } ++ if (this.player.inventory.getItemInHand() != null) { ++ ((EntityLiving) this.player).c.b(this.player.inventory.getItemInHand().B()); // apply attack damage from current held item ++ } ++ // PandaSpigot end + } else { + PlayerConnection.c.warn(this.player.getName() + " tried to set an invalid carried item"); + this.disconnect("Invalid hotbar selection (Hacking?)"); // CraftBukkit //Spigot "Nope" -> Descriptive reason +diff --git a/src/main/java/net/minecraft/server/PlayerInventory.java b/src/main/java/net/minecraft/server/PlayerInventory.java +index 76fa51d97e9a938d4198bbe657d77900f6327744..3a8c600b7d80a46be0c33f0f6b50b751b764eb49 100644 +--- a/src/main/java/net/minecraft/server/PlayerInventory.java ++++ b/src/main/java/net/minecraft/server/PlayerInventory.java +@@ -14,6 +14,7 @@ public class PlayerInventory implements IInventory { + public ItemStack[] items = new ItemStack[36]; + public ItemStack[] armor = new ItemStack[4]; + public int itemInHandIndex; ++ public int prevItemInHandIndex; // PandaSpigot + public EntityHuman player; + private ItemStack f; + public boolean e; +@@ -571,6 +572,7 @@ public class PlayerInventory implements IInventory { + this.armor[i] = ItemStack.b(playerinventory.armor[i]); + } + ++ this.prevItemInHandIndex = playerinventory.prevItemInHandIndex; // PandaSpigot + this.itemInHandIndex = playerinventory.itemInHandIndex; + } + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java +index dba8d5ba1df8c04d8988af9b1e3329269e9a1942..202975055eda4e66e922b7d67d84ad30973591b0 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java +@@ -81,6 +81,7 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i + + public void setHeldItemSlot(int slot) { + Validate.isTrue(slot >= 0 && slot < PlayerInventory.getHotbarSize(), "Slot is not between 0 and 8 inclusive"); ++ this.getInventory().prevItemInHandIndex = this.getInventory().itemInHandIndex; // PandaSpigot + this.getInventory().itemInHandIndex = slot; + ((CraftPlayer) this.getHolder()).getHandle().playerConnection.sendPacket(new PacketPlayOutHeldItemSlot(slot)); + } From d0b3bd33f957e2809ce9900baf87ee501de1a016 Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Sun, 9 Feb 2025 18:33:26 +0400 Subject: [PATCH 04/10] latest changes --- ...al-open-bug.patch => 0109-Prevent-chest-visual-open-bug.patch} | 0 ...NaN-Entity-Values.patch => 0111-Reset-NaN-Entity-Values.patch} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename patches/server/{0108-Prevent-chest-visual-open-bug.patch => 0109-Prevent-chest-visual-open-bug.patch} (100%) rename patches/server/{0109-Reset-NaN-Entity-Values.patch => 0111-Reset-NaN-Entity-Values.patch} (100%) diff --git a/patches/server/0108-Prevent-chest-visual-open-bug.patch b/patches/server/0109-Prevent-chest-visual-open-bug.patch similarity index 100% rename from patches/server/0108-Prevent-chest-visual-open-bug.patch rename to patches/server/0109-Prevent-chest-visual-open-bug.patch diff --git a/patches/server/0109-Reset-NaN-Entity-Values.patch b/patches/server/0111-Reset-NaN-Entity-Values.patch similarity index 100% rename from patches/server/0109-Reset-NaN-Entity-Values.patch rename to patches/server/0111-Reset-NaN-Entity-Values.patch From 109f6011467c6752dfd07a0dcf687ce047214dea Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Sat, 15 Feb 2025 13:50:46 +0400 Subject: [PATCH 05/10] reorder --- ...ction.patch => 0111-Remove-random-damage-for-protection.patch} | 0 ...NaN-Entity-Values.patch => 0112-Reset-NaN-Entity-Values.patch} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename patches/server/{0107-Remove-random-damage-for-protection.patch => 0111-Remove-random-damage-for-protection.patch} (100%) rename patches/server/{0111-Reset-NaN-Entity-Values.patch => 0112-Reset-NaN-Entity-Values.patch} (100%) diff --git a/patches/server/0107-Remove-random-damage-for-protection.patch b/patches/server/0111-Remove-random-damage-for-protection.patch similarity index 100% rename from patches/server/0107-Remove-random-damage-for-protection.patch rename to patches/server/0111-Remove-random-damage-for-protection.patch diff --git a/patches/server/0111-Reset-NaN-Entity-Values.patch b/patches/server/0112-Reset-NaN-Entity-Values.patch similarity index 100% rename from patches/server/0111-Reset-NaN-Entity-Values.patch rename to patches/server/0112-Reset-NaN-Entity-Values.patch From aca1ce44c3e75b0b098a2cc3e35b1f8fa34ba0ee Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Thu, 20 Feb 2025 02:05:43 +0400 Subject: [PATCH 06/10] Faking Death Support --- patches/server/0113-Faking-Death.patch | 109 +++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 patches/server/0113-Faking-Death.patch diff --git a/patches/server/0113-Faking-Death.patch b/patches/server/0113-Faking-Death.patch new file mode 100644 index 00000000..c429ad40 --- /dev/null +++ b/patches/server/0113-Faking-Death.patch @@ -0,0 +1,109 @@ +From 9e901f874e0c4fc29bd76fe5c56dd48b5993871f Mon Sep 17 00:00:00 2001 +From: dogsbean +Date: Mon, 11 Nov 2024 10:24:02 +0900 +Subject: [PATCH] Faking Death + +--- + .../net/minecraft/server/DataWatcher.java | 13 ++++++++++ + .../net/minecraft/server/EntityPlayer.java | 9 +++++++ + .../minecraft/server/EntityTrackerEntry.java | 26 ++++++++++++++----- + 3 files changed, 42 insertions(+), 6 deletions(-) + +diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java b/AeSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java +index 3acc739..03da104 100644 +--- a/src/main/java/net/net/minecraft/server/DataWatcher.java ++++ b/src/main/java/net/minecraft/server/DataWatcher.java +@@ -115,6 +115,19 @@ public class DataWatcher { + return (WatchableObject) this.dataValues.get(i); + } + ++ public DataWatcher clone() { ++ DataWatcher newWatcher = new DataWatcher(this.a); ++ int[] var2; ++ int var3 = (var2 = this.dataValues.keys()).length; ++ ++ for(int var4 = 0; var4 < var3; ++var4) { ++ int i = var2[var4]; ++ newWatcher.a(i, ((WatchableObject)this.dataValues.get(i)).b()); ++ } ++ ++ return newWatcher; ++ } ++ + public Vector3f h(int i) { + return (Vector3f) this.j(i).b(); + } +diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java +index 3a47eaf..cc105bd 100644 +--- a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -56,6 +56,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public boolean g; + public int ping; + public boolean viewingCredits; ++ private boolean fakingDeath; + + // CraftBukkit start +@@ -1270,6 +1271,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + this.keepLevel = false; + } + ++ public void setFakingDeath(boolean fakingDeath) { ++ this.fakingDeath = fakingDeath; ++ } ++ ++ public boolean isFakingDeath() { ++ return this.fakingDeath; ++ } ++ + @Override + public CraftPlayer getBukkitEntity() { + return (CraftPlayer) super.getBukkitEntity(); +diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java +index bed69c6..d95a058 100644 +--- a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java ++++ b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java +@@ -274,21 +274,35 @@ public class EntityTrackerEntry { + + private void b() { + DataWatcher datawatcher = this.tracker.getDataWatcher(); ++ boolean fakingDeath = false; ++ boolean isPlayer = this.tracker instanceof EntityPlayer; ++ if (isPlayer) { ++ fakingDeath = ((EntityPlayer)this.tracker).isFakingDeath(); ++ } ++ ++ if (datawatcher.a() || fakingDeath) { ++ if (isPlayer && fakingDeath) { ++ datawatcher.watch(6, 0.0F); ++ ((EntityPlayer)this.tracker).setFakingDeath(false); ++ } + +- if (datawatcher.a()) { + this.broadcastIncludingSelf(new PacketPlayOutEntityMetadata(this.tracker.getId(), datawatcher, false)); ++ if (isPlayer) { ++ DataWatcher otherWatcher = datawatcher.clone(); ++ EntityPlayer player = (EntityPlayer)this.tracker; ++ otherWatcher.watch(6, player.getHealth()); ++ player.playerConnection.sendPacket(new PacketPlayOutEntityMetadata(this.tracker.getId(), otherWatcher, false)); ++ } + } + + if (this.tracker instanceof EntityLiving) { +- AttributeMapServer attributemapserver = (AttributeMapServer) ((EntityLiving) this.tracker).getAttributeMap(); ++ AttributeMapServer attributemapserver = (AttributeMapServer)((EntityLiving)this.tracker).getAttributeMap(); + Set set = attributemapserver.getAttributes(); +- + if (!set.isEmpty()) { +- // CraftBukkit start - Send scaled max health + if (this.tracker instanceof EntityPlayer) { +- ((EntityPlayer) this.tracker).getBukkitEntity().injectScaledMaxHealth(set, false); ++ ((EntityPlayer)this.tracker).getBukkitEntity().injectScaledMaxHealth(set, false); + } +- // CraftBukkit end ++ + this.broadcastIncludingSelf(new PacketPlayOutUpdateAttributes(this.tracker.getId(), set)); + } + +-- + From 1fca44a0a7d705ce774056ef039e038a78e64c81 Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Thu, 20 Feb 2025 02:07:05 +0400 Subject: [PATCH 07/10] Update 0113-Faking-Death.patch --- patches/server/0113-Faking-Death.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/server/0113-Faking-Death.patch b/patches/server/0113-Faking-Death.patch index c429ad40..e28ce6b0 100644 --- a/patches/server/0113-Faking-Death.patch +++ b/patches/server/0113-Faking-Death.patch @@ -11,7 +11,7 @@ Subject: [PATCH] Faking Death diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java b/AeSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java index 3acc739..03da104 100644 ---- a/src/main/java/net/net/minecraft/server/DataWatcher.java +--- a/src/main/java/net/minecraft/server/DataWatcher.java +++ b/src/main/java/net/minecraft/server/DataWatcher.java @@ -115,6 +115,19 @@ public class DataWatcher { return (WatchableObject) this.dataValues.get(i); @@ -35,7 +35,7 @@ index 3acc739..03da104 100644 } diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java index 3a47eaf..cc105bd 100644 ---- a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java +--- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java @@ -56,6 +56,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public boolean g; @@ -62,7 +62,7 @@ index 3a47eaf..cc105bd 100644 diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java index bed69c6..d95a058 100644 --- a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java -+++ b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java ++++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -274,21 +274,35 @@ public class EntityTrackerEntry { private void b() { From 42dbd6e2300c4a4634758643aed5d847c71a3790 Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Thu, 20 Feb 2025 02:07:39 +0400 Subject: [PATCH 08/10] Update 0113-Faking-Death.patch --- patches/server/0113-Faking-Death.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/server/0113-Faking-Death.patch b/patches/server/0113-Faking-Death.patch index e28ce6b0..b364eb5d 100644 --- a/patches/server/0113-Faking-Death.patch +++ b/patches/server/0113-Faking-Death.patch @@ -61,7 +61,7 @@ index 3a47eaf..cc105bd 100644 return (CraftPlayer) super.getBukkitEntity(); diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java index bed69c6..d95a058 100644 ---- a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java +--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -274,21 +274,35 @@ public class EntityTrackerEntry { From 41461c790d954a5e30a29760746194a31c387b17 Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Thu, 20 Feb 2025 02:09:14 +0400 Subject: [PATCH 09/10] Update 0113-Faking-Death.patch --- patches/server/0113-Faking-Death.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/server/0113-Faking-Death.patch b/patches/server/0113-Faking-Death.patch index b364eb5d..baf42a4f 100644 --- a/patches/server/0113-Faking-Death.patch +++ b/patches/server/0113-Faking-Death.patch @@ -9,7 +9,7 @@ Subject: [PATCH] Faking Death .../minecraft/server/EntityTrackerEntry.java | 26 ++++++++++++++----- 3 files changed, 42 insertions(+), 6 deletions(-) -diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java b/AeSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java +diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java index 3acc739..03da104 100644 --- a/src/main/java/net/minecraft/server/DataWatcher.java +++ b/src/main/java/net/minecraft/server/DataWatcher.java @@ -33,10 +33,10 @@ index 3acc739..03da104 100644 public Vector3f h(int i) { return (Vector3f) this.j(i).b(); } -diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index 3a47eaf..cc105bd 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java -+++ b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -56,6 +56,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public boolean g; public int ping; From f18c291ae50d16cb241ef72f5659bdd0f03b801d Mon Sep 17 00:00:00 2001 From: MISHA <185427799+sprytex@users.noreply.github.com> Date: Thu, 20 Feb 2025 02:16:07 +0400 Subject: [PATCH 10/10] Delete patches/server/0113-Faking-Death.patch --- patches/server/0113-Faking-Death.patch | 109 ------------------------- 1 file changed, 109 deletions(-) delete mode 100644 patches/server/0113-Faking-Death.patch diff --git a/patches/server/0113-Faking-Death.patch b/patches/server/0113-Faking-Death.patch deleted file mode 100644 index baf42a4f..00000000 --- a/patches/server/0113-Faking-Death.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 9e901f874e0c4fc29bd76fe5c56dd48b5993871f Mon Sep 17 00:00:00 2001 -From: dogsbean -Date: Mon, 11 Nov 2024 10:24:02 +0900 -Subject: [PATCH] Faking Death - ---- - .../net/minecraft/server/DataWatcher.java | 13 ++++++++++ - .../net/minecraft/server/EntityPlayer.java | 9 +++++++ - .../minecraft/server/EntityTrackerEntry.java | 26 ++++++++++++++----- - 3 files changed, 42 insertions(+), 6 deletions(-) - -diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java -index 3acc739..03da104 100644 ---- a/src/main/java/net/minecraft/server/DataWatcher.java -+++ b/src/main/java/net/minecraft/server/DataWatcher.java -@@ -115,6 +115,19 @@ public class DataWatcher { - return (WatchableObject) this.dataValues.get(i); - } - -+ public DataWatcher clone() { -+ DataWatcher newWatcher = new DataWatcher(this.a); -+ int[] var2; -+ int var3 = (var2 = this.dataValues.keys()).length; -+ -+ for(int var4 = 0; var4 < var3; ++var4) { -+ int i = var2[var4]; -+ newWatcher.a(i, ((WatchableObject)this.dataValues.get(i)).b()); -+ } -+ -+ return newWatcher; -+ } -+ - public Vector3f h(int i) { - return (Vector3f) this.j(i).b(); - } -diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 3a47eaf..cc105bd 100644 ---- a/src/main/java/net/minecraft/server/EntityPlayer.java -+++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -56,6 +56,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { - public boolean g; - public int ping; - public boolean viewingCredits; -+ private boolean fakingDeath; - - // CraftBukkit start -@@ -1270,6 +1271,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting { - this.keepLevel = false; - } - -+ public void setFakingDeath(boolean fakingDeath) { -+ this.fakingDeath = fakingDeath; -+ } -+ -+ public boolean isFakingDeath() { -+ return this.fakingDeath; -+ } -+ - @Override - public CraftPlayer getBukkitEntity() { - return (CraftPlayer) super.getBukkitEntity(); -diff --git a/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/AeSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index bed69c6..d95a058 100644 ---- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java -+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -@@ -274,21 +274,35 @@ public class EntityTrackerEntry { - - private void b() { - DataWatcher datawatcher = this.tracker.getDataWatcher(); -+ boolean fakingDeath = false; -+ boolean isPlayer = this.tracker instanceof EntityPlayer; -+ if (isPlayer) { -+ fakingDeath = ((EntityPlayer)this.tracker).isFakingDeath(); -+ } -+ -+ if (datawatcher.a() || fakingDeath) { -+ if (isPlayer && fakingDeath) { -+ datawatcher.watch(6, 0.0F); -+ ((EntityPlayer)this.tracker).setFakingDeath(false); -+ } - -- if (datawatcher.a()) { - this.broadcastIncludingSelf(new PacketPlayOutEntityMetadata(this.tracker.getId(), datawatcher, false)); -+ if (isPlayer) { -+ DataWatcher otherWatcher = datawatcher.clone(); -+ EntityPlayer player = (EntityPlayer)this.tracker; -+ otherWatcher.watch(6, player.getHealth()); -+ player.playerConnection.sendPacket(new PacketPlayOutEntityMetadata(this.tracker.getId(), otherWatcher, false)); -+ } - } - - if (this.tracker instanceof EntityLiving) { -- AttributeMapServer attributemapserver = (AttributeMapServer) ((EntityLiving) this.tracker).getAttributeMap(); -+ AttributeMapServer attributemapserver = (AttributeMapServer)((EntityLiving)this.tracker).getAttributeMap(); - Set set = attributemapserver.getAttributes(); -- - if (!set.isEmpty()) { -- // CraftBukkit start - Send scaled max health - if (this.tracker instanceof EntityPlayer) { -- ((EntityPlayer) this.tracker).getBukkitEntity().injectScaledMaxHealth(set, false); -+ ((EntityPlayer)this.tracker).getBukkitEntity().injectScaledMaxHealth(set, false); - } -- // CraftBukkit end -+ - this.broadcastIncludingSelf(new PacketPlayOutUpdateAttributes(this.tracker.getId(), set)); - } - --- -