From 0a1d6832ab27c95c1af075f1b4f483db5c05f787 Mon Sep 17 00:00:00 2001 From: MasterDash5 Date: Mon, 27 Jul 2026 18:56:02 -0600 Subject: [PATCH 1/3] rebase panda patches --- ...6-Configurable-time-update-frequency.patch | 3 +- .../server/0017-Smooth-teleportation.patch | 3 +- .../0018-Configurable-data-saving.patch | 2 +- .../server/0023-Configurable-entity-AI.patch | 3 +- .../0030-Configurable-arrow-trajectory.patch | 2 +- ...nt-entity-and-falling-block-movement.patch | 2 +- .../server/0081-Optimize-armor-stands.patch | 2 +- .../0084-Random-arrow-damage-toggle.patch | 2 +- ...-Alternative-Chunk-Ticking-Selection.patch | 8 +-- ...Entity-tracking-range-vanilla-option.patch | 62 +++++++++++++++++++ ...kport-Fix-SPIGOT-3348-Skin-Cache-Bug.patch | 19 ++++++ ...Fix-MC-87-map-scaling-cloning-issues.patch | 53 ++++++++++++++++ .../server/0132-Better-spawn-protection.patch | 51 +++++++++++++++ 13 files changed, 196 insertions(+), 16 deletions(-) create mode 100644 patches/pandaspigot/server/0129-Entity-tracking-range-vanilla-option.patch create mode 100644 patches/pandaspigot/server/0130-Backport-Fix-SPIGOT-3348-Skin-Cache-Bug.patch create mode 100644 patches/pandaspigot/server/0131-Fix-MC-87-map-scaling-cloning-issues.patch create mode 100644 patches/pandaspigot/server/0132-Better-spawn-protection.patch diff --git a/patches/pandaspigot/server/0016-Configurable-time-update-frequency.patch b/patches/pandaspigot/server/0016-Configurable-time-update-frequency.patch index a12d060..0a8ab5e 100644 --- a/patches/pandaspigot/server/0016-Configurable-time-update-frequency.patch +++ b/patches/pandaspigot/server/0016-Configurable-time-update-frequency.patch @@ -8,12 +8,11 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index 3dd3d0702c17541083d0d365ca46e93602105bce..b5f16e8cab9e43ad7597b2ea5bc921399b37872b 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -6,6 +6,13 @@ import org.spongepowered.configurate.objectmapping.meta.Comment; +@@ -6,6 +6,12 @@ import org.spongepowered.configurate.objectmapping.meta.Comment; @ConfigSerializable @SuppressWarnings({"FieldCanBeLocal", "FieldMayBeFinal"}) public class PandaSpigotWorldConfig { + @Comment("How many ticks in between sending time updates to players?\n" + -+ "\n" + + "The vanilla option is 20 (every second), but PandaSpigot sets the default\n" + + "to 100 (every 5 seconds). You would probably be fine setting this even\n" + + "higher, unless you're constantly changing the time, or the server is lagging.") diff --git a/patches/pandaspigot/server/0017-Smooth-teleportation.patch b/patches/pandaspigot/server/0017-Smooth-teleportation.patch index ffbc2cb..f6f8e2b 100644 --- a/patches/pandaspigot/server/0017-Smooth-teleportation.patch +++ b/patches/pandaspigot/server/0017-Smooth-teleportation.patch @@ -11,14 +11,13 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index b5f16e8cab9e43ad7597b2ea5bc921399b37872b..bde014f003bccca916dbc74fc27436bf4b193fdf 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -13,6 +13,15 @@ public class PandaSpigotWorldConfig { +@@ -12,6 +12,14 @@ public class PandaSpigotWorldConfig { "higher, unless you're constantly changing the time, or the server is lagging.") public int timeUpdateFrequency = 100; + @Comment("This option makes it so that when players are teleported to a location\n" + + "with the same rotation they currently have, the server will send a special\n" + + "packet indicating that the client should not update it's rotation at all.\n" + -+ "\n" + + "For example, normally constantly teleporting a player to their own location\n" + + "will make moving their head very difficult, especially for players with higher latency.\n" + + "With this option enabled, they will be able to move their head just like normal.") diff --git a/patches/pandaspigot/server/0018-Configurable-data-saving.patch b/patches/pandaspigot/server/0018-Configurable-data-saving.patch index f686697..b1e6950 100644 --- a/patches/pandaspigot/server/0018-Configurable-data-saving.patch +++ b/patches/pandaspigot/server/0018-Configurable-data-saving.patch @@ -11,7 +11,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index bde014f003bccca916dbc74fc27436bf4b193fdf..fb9db2dafcf180dbb25c768936cb59a58a7a3584 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -22,6 +22,15 @@ public class PandaSpigotWorldConfig { +@@ -20,6 +20,15 @@ public class PandaSpigotWorldConfig { "With this option enabled, they will be able to move their head just like normal.") public boolean smoothTeleportation = false; diff --git a/patches/pandaspigot/server/0023-Configurable-entity-AI.patch b/patches/pandaspigot/server/0023-Configurable-entity-AI.patch index 7856e86..0c8dde1 100644 --- a/patches/pandaspigot/server/0023-Configurable-entity-AI.patch +++ b/patches/pandaspigot/server/0023-Configurable-entity-AI.patch @@ -8,12 +8,11 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index fb9db2dafcf180dbb25c768936cb59a58a7a3584..04f04ce721aa06fba935618176c77587e305a5b0 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -31,6 +31,11 @@ public class PandaSpigotWorldConfig { +@@ -29,6 +29,10 @@ public class PandaSpigotWorldConfig { @Comment("When enabled, this option will disable saving world chunks.") public boolean disableChunkSaving = false; + @Comment("When enabled, entity AI will be disabled.\n" + -+ "\n" + + "This has the same effect as Spigot's \"nerf-spawner-mobs\" option, but applies to all entities.") + public boolean disableEntityAi = false; + diff --git a/patches/pandaspigot/server/0030-Configurable-arrow-trajectory.patch b/patches/pandaspigot/server/0030-Configurable-arrow-trajectory.patch index fc96d94..841b3e7 100644 --- a/patches/pandaspigot/server/0030-Configurable-arrow-trajectory.patch +++ b/patches/pandaspigot/server/0030-Configurable-arrow-trajectory.patch @@ -13,7 +13,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index 04f04ce721aa06fba935618176c77587e305a5b0..05c9ebb76a3cb19e887bea1311ac36035334b9a1 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -36,6 +36,10 @@ public class PandaSpigotWorldConfig { +@@ -33,6 +33,10 @@ public class PandaSpigotWorldConfig { "This has the same effect as Spigot's \"nerf-spawner-mobs\" option, but applies to all entities.") public boolean disableEntityAi = false; diff --git a/patches/pandaspigot/server/0073-Optimize-tnt-entity-and-falling-block-movement.patch b/patches/pandaspigot/server/0073-Optimize-tnt-entity-and-falling-block-movement.patch index 14f9230..e83c378 100644 --- a/patches/pandaspigot/server/0073-Optimize-tnt-entity-and-falling-block-movement.patch +++ b/patches/pandaspigot/server/0073-Optimize-tnt-entity-and-falling-block-movement.patch @@ -11,7 +11,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index 05c9ebb76a3cb19e887bea1311ac36035334b9a1..1e0393f667029809ac3476069cebe1ef34afadc8 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -52,4 +52,8 @@ public class PandaSpigotWorldConfig { +@@ -49,4 +49,8 @@ public class PandaSpigotWorldConfig { public double extraHorizontal = 0.5; public double extraVertical = 0.1; } diff --git a/patches/pandaspigot/server/0081-Optimize-armor-stands.patch b/patches/pandaspigot/server/0081-Optimize-armor-stands.patch index bcb955f..95733bf 100644 --- a/patches/pandaspigot/server/0081-Optimize-armor-stands.patch +++ b/patches/pandaspigot/server/0081-Optimize-armor-stands.patch @@ -12,7 +12,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index 1e0393f667029809ac3476069cebe1ef34afadc8..3e85450bbccc54414be7998562fadc92d2541fb4 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -56,4 +56,6 @@ public class PandaSpigotWorldConfig { +@@ -53,4 +53,6 @@ public class PandaSpigotWorldConfig { public boolean optimizeTntMovement = false; // May not fully emulate vanilla behavior public boolean optimizeLiquidExplosions = true; // This seems like a pretty sane default diff --git a/patches/pandaspigot/server/0084-Random-arrow-damage-toggle.patch b/patches/pandaspigot/server/0084-Random-arrow-damage-toggle.patch index 9de7152..f6dc4b8 100644 --- a/patches/pandaspigot/server/0084-Random-arrow-damage-toggle.patch +++ b/patches/pandaspigot/server/0084-Random-arrow-damage-toggle.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index 3e85450bbccc54414be7998562fadc92d2541fb4..360ed37b95fce68941c234615b465090b8ea7308 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -58,4 +58,8 @@ public class PandaSpigotWorldConfig { +@@ -55,4 +55,8 @@ public class PandaSpigotWorldConfig { public boolean optimizeLiquidExplosions = true; // This seems like a pretty sane default public boolean optimizeArmorStandMovement = false; // Doesn't fully emulate vanilla behavior, see TacoSpigot issue #1 diff --git a/patches/pandaspigot/server/0128-Alternative-Chunk-Ticking-Selection.patch b/patches/pandaspigot/server/0128-Alternative-Chunk-Ticking-Selection.patch index 99dda8a..5e55425 100644 --- a/patches/pandaspigot/server/0128-Alternative-Chunk-Ticking-Selection.patch +++ b/patches/pandaspigot/server/0128-Alternative-Chunk-Ticking-Selection.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j index 360ed37b95fce68941c234615b465090b8ea7308..aa2af045e8b5be60b5fae412c8dd29bd2e288639 100644 --- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java +++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java -@@ -62,4 +62,17 @@ public class PandaSpigotWorldConfig { +@@ -59,4 +59,15 @@ public class PandaSpigotWorldConfig { @Comment("This option controls whether or not there is a chance for arrow crits to deal extra damage.\n" + "By default, this is true (vanilla behaviour)") public boolean randomArrowDamage = true; @@ -18,11 +18,9 @@ index 360ed37b95fce68941c234615b465090b8ea7308..aa2af045e8b5be60b5fae412c8dd29bd + "selects chunks around players for ticking, improving performance at the cost\n" + + "of deviating from vanilla chunk ticking behaviour (for example, plant growth\n" + + "rates may differ).\n" + -+ "\n" + + "When disabled, uses PandaSpigot's chunk ticking implementation based on\n" + + "the vanilla 1.9 algorithm, which more closely matches vanilla 1.8/1.9\n" + + "behaviour while still providing performance optimizations.\n" + -+ "\n" + + "Default: false") + public boolean useSpigotChunkTickingSelection = false; } @@ -61,7 +59,7 @@ index 652c07975c7b3a3c5e3dc68cb60ca5fc52e1848c..d93670b5fd2ee58a7b1d4ccd2479cc43 return (this.x << 4) + 8; } diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 1c9dbe212cfbeb571f1e09f224fb7ed905dd475b..4e5139ff054fdec1f1c603f720b37a74f572196d 100644 +index 1c9dbe212cfbeb571f1e09f224fb7ed905dd475b..6a489b4514d565b47d930a6ed1abf94cd863cf54 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -1,5 +1,9 @@ @@ -101,7 +99,7 @@ index 1c9dbe212cfbeb571f1e09f224fb7ed905dd475b..4e5139ff054fdec1f1c603f720b37a74 + continue; + } + -+ if (!chunk.u() && chunk.isDone()) { ++ if (PlayerChunkMap.this.world.spigotConfig.randomLightUpdates && !chunk.u() && chunk.isDone()) { + return chunk; + } + diff --git a/patches/pandaspigot/server/0129-Entity-tracking-range-vanilla-option.patch b/patches/pandaspigot/server/0129-Entity-tracking-range-vanilla-option.patch new file mode 100644 index 0000000..70a26f4 --- /dev/null +++ b/patches/pandaspigot/server/0129-Entity-tracking-range-vanilla-option.patch @@ -0,0 +1,62 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: anzz1 +Date: Fri, 19 Jun 2026 11:21:11 +0000 +Subject: [PATCH] Entity tracking range vanilla option + +Allow setting 'entity-tracking-range' to -1 to use vanilla entity +tracking range values +Also functions as a sanity check for negative values + +diff --git a/src/main/java/org/spigotmc/TrackingRange.java b/src/main/java/org/spigotmc/TrackingRange.java +index 4bf4d2ac64b14a3fb740af8bbe888130099573c4..9ed203517647d1e81ee04dd2fb1288aa0f1cd7fd 100644 +--- a/src/main/java/org/spigotmc/TrackingRange.java ++++ b/src/main/java/org/spigotmc/TrackingRange.java +@@ -21,31 +21,41 @@ public class TrackingRange + */ + public static int getEntityTrackingRange(Entity entity, int defaultRange) + { ++ int i; + SpigotWorldConfig config = entity.world.spigotConfig; + if ( entity instanceof EntityPlayer ) + { +- return config.playerTrackingRange; ++ i = config.playerTrackingRange; + } else if ( entity.activationType == 1 ) + { +- return config.monsterTrackingRange; ++ i = config.monsterTrackingRange; + } else if ( entity instanceof EntityGhast ) + { + if ( config.monsterTrackingRange > config.monsterActivationRange ) + { +- return config.monsterTrackingRange; ++ i = config.monsterTrackingRange; + } else + { +- return config.monsterActivationRange; ++ i = config.monsterActivationRange; + } + } else if ( entity.activationType == 2 ) + { +- return config.animalTrackingRange; ++ i = config.animalTrackingRange; + } else if ( entity instanceof EntityItemFrame || entity instanceof EntityPainting || entity instanceof EntityItem || entity instanceof EntityExperienceOrb ) + { +- return config.miscTrackingRange; ++ i = config.miscTrackingRange; + } else + { +- return config.otherTrackingRange; ++ i = config.otherTrackingRange; + } ++ ++ // PandaSpigot start - Entity tracking range vanilla option ++ if (i < 0) ++ { ++ i = defaultRange; ++ } ++ // PandaSpigot end ++ ++ return i; + } + } diff --git a/patches/pandaspigot/server/0130-Backport-Fix-SPIGOT-3348-Skin-Cache-Bug.patch b/patches/pandaspigot/server/0130-Backport-Fix-SPIGOT-3348-Skin-Cache-Bug.patch new file mode 100644 index 0000000..f71a1c3 --- /dev/null +++ b/patches/pandaspigot/server/0130-Backport-Fix-SPIGOT-3348-Skin-Cache-Bug.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: uRyanxD +Date: Fri, 26 Jun 2026 16:08:57 -0300 +Subject: [PATCH] Backport Fix SPIGOT-3348: Skin Cache Bug + + +diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java +index 58014c5f142abf72fcf6a7164872bbe7d7bb9d18..2c94ffa6c72d2851513c527fb14f058f24f1e35f 100644 +--- a/src/main/java/net/minecraft/server/TileEntitySkull.java ++++ b/src/main/java/net/minecraft/server/TileEntitySkull.java +@@ -162,7 +162,7 @@ public class TileEntitySkull extends TileEntity { + } else if (MinecraftServer.getServer() == null) { + callback.apply(gameprofile); + } else { +- GameProfile profile = skinCache.getIfPresent(gameprofile.getName()); ++ GameProfile profile = skinCache.getIfPresent(gameprofile.getName().toLowerCase()); // PandaSpigot - Fix SPIGOT-3348: Skin Cache Bug + if (profile != null && Iterables.getFirst(profile.getProperties().get("textures"), (Object) null) != null) { + callback.apply(profile); + } else { diff --git a/patches/pandaspigot/server/0131-Fix-MC-87-map-scaling-cloning-issues.patch b/patches/pandaspigot/server/0131-Fix-MC-87-map-scaling-cloning-issues.patch new file mode 100644 index 0000000..2b68d04 --- /dev/null +++ b/patches/pandaspigot/server/0131-Fix-MC-87-map-scaling-cloning-issues.patch @@ -0,0 +1,53 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: anzz1 +Date: Thu, 18 Jun 2026 13:36:13 +0000 +Subject: [PATCH] Fix MC-87 map scaling/cloning issues + +Backport MC-87 fix from 1.11 +Fixes map not scaling when shift-clicking the result from workbench +And NBT tags not cloning when cloning a map + +diff --git a/src/main/java/net/minecraft/server/ContainerWorkbench.java b/src/main/java/net/minecraft/server/ContainerWorkbench.java +index 48d524e54a6b9b13dd6d4b3863d328b97bce6a7e..78df2db46005cc9eeb7090a75aee55c02948075f 100644 +--- a/src/main/java/net/minecraft/server/ContainerWorkbench.java ++++ b/src/main/java/net/minecraft/server/ContainerWorkbench.java +@@ -95,6 +95,8 @@ public class ContainerWorkbench extends Container { + + itemstack = itemstack1.cloneItemStack(); + if (i == 0) { ++ itemstack1.getItem().d(itemstack1, this.g, entityhuman); // PandaSpigot - Fix MC-87 map scaling/cloning issues ++ + if (!this.a(itemstack1, 10, 46, true)) { + return null; + } +diff --git a/src/main/java/net/minecraft/server/ItemWorldMap.java b/src/main/java/net/minecraft/server/ItemWorldMap.java +index 6473ee5b795253994cd482f1c0caea1e83ff985c..0cc720392dfd386324f6a553411d28a0749b9835 100644 +--- a/src/main/java/net/minecraft/server/ItemWorldMap.java ++++ b/src/main/java/net/minecraft/server/ItemWorldMap.java +@@ -208,6 +208,8 @@ public class ItemWorldMap extends ItemWorldMapBase { + worldmap1.c(); + world.a("map_" + itemstack.getData(), (PersistentBase) worldmap1); + ++ itemstack.getTag().remove("map_is_scaling"); // PandaSpigot - Fix MC-87 map scaling/cloning issues ++ + // CraftBukkit start + MapInitializeEvent event = new MapInitializeEvent(worldmap1.mapView); + Bukkit.getServer().getPluginManager().callEvent(event); +diff --git a/src/main/java/net/minecraft/server/RecipeMapClone.java b/src/main/java/net/minecraft/server/RecipeMapClone.java +index 579f6d1d2e68c86d11054c3c6c79993ef18f3017..9e3ae8969b1f3bf8a24cb3adb1890d37e1d9bef1 100644 +--- a/src/main/java/net/minecraft/server/RecipeMapClone.java ++++ b/src/main/java/net/minecraft/server/RecipeMapClone.java +@@ -66,6 +66,13 @@ public class RecipeMapClone extends ShapelessRecipes implements IRecipe { // Cra + itemstack2.c(itemstack.getName()); + } + ++ // PandaSpigot start - Fix MC-87 map scaling/cloning issues ++ if (itemstack.hasTag()) ++ { ++ itemstack2.setTag(itemstack.getTag()); ++ } ++ // PandaSpigot end ++ + return itemstack2; + } else { + return null; diff --git a/patches/pandaspigot/server/0132-Better-spawn-protection.patch b/patches/pandaspigot/server/0132-Better-spawn-protection.patch new file mode 100644 index 0000000..2137491 --- /dev/null +++ b/patches/pandaspigot/server/0132-Better-spawn-protection.patch @@ -0,0 +1,51 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: anzz1 +Date: Sun, 28 Jun 2026 13:21:04 +0000 +Subject: [PATCH] Better spawn protection + +Protect spawn from explosions + +diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java +index f1769ecc8fe0725171b638b7d8b7bbbc9e5250d1..c63cd15c13b503d91ef0245ffe0de7f85dd6f540 100644 +--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java ++++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java +@@ -127,4 +127,7 @@ public class PandaSpigotConfig { + public int tabSpamIncrement = 10; + + public int tabSpamLimit = 500; ++ ++ @Comment("Protect spawn from explosions") ++ public boolean betterSpawnProtection = true; + } +diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java +index 67d7f178a43256a3fc37f235cc8b4db990e17c35..0f4e8c767632430a4cda8905331e6cede4351566 100644 +--- a/src/main/java/net/minecraft/server/DedicatedServer.java ++++ b/src/main/java/net/minecraft/server/DedicatedServer.java +@@ -522,7 +522,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer + return false; + */ + // PandaSpigot end +- } else if (this.aP().isOp(entityhuman.getProfile())) { ++ } else if (entityhuman != null && this.aP().isOp(entityhuman.getProfile())) { // PandaSpigot - Better spawn protection + return false; + } else if (this.getSpawnProtection() <= 0) { + return false; +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index 9d8bb72b469163db7def78f623d18dc4056b1f6b..e2b6f0a788fe56cacbadb457a7c65b3412a1b528 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -2056,7 +2056,13 @@ public abstract class Entity implements ICommandListener { + } + + public boolean a(Explosion explosion, World world, BlockPosition blockposition, IBlockData iblockdata, float f) { +- return true; ++ // PandaSpigot start - Better spawn protection ++ if (com.hpfxd.pandaspigot.config.PandaSpigotConfig.get().betterSpawnProtection) { ++ return !MinecraftServer.getServer().a(world, blockposition, (this instanceof EntityHuman) ? (EntityHuman)this : null); ++ } else { ++ return true; ++ } ++ // PandaSpigot end + } + + public int aE() { From 9aafdad25379879a93c13a53bab6dce243051a16 Mon Sep 17 00:00:00 2001 From: MasterDash5 Date: Mon, 27 Jul 2026 19:10:05 -0600 Subject: [PATCH 2/3] rebuild patches --- ...Fix-MC-1555-Items-get-deleted-when-the-crafting-reci.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/dashspigot/server/0015-Fix-MC-1555-Items-get-deleted-when-the-crafting-reci.patch b/patches/dashspigot/server/0015-Fix-MC-1555-Items-get-deleted-when-the-crafting-reci.patch index cadab69..5f1f265 100644 --- a/patches/dashspigot/server/0015-Fix-MC-1555-Items-get-deleted-when-the-crafting-reci.patch +++ b/patches/dashspigot/server/0015-Fix-MC-1555-Items-get-deleted-when-the-crafting-reci.patch @@ -40,10 +40,10 @@ index a86f896b44dbdfe3d46e2e95634fbc9c7038aa2d..d65d4d07a0efe0c8264f06297b34b702 return itemstack; diff --git a/src/main/java/net/minecraft/server/ContainerWorkbench.java b/src/main/java/net/minecraft/server/ContainerWorkbench.java -index 48d524e54a6b9b13dd6d4b3863d328b97bce6a7e..e6bca129ed97e5657405e15a7e1739fbbbac92ca 100644 +index 78df2db46005cc9eeb7090a75aee55c02948075f..b0f1a35694f33baaba05f38849d9dbef7e4cea92 100644 --- a/src/main/java/net/minecraft/server/ContainerWorkbench.java +++ b/src/main/java/net/minecraft/server/ContainerWorkbench.java -@@ -123,6 +123,12 @@ public class ContainerWorkbench extends Container { +@@ -125,6 +125,12 @@ public class ContainerWorkbench extends Container { } slot.a(entityhuman, itemstack1); From e2fd8f482eb79233cac1d7591077af89ee0fb1f8 Mon Sep 17 00:00:00 2001 From: MasterDash5 Date: Mon, 27 Jul 2026 19:15:13 -0600 Subject: [PATCH 3/3] Minor script cleanup from uRyanxD --- scripts/applyPatches.sh | 1 - scripts/decompile.sh | 1 - scripts/importmcdev.sh | 1 - scripts/init.sh | 2 -- scripts/rebuildPatches.sh | 1 - scripts/requireDeps.sh | 2 +- 6 files changed, 1 insertion(+), 7 deletions(-) diff --git a/scripts/applyPatches.sh b/scripts/applyPatches.sh index 84a2da2..38dc6b1 100755 --- a/scripts/applyPatches.sh +++ b/scripts/applyPatches.sh @@ -4,7 +4,6 @@ PS1="$" basedir="$(cd "$1" && pwd -P)" workdir="$basedir/base" -minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) gitcmd="git -c commit.gpgsign=false" applycmd="$gitcmd am --3way --ignore-whitespace" # Windows detection to workaround ARG_MAX limitation diff --git a/scripts/decompile.sh b/scripts/decompile.sh index 959c66b..665a452 100755 --- a/scripts/decompile.sh +++ b/scripts/decompile.sh @@ -6,7 +6,6 @@ PS1="$" basedir="$(cd "$1" && pwd -P)" workdir="$basedir/base" minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) -windows="$([[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]] && echo "true" || echo "false")" decompiledir="$workdir/mc-dev" spigotdecompiledir="$decompiledir/spigot" pandadecompiledir="$decompiledir/panda" diff --git a/scripts/importmcdev.sh b/scripts/importmcdev.sh index 25f8436..f8212d9 100755 --- a/scripts/importmcdev.sh +++ b/scripts/importmcdev.sh @@ -9,7 +9,6 @@ source "$basedir/scripts/functions.sh" gitcmd="git -c commit.gpgsign=false" workdir="$basedir/base" -minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) decompiledir="$workdir/mc-dev/panda" find "$decompiledir/$nms" -type f -name "*.java" | while read file; do diff --git a/scripts/init.sh b/scripts/init.sh index 5207514..3531362 100755 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -5,11 +5,9 @@ set -e PS1="$" basedir="$(cd "$1" && pwd -P)" workdir="$basedir/base" -minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) spigotdecompiledir="$workdir/mc-dev/spigot" nms="$spigotdecompiledir/net/minecraft/server" cb="src/main/java/net/minecraft/server" -resources="src/main/resources" gitcmd="git -c commit.gpgsign=false" # https://stackoverflow.com/a/38595160 diff --git a/scripts/rebuildPatches.sh b/scripts/rebuildPatches.sh index d5913b6..22898b4 100755 --- a/scripts/rebuildPatches.sh +++ b/scripts/rebuildPatches.sh @@ -27,7 +27,6 @@ function cleanupPatches { function savePatches { what=$1 - what_name=$(basename "$what") target=$2 patch_folder=$3 echo "Formatting patches for $what..." diff --git a/scripts/requireDeps.sh b/scripts/requireDeps.sh index cf8e323..5ba0937 100755 --- a/scripts/requireDeps.sh +++ b/scripts/requireDeps.sh @@ -17,7 +17,7 @@ if [ -z "${1:-}" ]; then _is_dep_available jar "was not found; you can download the JDK from https://adoptium.net/ or via your package manager" else # Require all dependencies provided. - for dep in $@; do + for dep in "$@"; do _is_dep_available "$dep" done fi