From 1669c6b097c45823868edc49dac64b329c48275f Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Tue, 7 Jun 2022 21:55:39 +0200 Subject: [PATCH] More more patches --- gradle.properties | 1 - .../0061-Complete-resource-pack-API.patch | 14 +-- ...ading-permissions.yml-before-plugins.patch | 6 +- ...llow-Reloading-of-Custom-Permissions.patch | 4 +- .../0064-Remove-Metadata-on-reload.patch | 4 +- ...065-Handle-Item-Meta-Inconsistencies.patch | 16 ++-- ...urable-Non-Player-Arrow-Despawn-Rate.patch | 4 +- .../server/0067-Add-World-Util-Methods.patch | 8 +- ...8-Custom-replacement-for-eaten-items.patch | 8 +- ...th-absorb-values-and-repair-bad-data.patch | 12 +-- ...070-Use-a-Shared-Random-for-Entities.patch | 37 ++++++-- ...le-spawn-chances-for-skeleton-horses.patch | 4 +- ...ldBounds-and-getBlockState-for-inlin.patch | 20 ++--- ...ckPhysicsEvent-if-a-plugin-has-a-lis.patch | 25 ++---- ...Entity-AddTo-RemoveFrom-World-Events.patch | 10 +-- ...75-Configurable-Chunk-Inhabited-Time.patch | 4 +- .../server/0076-EntityPathfindEvent.patch | 14 +-- ...egionFileCache-and-make-configurable.patch | 0 ...8-Do-not-load-chunks-for-Pathfinding.patch | 8 +- ...0079-Add-PlayerUseUnknownEntityEvent.patch | 4 +- ...-Configurable-Grass-Spread-Tick-Rate.patch | 10 +-- ...g-BlockPlaceEvent-triggering-physics.patch | 18 ++++ .../server/0082-Optimize-DataBits.patch | 4 +- ...nilla-per-world-scoreboard-coloring-.patch | 0 .../0084-Configurable-Player-Collision.patch | 18 ++-- ...ent-to-allow-plugins-to-handle-clien.patch | 6 +- .../0086-Configurable-RCON-IP-address.patch | 10 +-- ...ityRegainHealthEvent-isFastRegen-API.patch | 4 +- ...-to-configure-frosted_ice-properties.patch | 4 +- ...-possibility-for-getServer-singleton.patch | 10 +-- ...item-frames-performance-and-bug-fixe.patch | 12 +-- ...-API-Replenishable-Lootables-Feature.patch | 87 ++++++++++--------- ...y-scoreboard-teams-to-scoreboard.dat.patch | 0 ...tem-property-for-disabling-watchdoge.patch | 0 .../0094-Async-GameProfileCache-saving.patch | 10 +-- ...5-Optional-TNT-doesn-t-move-in-water.patch | 4 +- ...r-redstone-torch-rapid-clock-removal.patch | 8 +- .../0097-Add-server-name-parameter.patch | 2 +- ...on-Wither-Death-sounds-to-same-world.patch | 4 +- .../server/0099-Fix-Old-Sign-Conversion.patch | 4 +- ...blocking-on-Network-Manager-creation.patch | 8 +- ...e-profiles-that-have-no-UUID-and-no-.patch | 4 +- ...setting-for-proxy-online-mode-status.patch | 8 +- ...ptimise-BlockState-s-hashCode-equals.patch | 4 +- ...onfigurable-packet-in-spam-threshold.patch | 4 +- ...05-Configurable-flying-kick-messages.patch | 10 +-- .../server/0106-Add-EntityZapEvent.patch | 2 +- ...a-from-ArmorStand-and-SpawnEgg-items.patch | 0 ...108-Cache-user-authenticator-threads.patch | 36 ++++---- ...9-Allow-Reloading-of-Command-Aliases.patch | 4 +- ...0-Add-source-to-PlayerExpChangeEvent.patch | 0 .../0111-Add-ProjectileCollideEvent.patch | 6 +- ...vent-Pathfinding-out-of-World-Border.patch | 4 +- ...imize-World.isLoaded-BlockPosition-Z.patch | 4 +- ...-Bound-Treasure-Maps-to-World-Border.patch | 16 ++-- ...figurable-Cartographer-Treasure-Maps.patch | 12 +-- .../0116-Optimize-ItemStack.isEmpty.patch | 4 +- ...to-control-if-armour-stands-can-move.patch | 4 +- ...g-BlockPlaceEvent-triggering-physics.patch | 18 ---- 59 files changed, 295 insertions(+), 271 deletions(-) rename patches/{unapplied => }/server/0061-Complete-resource-pack-API.patch (88%) rename patches/{unapplied => }/server/0062-Default-loading-permissions.yml-before-plugins.patch (92%) rename patches/{unapplied => }/server/0063-Allow-Reloading-of-Custom-Permissions.patch (90%) rename patches/{unapplied => }/server/0064-Remove-Metadata-on-reload.patch (88%) rename patches/{unapplied => }/server/0065-Handle-Item-Meta-Inconsistencies.patch (96%) rename patches/{unapplied => }/server/0066-Configurable-Non-Player-Arrow-Despawn-Rate.patch (94%) rename patches/{unapplied => }/server/0067-Add-World-Util-Methods.patch (88%) rename patches/{unapplied => }/server/0068-Custom-replacement-for-eaten-items.patch (89%) rename patches/{unapplied => }/server/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch (83%) rename patches/{unapplied => }/server/0070-Use-a-Shared-Random-for-Entities.patch (60%) rename patches/{unapplied => }/server/0071-Configurable-spawn-chances-for-skeleton-horses.patch (93%) rename patches/{unapplied => }/server/0072-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch (90%) rename patches/{unapplied => }/server/0073-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch (79%) rename patches/{unapplied => }/server/0074-Entity-AddTo-RemoveFrom-World-Events.patch (79%) rename patches/{unapplied => }/server/0075-Configurable-Chunk-Inhabited-Time.patch (91%) rename patches/{unapplied => }/server/0076-EntityPathfindEvent.patch (90%) rename patches/{unapplied => }/server/0077-Sanitise-RegionFileCache-and-make-configurable.patch (100%) rename patches/{unapplied => }/server/0078-Do-not-load-chunks-for-Pathfinding.patch (87%) rename patches/{unapplied => }/server/0079-Add-PlayerUseUnknownEntityEvent.patch (95%) rename patches/{unapplied => }/server/0080-Configurable-Grass-Spread-Tick-Rate.patch (89%) create mode 100644 patches/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch rename patches/{unapplied => }/server/0082-Optimize-DataBits.patch (97%) rename patches/{unapplied => }/server/0083-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch (100%) rename patches/{unapplied => }/server/0084-Configurable-Player-Collision.patch (91%) rename patches/{unapplied => }/server/0085-Add-handshake-event-to-allow-plugins-to-handle-clien.patch (94%) rename patches/{unapplied => }/server/0086-Configurable-RCON-IP-address.patch (77%) rename patches/{unapplied => }/server/0087-EntityRegainHealthEvent-isFastRegen-API.patch (93%) rename patches/{unapplied => }/server/0088-Add-ability-to-configure-frosted_ice-properties.patch (96%) rename patches/{unapplied => }/server/0089-remove-null-possibility-for-getServer-singleton.patch (76%) rename patches/{unapplied => }/server/0090-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch (94%) rename patches/{unapplied => }/server/0091-LootTable-API-Replenishable-Lootables-Feature.patch (90%) rename patches/{unapplied => }/server/0092-Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch (100%) rename patches/{unapplied => }/server/0093-System-property-for-disabling-watchdoge.patch (100%) rename patches/{unapplied => }/server/0094-Async-GameProfileCache-saving.patch (89%) rename patches/{unapplied => }/server/0095-Optional-TNT-doesn-t-move-in-water.patch (96%) rename patches/{unapplied => }/server/0096-Faster-redstone-torch-rapid-clock-removal.patch (93%) rename patches/{unapplied => }/server/0097-Add-server-name-parameter.patch (90%) rename patches/{unapplied => }/server/0098-Only-send-Dragon-Wither-Death-sounds-to-same-world.patch (95%) rename patches/{unapplied => }/server/0099-Fix-Old-Sign-Conversion.patch (94%) rename patches/{unapplied => }/server/0100-Avoid-blocking-on-Network-Manager-creation.patch (90%) rename patches/{unapplied => }/server/0101-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch (85%) rename patches/{unapplied => }/server/0102-Add-setting-for-proxy-online-mode-status.patch (91%) rename patches/{unapplied => }/server/0103-Optimise-BlockState-s-hashCode-equals.patch (95%) rename patches/{unapplied => }/server/0104-Configurable-packet-in-spam-threshold.patch (93%) rename patches/{unapplied => }/server/0105-Configurable-flying-kick-messages.patch (86%) rename patches/{unapplied => }/server/0106-Add-EntityZapEvent.patch (96%) rename patches/{unapplied => }/server/0107-Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch (100%) rename patches/{unapplied => }/server/0108-Cache-user-authenticator-threads.patch (68%) rename patches/{unapplied => }/server/0109-Allow-Reloading-of-Command-Aliases.patch (90%) rename patches/{unapplied => }/server/0110-Add-source-to-PlayerExpChangeEvent.patch (100%) rename patches/{unapplied => }/server/0111-Add-ProjectileCollideEvent.patch (96%) rename patches/{unapplied => }/server/0112-Prevent-Pathfinding-out-of-World-Border.patch (91%) rename patches/{unapplied => }/server/0113-Optimize-World.isLoaded-BlockPosition-Z.patch (86%) rename patches/{unapplied => }/server/0114-Bound-Treasure-Maps-to-World-Border.patch (76%) rename patches/{unapplied => }/server/0115-Configurable-Cartographer-Treasure-Maps.patch (83%) rename patches/{unapplied => }/server/0116-Optimize-ItemStack.isEmpty.patch (84%) rename patches/{unapplied => }/server/0117-Add-API-methods-to-control-if-armour-stands-can-move.patch (93%) delete mode 100644 patches/unapplied/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch diff --git a/gradle.properties b/gradle.properties index 02859ad1a..d695afd48 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,5 @@ group=io.papermc.paper version=1.19-R0.1-SNAPSHOT - mcVersion=1.19 org.gradle.caching=true diff --git a/patches/unapplied/server/0061-Complete-resource-pack-API.patch b/patches/server/0061-Complete-resource-pack-API.patch similarity index 88% rename from patches/unapplied/server/0061-Complete-resource-pack-API.patch rename to patches/server/0061-Complete-resource-pack-API.patch index bbbb81066..fe24c871b 100644 --- a/patches/unapplied/server/0061-Complete-resource-pack-API.patch +++ b/patches/server/0061-Complete-resource-pack-API.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Complete resource pack API diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b85e557972e37566c853e0b4f882719b4d8bb293..7fdc50a94f18f8a2417643fdd174b754d04999ab 100644 +index 984209f32015d765367fd7693fb759de571b9ad0..9b057950417704669fdeb80efb2417904a010074 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1654,8 +1654,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1686,8 +1686,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.LOGGER.info("Disconnecting {} due to resource pack rejection", this.player.getName()); - this.disconnect(new TranslatableComponent("multiplayer.requiredTexturePrompt.disconnect")); + this.disconnect(Component.translatable("multiplayer.requiredTexturePrompt.disconnect")); } - this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), PlayerResourcePackStatusEvent.Status.values()[packet.action.ordinal()])); // CraftBukkit - @@ -23,10 +23,10 @@ index b85e557972e37566c853e0b4f882719b4d8bb293..7fdc50a94f18f8a2417643fdd174b754 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index de9dbbff4e0e3d14821d21a1506a6b2d4a8ce3ab..47c2f02a47804da12e380e6ceecac2fc147df1b5 100644 +index f7e77a911ea950efc6be76d4d2c6b3fdf66a383c..92530a0ebb73c0b2598cd21c6312b0d83c0f0edf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -147,6 +147,7 @@ import org.bukkit.plugin.Plugin; +@@ -145,6 +145,7 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.messaging.StandardMessenger; import org.bukkit.profile.PlayerProfile; import org.bukkit.scoreboard.Scoreboard; @@ -34,7 +34,7 @@ index de9dbbff4e0e3d14821d21a1506a6b2d4a8ce3ab..47c2f02a47804da12e380e6ceecac2fc import net.md_5.bungee.api.chat.BaseComponent; // Spigot -@@ -165,6 +166,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -163,6 +164,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private double healthScale = 20; private CraftWorldBorder clientWorldBorder = null; private BorderChangeListener clientWorldBorderListener = this.createWorldBorderListener(); @@ -45,7 +45,7 @@ index de9dbbff4e0e3d14821d21a1506a6b2d4a8ce3ab..47c2f02a47804da12e380e6ceecac2fc public CraftPlayer(CraftServer server, ServerPlayer entity) { super(server, entity); -@@ -2111,6 +2116,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2109,6 +2114,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean getAffectsSpawning() { return this.getHandle().affectsSpawning; } diff --git a/patches/unapplied/server/0062-Default-loading-permissions.yml-before-plugins.patch b/patches/server/0062-Default-loading-permissions.yml-before-plugins.patch similarity index 92% rename from patches/unapplied/server/0062-Default-loading-permissions.yml-before-plugins.patch rename to patches/server/0062-Default-loading-permissions.yml-before-plugins.patch index 2341fe77d..af94ea7f4 100644 --- a/patches/unapplied/server/0062-Default-loading-permissions.yml-before-plugins.patch +++ b/patches/server/0062-Default-loading-permissions.yml-before-plugins.patch @@ -30,10 +30,10 @@ index 7bbcee19248933f67fd40f46db43363890593c73..16707c734f33f6080875e5e3ea338aff + } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3341fb3250f2dd06328e7ec8ee2758d7497eaecc..63002e9defc876d974426a1e7f087fa421215b8d 100644 +index ff7f1347619d4df2a5c217a4b6545878ed81293c..c4860d85eb0a1cab7786982969d58a5729bc93c9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -456,6 +456,7 @@ public final class CraftServer implements Server { +@@ -451,6 +451,7 @@ public final class CraftServer implements Server { if (type == PluginLoadOrder.STARTUP) { this.helpMap.clear(); this.helpMap.initializeGeneralTopics(); @@ -41,7 +41,7 @@ index 3341fb3250f2dd06328e7ec8ee2758d7497eaecc..63002e9defc876d974426a1e7f087fa4 } Plugin[] plugins = this.pluginManager.getPlugins(); -@@ -475,7 +476,7 @@ public final class CraftServer implements Server { +@@ -470,7 +471,7 @@ public final class CraftServer implements Server { this.commandMap.registerServerAliases(); DefaultPermissions.registerCorePermissions(); CraftDefaultPermissions.registerCorePermissions(); diff --git a/patches/unapplied/server/0063-Allow-Reloading-of-Custom-Permissions.patch b/patches/server/0063-Allow-Reloading-of-Custom-Permissions.patch similarity index 90% rename from patches/unapplied/server/0063-Allow-Reloading-of-Custom-Permissions.patch rename to patches/server/0063-Allow-Reloading-of-Custom-Permissions.patch index b4a5f5030..f0a5b4eb7 100644 --- a/patches/unapplied/server/0063-Allow-Reloading-of-Custom-Permissions.patch +++ b/patches/server/0063-Allow-Reloading-of-Custom-Permissions.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow Reloading of Custom Permissions https://github.com/PaperMC/Paper/issues/49 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 63002e9defc876d974426a1e7f087fa421215b8d..37f5448a201aafd799fc661498d44e583632ae91 100644 +index c4860d85eb0a1cab7786982969d58a5729bc93c9..8aef55dc446c0fd62bc0913d65085132a63bbc71 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2521,5 +2521,23 @@ public final class CraftServer implements Server { +@@ -2504,5 +2504,23 @@ public final class CraftServer implements Server { } return this.adventure$audiences; } diff --git a/patches/unapplied/server/0064-Remove-Metadata-on-reload.patch b/patches/server/0064-Remove-Metadata-on-reload.patch similarity index 88% rename from patches/unapplied/server/0064-Remove-Metadata-on-reload.patch rename to patches/server/0064-Remove-Metadata-on-reload.patch index b1dfccaca..80c282ea1 100644 --- a/patches/unapplied/server/0064-Remove-Metadata-on-reload.patch +++ b/patches/server/0064-Remove-Metadata-on-reload.patch @@ -7,10 +7,10 @@ Metadata is not meant to persist reload as things break badly with non primitive This will remove metadata on reload so it does not crash everything if a plugin uses it. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 37f5448a201aafd799fc661498d44e583632ae91..93b55593da49e181f8863347c28043a32e1460dc 100644 +index 8aef55dc446c0fd62bc0913d65085132a63bbc71..f40446e07308dd9f09622dba55933bc3486f80b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -945,8 +945,16 @@ public final class CraftServer implements Server { +@@ -940,8 +940,16 @@ public final class CraftServer implements Server { world.paperConfig.init(); // Paper } diff --git a/patches/unapplied/server/0065-Handle-Item-Meta-Inconsistencies.patch b/patches/server/0065-Handle-Item-Meta-Inconsistencies.patch similarity index 96% rename from patches/unapplied/server/0065-Handle-Item-Meta-Inconsistencies.patch rename to patches/server/0065-Handle-Item-Meta-Inconsistencies.patch index 00d853415..1eb2e987a 100644 --- a/patches/unapplied/server/0065-Handle-Item-Meta-Inconsistencies.patch +++ b/patches/server/0065-Handle-Item-Meta-Inconsistencies.patch @@ -18,10 +18,10 @@ For consistency, the old API methods now forward to use the ItemMeta API equivalents, and should deprecate the old API's. diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 1a52db84d9630a095347a85e136a9ad118f77325..d66cc030dcd3d98f57803938c8c06342a028ee88 100644 +index 7f778e037c1821cc45236bf2a95c28243d0ec126..751c23e3f12b44667c0ae36c0712e498d73ab16e 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -14,6 +14,8 @@ import java.text.DecimalFormatSymbols; +@@ -12,6 +12,8 @@ import java.text.DecimalFormatSymbols; import java.util.Collection; import java.util.Iterator; import java.util.List; @@ -30,7 +30,7 @@ index 1a52db84d9630a095347a85e136a9ad118f77325..d66cc030dcd3d98f57803938c8c06342 import java.util.Locale; import java.util.Map.Entry; import java.util.Optional; -@@ -153,6 +155,23 @@ public final class ItemStack { +@@ -151,6 +153,23 @@ public final class ItemStack { return this.getItem().getTooltipImage(this); } @@ -54,7 +54,7 @@ index 1a52db84d9630a095347a85e136a9ad118f77325..d66cc030dcd3d98f57803938c8c06342 public ItemStack(ItemLike item) { this(item, 1); } -@@ -200,6 +219,7 @@ public final class ItemStack { +@@ -202,6 +221,7 @@ public final class ItemStack { // CraftBukkit start - make defensive copy as this data may be coming from the save thread this.tag = nbttagcompound.getCompound("tag").copy(); // CraftBukkit end @@ -62,7 +62,7 @@ index 1a52db84d9630a095347a85e136a9ad118f77325..d66cc030dcd3d98f57803938c8c06342 this.getItem().verifyTagAfterLoad(this.tag); } -@@ -758,6 +778,7 @@ public final class ItemStack { +@@ -772,6 +792,7 @@ public final class ItemStack { public void setTag(@Nullable CompoundTag nbt) { this.tag = nbt; @@ -70,7 +70,7 @@ index 1a52db84d9630a095347a85e136a9ad118f77325..d66cc030dcd3d98f57803938c8c06342 if (this.getItem().canBeDepleted()) { this.setDamageValue(this.getDamageValue()); } -@@ -1063,6 +1084,7 @@ public final class ItemStack { +@@ -1061,6 +1082,7 @@ public final class ItemStack { ListTag nbttaglist = this.tag.getList("Enchantments", 10); nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (byte) level)); @@ -79,7 +79,7 @@ index 1a52db84d9630a095347a85e136a9ad118f77325..d66cc030dcd3d98f57803938c8c06342 public boolean isEnchanted() { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -index e88df908377450964ae5b6ff97ee97bd2f09c05f..ba70ac49222c517a38e20e86cee1fd38aecb6318 100644 +index 4b79b96579efbc4dd9a10e7183ed08b73b488794..3745033afb8923ce06cbf13b55c4e96f2a89573f 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java @@ -6,7 +6,6 @@ import java.util.Map; @@ -203,7 +203,7 @@ index e88df908377450964ae5b6ff97ee97bd2f09c05f..ba70ac49222c517a38e20e86cee1fd38 static Map getEnchantments(net.minecraft.world.item.ItemStack item) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index b42527e0307811a3697f6e7b0afc9a10527acbaf..20d10e5b54edaf1c5212bbc33b8cd1aa426fa826 100644 +index 0a5f063bc74e1dae67167537437ebd7e4ddf113a..4d687fa31f4d889ac755c178b9afd2b927c78ee2 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList; diff --git a/patches/unapplied/server/0066-Configurable-Non-Player-Arrow-Despawn-Rate.patch b/patches/server/0066-Configurable-Non-Player-Arrow-Despawn-Rate.patch similarity index 94% rename from patches/unapplied/server/0066-Configurable-Non-Player-Arrow-Despawn-Rate.patch rename to patches/server/0066-Configurable-Non-Player-Arrow-Despawn-Rate.patch index 63b36078a..32cc3ea78 100644 --- a/patches/unapplied/server/0066-Configurable-Non-Player-Arrow-Despawn-Rate.patch +++ b/patches/server/0066-Configurable-Non-Player-Arrow-Despawn-Rate.patch @@ -30,10 +30,10 @@ index 397995fe4c360d837282535b9b7aaf7f3d93f85f..4c4385d3d20556a2695f69c95d6b3cff + } } diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 04bd882525235e6712082d6b710f33abe555884c..68b15e3061e1e8637a34ee5e0f0953dd23645f49 100644 +index 27c31a9e926f919c7edc8fc0cdd7fba70616d60c..046082ab7deb21574d9471b78a39a4a6bb296c2f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -310,7 +310,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -311,7 +311,7 @@ public abstract class AbstractArrow extends Projectile { protected void tickDespawn() { ++this.life; diff --git a/patches/unapplied/server/0067-Add-World-Util-Methods.patch b/patches/server/0067-Add-World-Util-Methods.patch similarity index 88% rename from patches/unapplied/server/0067-Add-World-Util-Methods.patch rename to patches/server/0067-Add-World-Util-Methods.patch index e777866fe..8cb3d3f7a 100644 --- a/patches/unapplied/server/0067-Add-World-Util-Methods.patch +++ b/patches/server/0067-Add-World-Util-Methods.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add World Util Methods Methods that can be used for other patches to help improve logic. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e330fc198705ff2a4d8503f8710e6424afc9fbbf..780afec80f90473beb4ea585f514ea7727344b9f 100644 +index a04e75293b1d196341bc641ee7da975bf9baec13..64661de5763ac184eed690b15a8665b1dc1a3603 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -209,7 +209,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -214,7 +214,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public final LevelStorageSource.LevelStorageAccess convertable; public final UUID uuid; @@ -19,10 +19,10 @@ index e330fc198705ff2a4d8503f8710e6424afc9fbbf..780afec80f90473beb4ea585f514ea77 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d923cc91a8f1e71831be8ded1b4818ac3b48fc34..cccce52ef5a1ac7284bc878c7b8f0d2a312fac57 100644 +index 2bc5b3c76264a5a23170adbc2e04c55a5e4f2a6a..7f52bf3e2b6588ce4e364906500f24e323bdb664 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -318,6 +318,22 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -329,6 +329,22 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return chunk == null ? null : chunk.getFluidState(blockposition); } diff --git a/patches/unapplied/server/0068-Custom-replacement-for-eaten-items.patch b/patches/server/0068-Custom-replacement-for-eaten-items.patch similarity index 89% rename from patches/unapplied/server/0068-Custom-replacement-for-eaten-items.patch rename to patches/server/0068-Custom-replacement-for-eaten-items.patch index 93d941e6a..8a21f1e5a 100644 --- a/patches/unapplied/server/0068-Custom-replacement-for-eaten-items.patch +++ b/patches/server/0068-Custom-replacement-for-eaten-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Custom replacement for eaten items diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cb7cccee34e897195d0a258ba6623b75e797ee7c..c5a24e50b4314b2eae63c50a6575ab3ba8165ef8 100644 +index 3f82c88058edb5c37fff98d760d931de20a85b5d..0eafee2cb706a20f9eb7c5a7e4f2fc81b9f952c9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3552,9 +3552,10 @@ public abstract class LivingEntity extends Entity { +@@ -3586,9 +3586,10 @@ public abstract class LivingEntity extends Entity { this.triggerItemUseEffects(this.useItem, 16); // CraftBukkit start - fire PlayerItemConsumeEvent ItemStack itemstack; @@ -20,7 +20,7 @@ index cb7cccee34e897195d0a258ba6623b75e797ee7c..c5a24e50b4314b2eae63c50a6575ab3b level.getCraftServer().getPluginManager().callEvent(event); if (event.isCancelled()) { -@@ -3568,6 +3569,13 @@ public abstract class LivingEntity extends Entity { +@@ -3602,6 +3603,13 @@ public abstract class LivingEntity extends Entity { } else { itemstack = this.useItem.finishUsingItem(this.level, this); } @@ -34,7 +34,7 @@ index cb7cccee34e897195d0a258ba6623b75e797ee7c..c5a24e50b4314b2eae63c50a6575ab3b // CraftBukkit end if (itemstack != this.useItem) { -@@ -3575,6 +3583,11 @@ public abstract class LivingEntity extends Entity { +@@ -3609,6 +3617,11 @@ public abstract class LivingEntity extends Entity { } this.stopUsingItem(); diff --git a/patches/unapplied/server/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch b/patches/server/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch similarity index 83% rename from patches/unapplied/server/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch rename to patches/server/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch index c5021f690..19f796a28 100644 --- a/patches/unapplied/server/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch +++ b/patches/server/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch @@ -5,10 +5,10 @@ Subject: [PATCH] handle NaN health/absorb values and repair bad data diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c5a24e50b4314b2eae63c50a6575ab3ba8165ef8..c358c3d20669a9063439cee4a77555b5aa43bbf2 100644 +index 0eafee2cb706a20f9eb7c5a7e4f2fc81b9f952c9..80f8fe489ea403b48cd7b7218ce32d4926f98136 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -761,7 +761,13 @@ public abstract class LivingEntity extends Entity { +@@ -784,7 +784,13 @@ public abstract class LivingEntity extends Entity { @Override public void readAdditionalSaveData(CompoundTag nbt) { @@ -23,7 +23,7 @@ index c5a24e50b4314b2eae63c50a6575ab3ba8165ef8..c358c3d20669a9063439cee4a77555b5 if (nbt.contains("Attributes", 9) && this.level != null && !this.level.isClientSide) { this.getAttributes().load(nbt.getList("Attributes", 10)); } -@@ -1248,6 +1254,10 @@ public abstract class LivingEntity extends Entity { +@@ -1271,6 +1277,10 @@ public abstract class LivingEntity extends Entity { } public void setHealth(float health) { @@ -34,7 +34,7 @@ index c5a24e50b4314b2eae63c50a6575ab3ba8165ef8..c358c3d20669a9063439cee4a77555b5 // CraftBukkit start - Handle scaled health if (this instanceof ServerPlayer) { org.bukkit.craftbukkit.entity.CraftPlayer player = ((ServerPlayer) this).getBukkitEntity(); -@@ -3386,7 +3396,7 @@ public abstract class LivingEntity extends Entity { +@@ -3419,7 +3429,7 @@ public abstract class LivingEntity extends Entity { } public void setAbsorptionAmount(float amount) { @@ -44,10 +44,10 @@ index c5a24e50b4314b2eae63c50a6575ab3ba8165ef8..c358c3d20669a9063439cee4a77555b5 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 47c2f02a47804da12e380e6ceecac2fc147df1b5..9c69ea97f00791b0757db93fa9a6a5eb03577864 100644 +index 92530a0ebb73c0b2598cd21c6312b0d83c0f0edf..75bed7319bad695331f6cc633da5eec4b1d46f9f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1916,6 +1916,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1914,6 +1914,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void setRealHealth(double health) { diff --git a/patches/unapplied/server/0070-Use-a-Shared-Random-for-Entities.patch b/patches/server/0070-Use-a-Shared-Random-for-Entities.patch similarity index 60% rename from patches/unapplied/server/0070-Use-a-Shared-Random-for-Entities.patch rename to patches/server/0070-Use-a-Shared-Random-for-Entities.patch index 0fda7a051..99239363c 100644 --- a/patches/unapplied/server/0070-Use-a-Shared-Random-for-Entities.patch +++ b/patches/server/0070-Use-a-Shared-Random-for-Entities.patch @@ -6,16 +6,26 @@ Subject: [PATCH] Use a Shared Random for Entities Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 79dddb060d967303be70b690df83c3b2a2b1f67e..f35f6221f839504329f0d87c417ad40ad68bc178 100644 +index e6917848029b1686e4e3a1a0eadac85eda92518d..3b998ca5230dc03a7faf2b0d1d1731b442337346 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -155,6 +155,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -105,6 +105,7 @@ import net.minecraft.world.level.entity.EntityInLevelCallback; + import net.minecraft.world.level.gameevent.DynamicGameEventListener; + import net.minecraft.world.level.gameevent.GameEvent; + import net.minecraft.world.level.levelgen.Heightmap; ++import net.minecraft.world.level.levelgen.PositionalRandomFactory; + import net.minecraft.world.level.material.Fluid; + import net.minecraft.world.level.material.FluidState; + import net.minecraft.world.level.material.PushReaction; +@@ -158,6 +159,38 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return tag.contains("Bukkit.updateLevel") && tag.getInt("Bukkit.updateLevel") >= level; } + // Paper start -+ public static Random SHARED_RANDOM = new Random() { ++ public static RandomSource SHARED_RANDOM = new RandomRandomSource(); ++ private static final class RandomRandomSource extends java.util.Random implements RandomSource { + private boolean locked = false; ++ + @Override + public synchronized void setSeed(long seed) { + if (locked) { @@ -25,17 +35,32 @@ index 79dddb060d967303be70b690df83c3b2a2b1f67e..f35f6221f839504329f0d87c417ad40a + locked = true; + } + } -+ }; ++ ++ @Override ++ public RandomSource fork() { ++ return new net.minecraft.world.level.levelgen.LegacyRandomSource(this.nextLong()); ++ } ++ ++ @Override ++ public PositionalRandomFactory forkPositional() { ++ return new net.minecraft.world.level.levelgen.LegacyRandomSource.LegacyPositionalRandomFactory(this.nextLong()); ++ } ++ ++ @Override ++ public int nextInt(int origin, int bound) { ++ return RandomSource.super.nextInt(origin, bound); ++ } ++ } + // Paper end + private CraftEntity bukkitEntity; public CraftEntity getBukkitEntity() { -@@ -342,7 +357,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -345,7 +378,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; -- this.random = new Random(); +- this.random = RandomSource.create(); + this.random = SHARED_RANDOM; // Paper this.remainingFireTicks = -this.getFireImmuneTicks(); this.fluidHeight = new Object2DoubleArrayMap(2); diff --git a/patches/unapplied/server/0071-Configurable-spawn-chances-for-skeleton-horses.patch b/patches/server/0071-Configurable-spawn-chances-for-skeleton-horses.patch similarity index 93% rename from patches/unapplied/server/0071-Configurable-spawn-chances-for-skeleton-horses.patch rename to patches/server/0071-Configurable-spawn-chances-for-skeleton-horses.patch index 39eb77858..02dd1e38e 100644 --- a/patches/unapplied/server/0071-Configurable-spawn-chances-for-skeleton-horses.patch +++ b/patches/server/0071-Configurable-spawn-chances-for-skeleton-horses.patch @@ -22,10 +22,10 @@ index 4c4385d3d20556a2695f69c95d6b3cff087d26d9..fa730fd8b969e39cf063a560d9820d36 + } } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 780afec80f90473beb4ea585f514ea7727344b9f..f70b70eb0505aa1efb115e0e5a45a068244fc755 100644 +index 64661de5763ac184eed690b15a8665b1dc1a3603..033a4324800d8e4f057d65a9e41ea46c9eebfc6e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -565,7 +565,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -583,7 +583,7 @@ public class ServerLevel extends Level implements WorldGenLevel { blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); diff --git a/patches/unapplied/server/0072-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch b/patches/server/0072-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch similarity index 90% rename from patches/unapplied/server/0072-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch rename to patches/server/0072-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch index 034d5f424..114a8307b 100644 --- a/patches/unapplied/server/0072-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch +++ b/patches/server/0072-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch @@ -29,10 +29,10 @@ index 4587a3668b6be9222cdd74a38229f89f611d1af6..9f32861d791f7e4cb39d2ad01f48e191 this.x = x; this.y = y; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index cccce52ef5a1ac7284bc878c7b8f0d2a312fac57..f1f713c892e1843fdf5adec6714dc72f8fd4d354 100644 +index 7f52bf3e2b6588ce4e364906500f24e323bdb664..b087f8a58d18df43a04dae3f1a5a8083df10f6e0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -261,7 +261,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -272,7 +272,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public boolean isInWorldBounds(BlockPos pos) { @@ -42,10 +42,10 @@ index cccce52ef5a1ac7284bc878c7b8f0d2a312fac57..f1f713c892e1843fdf5adec6714dc72f public static boolean isInSpawnableBounds(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java -index 847ac56f20ab9c5745f9c0fa0e6f16743ba5e471..eea6816c52e6c0329f3bea0e7789cda9dd4a5a08 100644 +index 91d2939bde77c52c25d2633dacc461d7284ef2d3..0d815a39d50bb8c06f81e3386764db6a00d84985 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java -@@ -122,6 +122,7 @@ public abstract class ChunkAccess implements BlockGetter, BiomeManager.NoiseBiom +@@ -119,6 +119,7 @@ public abstract class ChunkAccess implements BlockGetter, BiomeManager.NoiseBiom return GameEventDispatcher.NOOP; } @@ -71,7 +71,7 @@ index 80e383e9a2d12f9f1b0b0d9ae71a0add9b51c9d4..a9c65c8d36e5c7080133706df1363b3c public BlockState getBlockState(BlockPos pos) { return Blocks.VOID_AIR.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java b/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java -index 82a4f5fb84884d229d258134fbfe62d34ad30d80..37e7f766e0de7b47c7240c9365bb134fda26a756 100644 +index 475663848a612f356a8e01330b03efb33e98fcec..ca46ed27fdc1eef979829d19b9e90db6d5c59e09 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java @@ -47,6 +47,12 @@ public class ImposterProtoChunk extends ProtoChunk { @@ -88,11 +88,11 @@ index 82a4f5fb84884d229d258134fbfe62d34ad30d80..37e7f766e0de7b47c7240c9365bb134f @Override public FluidState getFluidState(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 7a63c26e360fd054bf237df3eeffc466d73d5dfb..8a1084318f271dd64842c9243166eb89764660d4 100644 +index 2704a05766d42b0277fa6308820b88371db00ace..a508b7c6dbf9f7acdca77c219d7dd2492cd7c6b8 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -288,12 +288,29 @@ public class LevelChunk extends ChunkAccess { - }); +@@ -296,12 +296,29 @@ public class LevelChunk extends ChunkAccess { + } } + // Paper start - Optimize getBlockData to reduce instructions @@ -125,7 +125,7 @@ index 7a63c26e360fd054bf237df3eeffc466d73d5dfb..8a1084318f271dd64842c9243166eb89 BlockState iblockdata = null; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -index a17d38d08a1f4b3e7ba4ef233a4acaf75177ac4c..c696358102086257033b55adbef84b1a259cb46e 100644 +index dddae1e226d8f58cdcfc597e25d4228cd3245cb4..ae37e97e52557b48f129cc02eeea395378a48444 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java @@ -21,7 +21,7 @@ public class LevelChunkSection { @@ -138,7 +138,7 @@ index a17d38d08a1f4b3e7ba4ef233a4acaf75177ac4c..c696358102086257033b55adbef84b1a private short tickingFluidCount; public final PalettedContainer states; diff --git a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java -index ee0be5163811ea39efcb2092e5f126c3fd9b1523..d3d2bd5ea57254a4af0572d5dab460127718ce09 100644 +index 3b11824a1b85da437eec108f631eacfb5192459e..5ce6a2b83546f4dbc3183a386f51b4bacc173744 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java @@ -88,14 +88,18 @@ public class ProtoChunk extends ChunkAccess { diff --git a/patches/unapplied/server/0073-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch b/patches/server/0073-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch similarity index 79% rename from patches/unapplied/server/0073-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch rename to patches/server/0073-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch index 5c42084c6..0316efd8e 100644 --- a/patches/unapplied/server/0073-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch +++ b/patches/server/0073-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Only process BlockPhysicsEvent if a plugin has a listener Saves on some object allocation and processing when no plugin listens to this diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 400a59336300b189a1b86621b53817940f9a599e..16dbd40ab7394450fd97ced74954ae1554c79aa8 100644 +index f037503a68f2b7b7c76b6ac7243dde2bf734afbd..68a4fa890250f6c54367cbe319dd9485c988bbb7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1396,6 +1396,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f70b70eb0505aa1efb115e0e5a45a068244fc755..93c967efbcdbc44f3729d7a70e90847212daa647 100644 +index 033a4324800d8e4f057d65a9e41ea46c9eebfc6e..525ed4ddfbf898e7e8af5f2283fde7d5ba9a96d9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -208,6 +208,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - private int tickPosition; +@@ -213,6 +213,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + // CraftBukkit start public final LevelStorageSource.LevelStorageAccess convertable; public final UUID uuid; + public boolean hasPhysicsEvent = true; // Paper @@ -30,10 +30,10 @@ index f70b70eb0505aa1efb115e0e5a45a068244fc755..93c967efbcdbc44f3729d7a70e908472 @Override public LevelChunk getChunkIfLoaded(int x, int z) { // Paper - this was added in world too but keeping here for NMS ABI return this.chunkSource.getChunk(x, z, false); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f1f713c892e1843fdf5adec6714dc72f8fd4d354..b2965b136405bce16f1433411df5beab15231113 100644 +index b087f8a58d18df43a04dae3f1a5a8083df10f6e0..5732a9a41a14e5297631d78f924b2082efcfe9da 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -473,7 +473,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -484,7 +484,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // CraftBukkit start iblockdata1.updateIndirectNeighbourShapes(this, blockposition, k, j - 1); // Don't call an event for the old block to limit event spam CraftWorld world = ((ServerLevel) this).getWorld(); @@ -42,15 +42,6 @@ index f1f713c892e1843fdf5adec6714dc72f8fd4d354..b2965b136405bce16f1433411df5beab BlockPhysicsEvent event = new BlockPhysicsEvent(world.getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()), CraftBlockData.fromData(iblockdata)); this.getCraftServer().getPluginManager().callEvent(event); -@@ -586,7 +586,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - try { - // CraftBukkit start - CraftWorld world = ((ServerLevel) this).getWorld(); -- if (world != null) { -+ if (world != null && ((ServerLevel)this).hasPhysicsEvent) { // Paper - BlockPhysicsEvent event = new BlockPhysicsEvent(world.getBlockAt(pos.getX(), pos.getY(), pos.getZ()), CraftBlockData.fromData(iblockdata), world.getBlockAt(neighborPos.getX(), neighborPos.getY(), neighborPos.getZ())); - this.getCraftServer().getPluginManager().callEvent(event); - diff --git a/src/main/java/net/minecraft/world/level/block/BushBlock.java b/src/main/java/net/minecraft/world/level/block/BushBlock.java index d40e791529911ca81398ac267a819415da91502a..03fde6e47c4a347c62fe9b4a3351769aedf874f6 100644 --- a/src/main/java/net/minecraft/world/level/block/BushBlock.java @@ -65,7 +56,7 @@ index d40e791529911ca81398ac267a819415da91502a..03fde6e47c4a347c62fe9b4a3351769a } } diff --git a/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java b/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java -index bad85ac1f369d1044fa2e68b6e49cebc3c253c5b..e12b76238cb52a1007f2102473b7f892f8521b62 100644 +index a90f6cc0d8c0f6d115e59d07b1b4c9b45fe0ad1e..68de0aa2c755d07389b3b8052d33aba2583adb14 100644 --- a/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java @@ -4,6 +4,7 @@ import javax.annotation.Nullable; diff --git a/patches/unapplied/server/0074-Entity-AddTo-RemoveFrom-World-Events.patch b/patches/server/0074-Entity-AddTo-RemoveFrom-World-Events.patch similarity index 79% rename from patches/unapplied/server/0074-Entity-AddTo-RemoveFrom-World-Events.patch rename to patches/server/0074-Entity-AddTo-RemoveFrom-World-Events.patch index e1a15a561..4f6301189 100644 --- a/patches/unapplied/server/0074-Entity-AddTo-RemoveFrom-World-Events.patch +++ b/patches/server/0074-Entity-AddTo-RemoveFrom-World-Events.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity AddTo/RemoveFrom World Events diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 93c967efbcdbc44f3729d7a70e90847212daa647..317ae71b8b9318a8bfe243b7b316f84566b88bf9 100644 +index 525ed4ddfbf898e7e8af5f2283fde7d5ba9a96d9..3e78f79c489899e00b375949b178cdea695f79b1 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2037,6 +2037,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2115,6 +2115,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.setOrigin(entity.getOriginVector().toLocation(getWorld())); } // Paper end @@ -16,11 +16,11 @@ index 93c967efbcdbc44f3729d7a70e90847212daa647..317ae71b8b9318a8bfe243b7b316f845 } public void onTrackingEnd(Entity entity) { -@@ -2117,6 +2118,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2190,6 +2191,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // CraftBukkit end + new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid } - } - } + + public void onSectionChange(Entity entity) { diff --git a/patches/unapplied/server/0075-Configurable-Chunk-Inhabited-Time.patch b/patches/server/0075-Configurable-Chunk-Inhabited-Time.patch similarity index 91% rename from patches/unapplied/server/0075-Configurable-Chunk-Inhabited-Time.patch rename to patches/server/0075-Configurable-Chunk-Inhabited-Time.patch index af8fb56c5..8f07a9ae7 100644 --- a/patches/unapplied/server/0075-Configurable-Chunk-Inhabited-Time.patch +++ b/patches/server/0075-Configurable-Chunk-Inhabited-Time.patch @@ -30,7 +30,7 @@ index fa730fd8b969e39cf063a560d9820d3655709398..3e7a98073c86d94881e7c03786e3745d + } } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 8a1084318f271dd64842c9243166eb89764660d4..e2ecbd60ed5200589313d767a17600dca1231931 100644 +index a508b7c6dbf9f7acdca77c219d7dd2492cd7c6b8..605ec3ac08845178795721977b685dfbaab33156 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -281,6 +281,13 @@ public class LevelChunk extends ChunkAccess { @@ -46,4 +46,4 @@ index 8a1084318f271dd64842c9243166eb89764660d4..e2ecbd60ed5200589313d767a17600dc + @Override public GameEventDispatcher getEventDispatcher(int ySectionCoord) { - return (GameEventDispatcher) this.gameEventDispatcherSections.computeIfAbsent(ySectionCoord, (j) -> { + Level world = this.level; diff --git a/patches/unapplied/server/0076-EntityPathfindEvent.patch b/patches/server/0076-EntityPathfindEvent.patch similarity index 90% rename from patches/unapplied/server/0076-EntityPathfindEvent.patch rename to patches/server/0076-EntityPathfindEvent.patch index 44aaa3249..b076482d2 100644 --- a/patches/unapplied/server/0076-EntityPathfindEvent.patch +++ b/patches/server/0076-EntityPathfindEvent.patch @@ -6,7 +6,7 @@ Subject: [PATCH] EntityPathfindEvent Fires when an Entity decides to start moving to a location. diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java -index 57a17458dbe1629ebbf58fea9f43f09511b91fb0..dda38820f763f93513b5d83a4239197b48a45238 100644 +index 0b2e10a0f508448d9e7d003e6c822f0a56d4022f..27cd393e81f6ef9b5690c051624d8d2af50acd34 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java @@ -35,7 +35,7 @@ public class FlyingPathNavigation extends PathNavigation { @@ -19,7 +19,7 @@ index 57a17458dbe1629ebbf58fea9f43f09511b91fb0..dda38820f763f93513b5d83a4239197b @Override diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java -index a9fd90d5282bd013e031b9d7481e3f777d6892c6..a6f8ca71ba5d107cfbd24b8e8a225195dc233637 100644 +index 27b072943328aca4489a9565bda700e7e7dcbb6a..f610c06d7bb51ec2c63863dd46711712986a106a 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java @@ -69,7 +69,7 @@ public class GroundPathNavigation extends PathNavigation { @@ -32,7 +32,7 @@ index a9fd90d5282bd013e031b9d7481e3f777d6892c6..a6f8ca71ba5d107cfbd24b8e8a225195 private int getSurfaceY() { diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index 0ed51ff1607277801ddf307984bb3b776ed74816..66a2813b0b4fc321d24dde4d51dbf2dc81e6149d 100644 +index eaf1653b14e5fdacae38abe75260a64d0ffbfc1d..ff1e04e5e3b8099b0b71eda1c0de864c809c5029 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java @@ -10,6 +10,7 @@ import net.minecraft.core.BlockPos; @@ -43,7 +43,7 @@ index 0ed51ff1607277801ddf307984bb3b776ed74816..66a2813b0b4fc321d24dde4d51dbf2dc import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Mob; -@@ -106,7 +107,13 @@ public abstract class PathNavigation { +@@ -108,7 +109,13 @@ public abstract class PathNavigation { @Nullable public Path createPath(BlockPos target, int distance) { @@ -58,7 +58,7 @@ index 0ed51ff1607277801ddf307984bb3b776ed74816..66a2813b0b4fc321d24dde4d51dbf2dc } @Nullable -@@ -116,7 +123,7 @@ public abstract class PathNavigation { +@@ -118,7 +125,7 @@ public abstract class PathNavigation { @Nullable public Path createPath(Entity entity, int distance) { @@ -67,7 +67,7 @@ index 0ed51ff1607277801ddf307984bb3b776ed74816..66a2813b0b4fc321d24dde4d51dbf2dc } @Nullable -@@ -126,6 +133,16 @@ public abstract class PathNavigation { +@@ -128,6 +135,16 @@ public abstract class PathNavigation { @Nullable protected Path createPath(Set positions, int range, boolean useHeadPos, int distance, float followRange) { @@ -84,7 +84,7 @@ index 0ed51ff1607277801ddf307984bb3b776ed74816..66a2813b0b4fc321d24dde4d51dbf2dc if (positions.isEmpty()) { return null; } else if (this.mob.getY() < (double)this.level.getMinBuildHeight()) { -@@ -135,6 +152,23 @@ public abstract class PathNavigation { +@@ -137,6 +154,23 @@ public abstract class PathNavigation { } else if (this.path != null && !this.path.isDone() && positions.contains(this.targetPos)) { return this.path; } else { diff --git a/patches/unapplied/server/0077-Sanitise-RegionFileCache-and-make-configurable.patch b/patches/server/0077-Sanitise-RegionFileCache-and-make-configurable.patch similarity index 100% rename from patches/unapplied/server/0077-Sanitise-RegionFileCache-and-make-configurable.patch rename to patches/server/0077-Sanitise-RegionFileCache-and-make-configurable.patch diff --git a/patches/unapplied/server/0078-Do-not-load-chunks-for-Pathfinding.patch b/patches/server/0078-Do-not-load-chunks-for-Pathfinding.patch similarity index 87% rename from patches/unapplied/server/0078-Do-not-load-chunks-for-Pathfinding.patch rename to patches/server/0078-Do-not-load-chunks-for-Pathfinding.patch index 0a002dd1f..f2b3dffd6 100644 --- a/patches/unapplied/server/0078-Do-not-load-chunks-for-Pathfinding.patch +++ b/patches/server/0078-Do-not-load-chunks-for-Pathfinding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Do not load chunks for Pathfinding diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index ca45dfc6c05760e00987c09b697efb1f9ff0e78a..2d42df635b1ce8d975278fb36f00fe9b8b8f060f 100644 +index 235b01e23a8997d0d65de3655b3b3ff50a204c06..c48e097464977dbec22d1370c3393ba1fe105137 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -457,7 +457,12 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -477,7 +477,12 @@ public class WalkNodeEvaluator extends NodeEvaluator { for(int n = -1; n <= 1; ++n) { if (l != 0 || n != 0) { pos.set(i + l, j + m, k + n); @@ -22,7 +22,7 @@ index ca45dfc6c05760e00987c09b697efb1f9ff0e78a..2d42df635b1ce8d975278fb36f00fe9b if (blockState.is(Blocks.CACTUS)) { return BlockPathTypes.DANGER_CACTUS; } -@@ -473,6 +478,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -493,6 +498,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { if (world.getFluidState(pos).is(FluidTags.WATER)) { return BlockPathTypes.WATER_BORDER; } @@ -30,7 +30,7 @@ index ca45dfc6c05760e00987c09b697efb1f9ff0e78a..2d42df635b1ce8d975278fb36f00fe9b } } } -@@ -482,7 +488,8 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -502,7 +508,8 @@ public class WalkNodeEvaluator extends NodeEvaluator { } protected static BlockPathTypes getBlockPathTypeRaw(BlockGetter world, BlockPos pos) { diff --git a/patches/unapplied/server/0079-Add-PlayerUseUnknownEntityEvent.patch b/patches/server/0079-Add-PlayerUseUnknownEntityEvent.patch similarity index 95% rename from patches/unapplied/server/0079-Add-PlayerUseUnknownEntityEvent.patch rename to patches/server/0079-Add-PlayerUseUnknownEntityEvent.patch index 79f10f369..5518141d9 100644 --- a/patches/unapplied/server/0079-Add-PlayerUseUnknownEntityEvent.patch +++ b/patches/server/0079-Add-PlayerUseUnknownEntityEvent.patch @@ -20,10 +20,10 @@ index 8834ed411a7db86b4d2b88183a1315317107d719..c45b5ab6776f3ac79f856c3a6467c510 static final ServerboundInteractPacket.Action ATTACK_ACTION = new ServerboundInteractPacket.Action() { @Override diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7fdc50a94f18f8a2417643fdd174b754d04999ab..782e83989b82ca5547f953473b199694ed2f6690 100644 +index 9b057950417704669fdeb80efb2417904a010074..1b92ee3988c1bdcbc751f32bd480b2ad2f588139 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2220,8 +2220,37 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -2410,8 +2410,37 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser }); } } diff --git a/patches/unapplied/server/0080-Configurable-Grass-Spread-Tick-Rate.patch b/patches/server/0080-Configurable-Grass-Spread-Tick-Rate.patch similarity index 89% rename from patches/unapplied/server/0080-Configurable-Grass-Spread-Tick-Rate.patch rename to patches/server/0080-Configurable-Grass-Spread-Tick-Rate.patch index 53cd6b326..75c3aa331 100644 --- a/patches/unapplied/server/0080-Configurable-Grass-Spread-Tick-Rate.patch +++ b/patches/server/0080-Configurable-Grass-Spread-Tick-Rate.patch @@ -20,21 +20,21 @@ index 3e7a98073c86d94881e7c03786e3745db2c445cd..8dcb136f3f77bc69d5976cc17ecdafb9 + } } diff --git a/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java b/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java -index 4ba446351d8b8b97ebfab1436d8f313f2747901e..b642ced1bc4dd819210db291cfc1837d011431ab 100644 +index bd5a45765b53bf4f2f9aaea4769c71ffb008741d..845f086eb8cc7dd87c820065e7621c3c2a5cc04f 100644 --- a/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java -@@ -3,6 +3,7 @@ package net.minecraft.world.level.block; - import java.util.Random; +@@ -2,6 +2,7 @@ package net.minecraft.world.level.block; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.tags.FluidTags; - import net.minecraft.world.level.LevelReader; + import net.minecraft.util.RandomSource; @@ -39,6 +40,7 @@ public abstract class SpreadingSnowyDirtBlock extends SnowyDirtBlock { @Override - public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) { + public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + if (this instanceof GrassBlock && world.paperConfig.grassUpdateRate != 1 && (world.paperConfig.grassUpdateRate < 1 || (MinecraftServer.currentTick + pos.hashCode()) % world.paperConfig.grassUpdateRate != 0)) { return; } // Paper if (!SpreadingSnowyDirtBlock.canBeGrass(state, world, pos)) { // CraftBukkit start diff --git a/patches/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch b/patches/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch new file mode 100644 index 000000000..9186de130 --- /dev/null +++ b/patches/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch @@ -0,0 +1,18 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Sun, 3 Apr 2016 17:48:50 -0400 +Subject: [PATCH] Fix Cancelling BlockPlaceEvent triggering physics + + +diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java +index 3e78f79c489899e00b375949b178cdea695f79b1..39343854ea106aaa2c1c9f490cbdae28eb2550e6 100644 +--- a/src/main/java/net/minecraft/server/level/ServerLevel.java ++++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +@@ -1361,6 +1361,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + + @Override + public void updateNeighborsAt(BlockPos pos, Block sourceBlock) { ++ if (captureBlockStates) { return; } // Paper - Cancel all physics during placement + this.neighborUpdater.updateNeighborsAtExceptFromFacing(pos, sourceBlock, (Direction) null); + } + diff --git a/patches/unapplied/server/0082-Optimize-DataBits.patch b/patches/server/0082-Optimize-DataBits.patch similarity index 97% rename from patches/unapplied/server/0082-Optimize-DataBits.patch rename to patches/server/0082-Optimize-DataBits.patch index e95ff4c43..8686b1aff 100644 --- a/patches/unapplied/server/0082-Optimize-DataBits.patch +++ b/patches/server/0082-Optimize-DataBits.patch @@ -11,7 +11,7 @@ After: http://i.imgur.com/nJ46crB.png Optimize redundant converting of static fields into an unsigned long each call by precomputing it in ctor diff --git a/src/main/java/net/minecraft/util/SimpleBitStorage.java b/src/main/java/net/minecraft/util/SimpleBitStorage.java -index ebfc546d258b92ee02e0e726b9d4dbff6a671d51..6426d6c2c31ead49444fe56e2230266290fa79dd 100644 +index c8ae9d25eedb7cb2d9f95b799a507727b655f11f..9b81ce9d85cba07e9752c29fb5a842c4b00aa873 100644 --- a/src/main/java/net/minecraft/util/SimpleBitStorage.java +++ b/src/main/java/net/minecraft/util/SimpleBitStorage.java @@ -11,8 +11,8 @@ public class SimpleBitStorage implements BitStorage { @@ -24,7 +24,7 @@ index ebfc546d258b92ee02e0e726b9d4dbff6a671d51..6426d6c2c31ead49444fe56e22302662 + private final int divideAdd; private final long divideAddUnsigned; // Paper private final int divideShift; - public SimpleBitStorage(int elementBits, int size, int[] is) { + public SimpleBitStorage(int elementBits, int size, int[] data) { @@ -56,8 +56,8 @@ public class SimpleBitStorage implements BitStorage { this.mask = (1L << elementBits) - 1L; this.valuesPerLong = (char)(64 / elementBits); diff --git a/patches/unapplied/server/0083-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch b/patches/server/0083-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch similarity index 100% rename from patches/unapplied/server/0083-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch rename to patches/server/0083-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch diff --git a/patches/unapplied/server/0084-Configurable-Player-Collision.patch b/patches/server/0084-Configurable-Player-Collision.patch similarity index 91% rename from patches/unapplied/server/0084-Configurable-Player-Collision.patch rename to patches/server/0084-Configurable-Player-Collision.patch index 6417e02ee..fa5cda3bb 100644 --- a/patches/unapplied/server/0084-Configurable-Player-Collision.patch +++ b/patches/server/0084-Configurable-Player-Collision.patch @@ -32,10 +32,10 @@ index 1294b38262505b0d54089e428df9b363219de1f0..c5339618c195507c1d1482e4e77e262e buf.writeComponent(this.playerPrefix); buf.writeComponent(this.playerSuffix); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 16dbd40ab7394450fd97ced74954ae1554c79aa8..66ba45e0a3c4970df9f8b3a0b8b5cfdaf597e40c 100644 +index 68a4fa890250f6c54367cbe319dd9485c988bbb7..4a84a0cea0ccc5de699c5b1e1a6686a72b954e40 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -162,6 +162,7 @@ import net.minecraft.world.level.storage.loot.LootTables; +@@ -150,6 +150,7 @@ import net.minecraft.world.level.storage.loot.LootTables; import net.minecraft.world.level.storage.loot.PredicateManager; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; @@ -43,7 +43,7 @@ index 16dbd40ab7394450fd97ced74954ae1554c79aa8..66ba45e0a3c4970df9f8b3a0b8b5cfda import org.apache.commons.lang3.Validate; import org.slf4j.Logger; -@@ -608,6 +609,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop playersByName = new java.util.HashMap<>(); @@ -84,7 +84,7 @@ index 68835bcd519e41808669df51c0a9b04aa21727cb..3d3e647fbfbb8007b6e7dc87808d63ca public PlayerList(MinecraftServer server, RegistryAccess.Frozen registryManager, PlayerDataStorage saveHandler, int maxPlayers) { this.cserver = server.server = new CraftServer((DedicatedServer) server, this); -@@ -385,6 +387,13 @@ public abstract class PlayerList { +@@ -389,6 +391,13 @@ public abstract class PlayerList { player.initInventoryMenu(); // CraftBukkit - Moved from above, added world @@ -98,7 +98,7 @@ index 68835bcd519e41808669df51c0a9b04aa21727cb..3d3e647fbfbb8007b6e7dc87808d63ca PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); } -@@ -504,6 +513,16 @@ public abstract class PlayerList { +@@ -508,6 +517,16 @@ public abstract class PlayerList { entityplayer.doTick(); // SPIGOT-924 // CraftBukkit end @@ -115,7 +115,7 @@ index 68835bcd519e41808669df51c0a9b04aa21727cb..3d3e647fbfbb8007b6e7dc87808d63ca this.save(entityplayer); if (entityplayer.isPassenger()) { Entity entity = entityplayer.getRootVehicle(); -@@ -1132,6 +1151,13 @@ public abstract class PlayerList { +@@ -1136,6 +1155,13 @@ public abstract class PlayerList { } // CraftBukkit end diff --git a/patches/unapplied/server/0085-Add-handshake-event-to-allow-plugins-to-handle-clien.patch b/patches/server/0085-Add-handshake-event-to-allow-plugins-to-handle-clien.patch similarity index 94% rename from patches/unapplied/server/0085-Add-handshake-event-to-allow-plugins-to-handle-clien.patch rename to patches/server/0085-Add-handshake-event-to-allow-plugins-to-handle-clien.patch index b501dca4d..0f1b5b554 100644 --- a/patches/unapplied/server/0085-Add-handshake-event-to-allow-plugins-to-handle-clien.patch +++ b/patches/server/0085-Add-handshake-event-to-allow-plugins-to-handle-clien.patch @@ -6,11 +6,11 @@ Subject: [PATCH] Add handshake event to allow plugins to handle client diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java -index 02613b1f36ecd7f354ac00022af3c193b299c1b1..63cc89c7769bfcc9d663a1827ad525e3ddd82fe5 100644 +index eb94a7a156df1616f8093bf2f082de3754917086..9016aced079108aeae09f030a672467a953ef93f 100644 --- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java -@@ -88,9 +88,36 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL - this.connection.disconnect(chatmessage); +@@ -87,9 +87,36 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL + this.connection.disconnect(ichatmutablecomponent); } else { this.connection.setListener(new ServerLoginPacketListenerImpl(this.server, this.connection)); + // Paper start - handshake event diff --git a/patches/unapplied/server/0086-Configurable-RCON-IP-address.patch b/patches/server/0086-Configurable-RCON-IP-address.patch similarity index 77% rename from patches/unapplied/server/0086-Configurable-RCON-IP-address.patch rename to patches/server/0086-Configurable-RCON-IP-address.patch index 1dc723e8a..40f64fe29 100644 --- a/patches/unapplied/server/0086-Configurable-RCON-IP-address.patch +++ b/patches/server/0086-Configurable-RCON-IP-address.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable RCON IP address For servers with multiple IP's, ability to bind to a specific interface. diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index 703403222763e42566552f2c6f3852e07f727f76..a7938420f6840b9d3880fb895aaf709ebd844312 100644 +index cfff4a6711b2acd4b40ec80544c169a46ded3f79..cc92e2c5e6b62c6a67d0a6534b078e3a6029daf5 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -74,6 +74,8 @@ public class DedicatedServerProperties extends Settings { +@@ -152,6 +154,10 @@ public class DedicatedServerProperties extends Settings 11 - state.getValue(AGE) - state.getLightBlock(world, pos) && this.slightlyMelt(state, world, pos)) { BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(); diff --git a/patches/unapplied/server/0089-remove-null-possibility-for-getServer-singleton.patch b/patches/server/0089-remove-null-possibility-for-getServer-singleton.patch similarity index 76% rename from patches/unapplied/server/0089-remove-null-possibility-for-getServer-singleton.patch rename to patches/server/0089-remove-null-possibility-for-getServer-singleton.patch index 5a2e76c50..ddff56c75 100644 --- a/patches/unapplied/server/0089-remove-null-possibility-for-getServer-singleton.patch +++ b/patches/server/0089-remove-null-possibility-for-getServer-singleton.patch @@ -6,10 +6,10 @@ Subject: [PATCH] remove null possibility for getServer singleton to stop IDE complaining about potential NPE diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 66ba45e0a3c4970df9f8b3a0b8b5cfdaf597e40c..9e95cb40ce6839de2582e71576b73cdf8787a042 100644 +index 4a84a0cea0ccc5de699c5b1e1a6686a72b954e40..b62d7b2e974f9eafb8e60ddb9ed58273b0393185 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -185,6 +185,7 @@ import co.aikar.timings.MinecraftTimings; // Paper +@@ -180,6 +180,7 @@ import co.aikar.timings.MinecraftTimings; // Paper public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements CommandSource, AutoCloseable { @@ -17,15 +17,15 @@ index 66ba45e0a3c4970df9f8b3a0b8b5cfdaf597e40c..9e95cb40ce6839de2582e71576b73cdf public static final Logger LOGGER = LogUtils.getLogger(); public static final String VANILLA_BRAND = "vanilla"; private static final float AVERAGE_TICK_TIME_SMOOTHING = 0.8F; -@@ -319,6 +320,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop registryreadops, Thread thread, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PackRepository resourcepackrepository, WorldStem worldstem, Proxy proxy, DataFixer datafixer, @Nullable MinecraftSessionService minecraftsessionservice, @Nullable GameProfileRepository gameprofilerepository, @Nullable GameProfileCache usercache, ChunkProgressListenerFactory worldloadlistenerfactory) { + public MinecraftServer(OptionSet options, DataPackConfig datapackconfiguration, DynamicOps registryreadops, Thread thread, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PackRepository resourcepackrepository, WorldStem worldstem, Proxy proxy, DataFixer datafixer, Services services, ChunkProgressListenerFactory worldloadlistenerfactory) { super("Server"); + SERVER = this; // Paper - better singleton this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; this.profiler = this.metricsRecorder.getProfiler(); this.onMetricsRecordingStopped = (methodprofilerresults) -> { -@@ -2306,7 +2308,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop transaction = new java.util.ArrayList(); private int maxStack = MAX_STACK; -@@ -200,12 +201,13 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme +@@ -134,12 +135,14 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme @Override protected void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); -+ this.lootableData.saveNbt(nbt); // Paper - if (this.lootTable != null) { - nbt.putString("LootTable", this.lootTable.toString()); - if (this.lootTableSeed != 0L) { - nbt.putLong("LootTableSeed", this.lootTableSeed); - } -- } else { -+ } if (true) { // Paper - Always save the items, Table may stick around - ContainerHelper.saveAllItems(nbt, this.itemStacks); - } ++ this.lootableData.loadNbt(nbt); // Paper + this.addChestVehicleSaveData(nbt); + } -@@ -214,11 +216,12 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme @Override protected void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); + this.lootableData.loadNbt(nbt); // Paper - this.itemStacks = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); - if (nbt.contains("LootTable", 8)) { - this.lootTable = new ResourceLocation(nbt.getString("LootTable")); - this.lootTableSeed = nbt.getLong("LootTableSeed"); -- } else { -+ } if (true) { // Paper - always load the items, table may still remain - ContainerHelper.loadAllItems(nbt, this.itemStacks); - } - -@@ -254,14 +257,15 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme + this.readChestVehicleSaveData(nbt); } - public void unpackLootTable(@Nullable Player player) { -- if (this.lootTable != null && this.level.getServer() != null) { -+ if (this.lootableData.shouldReplenish(player) && this.level.getServer() != null) { // Paper - LootTable loottable = this.level.getServer().getLootTables().get(this.lootTable); +diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java +index abb35b675fc075c1004a85cd8f0c6f65d290a809..64097c718e906d2afb469202a0c9b82435e2926c 100644 +--- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java ++++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java +@@ -65,12 +65,14 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain + @Override + protected void addAdditionalSaveData(CompoundTag nbt) { + super.addAdditionalSaveData(nbt); ++ this.lootableData.loadNbt(nbt); // Paper + this.addChestVehicleSaveData(nbt); + } - if (player instanceof ServerPlayer) { - CriteriaTriggers.GENERATE_LOOT.trigger((ServerPlayer) player, this.lootTable); + @Override + protected void readAdditionalSaveData(CompoundTag nbt) { + super.readAdditionalSaveData(nbt); ++ this.lootableData.loadNbt(nbt); // Paper + this.readChestVehicleSaveData(nbt); + } + +diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java b/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java +index e2a9782e0ae60eb5557dce0831084c5722687df6..8b740ae757721e02761939f8b50199e09f5c9136 100644 +--- a/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java ++++ b/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java +@@ -61,7 +61,7 @@ public interface ContainerEntity extends Container, MenuProvider { + if (this.getLootTableSeed() != 0L) { + nbt.putLong("LootTableSeed", this.getLootTableSeed()); } +- } else { ++ } else if (true) { // Paper - always load the items, table may still remain + ContainerHelper.saveAllItems(nbt, this.getItemStacks()); + } -- this.lootTable = null; -+ //this.lootTable = null; // Paper -+ this.lootableData.processRefill(player); // Paper - LootContext.Builder loottableinfo_builder = (new LootContext.Builder((ServerLevel) this.level)).withParameter(LootContextParams.ORIGIN, this.position()).withOptionalRandomSeed(this.lootTableSeed); +@@ -72,7 +72,7 @@ public interface ContainerEntity extends Container, MenuProvider { + if (nbt.contains("LootTable", 8)) { + this.setLootTable(new ResourceLocation(nbt.getString("LootTable"))); + this.setLootTableSeed(nbt.getLong("LootTableSeed")); +- } else { ++ } else if (true) { // Paper - always load the items, table may still remain + ContainerHelper.loadAllItems(nbt, this.getItemStacks()); + } - if (player != null) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -index b79d9d26a8e60f9c0ecd69e9c2f9cfd087e21d23..f23fff80d07ac7d06715efe67cb49ebbe704967b 100644 +index 216fc20326d71121098430dc1b9f7477265a91b7..e3bee2df77d87630e96621470e940d9d9e152e7f 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java @@ -28,6 +28,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc diff --git a/patches/unapplied/server/0092-Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch b/patches/server/0092-Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch similarity index 100% rename from patches/unapplied/server/0092-Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch rename to patches/server/0092-Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch diff --git a/patches/unapplied/server/0093-System-property-for-disabling-watchdoge.patch b/patches/server/0093-System-property-for-disabling-watchdoge.patch similarity index 100% rename from patches/unapplied/server/0093-System-property-for-disabling-watchdoge.patch rename to patches/server/0093-System-property-for-disabling-watchdoge.patch diff --git a/patches/unapplied/server/0094-Async-GameProfileCache-saving.patch b/patches/server/0094-Async-GameProfileCache-saving.patch similarity index 89% rename from patches/unapplied/server/0094-Async-GameProfileCache-saving.patch rename to patches/server/0094-Async-GameProfileCache-saving.patch index 40c10d3fe..c2f36b005 100644 --- a/patches/unapplied/server/0094-Async-GameProfileCache-saving.patch +++ b/patches/server/0094-Async-GameProfileCache-saving.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Async GameProfileCache saving diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9e95cb40ce6839de2582e71576b73cdf8787a042..49c354fa65e0047a367f0a5410c79b8da8693df9 100644 +index b62d7b2e974f9eafb8e60ddb9ed58273b0393185..9e5271d39e4a15a71c59a8560edd59c75ec6dd52 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -985,7 +985,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions @@ -18,7 +18,7 @@ index 522b33f8d78468f07786dc7d6f184d2bc49dfc3f..9abe4b8bbd97c30d84964d3c66a61e8b public CraftWorld getWorld() { return this.world; diff --git a/src/main/java/net/minecraft/world/level/block/RedstoneTorchBlock.java b/src/main/java/net/minecraft/world/level/block/RedstoneTorchBlock.java -index 298928f9dae5fc307872f4cb286b644ed5dbcfde..954b86bea345a8e0e3a8dd425f356db6f5cd496f 100644 +index 9b6f8508d16bcecd9dc148f75598655e3585f175..da07fce0cf7c9fbdb57d2c59e431b59bf583bf50 100644 --- a/src/main/java/net/minecraft/world/level/block/RedstoneTorchBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RedstoneTorchBlock.java @@ -21,7 +21,7 @@ import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit @@ -32,7 +32,7 @@ index 298928f9dae5fc307872f4cb286b644ed5dbcfde..954b86bea345a8e0e3a8dd425f356db6 public static final int RESTART_DELAY = 160; @@ -72,11 +72,15 @@ public class RedstoneTorchBlock extends TorchBlock { @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { + public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { boolean flag = this.hasNeighborSignal(world, pos, state); - List list = (List) RedstoneTorchBlock.RECENT_TOGGLES.get(world); - diff --git a/patches/unapplied/server/0097-Add-server-name-parameter.patch b/patches/server/0097-Add-server-name-parameter.patch similarity index 90% rename from patches/unapplied/server/0097-Add-server-name-parameter.patch rename to patches/server/0097-Add-server-name-parameter.patch index 4c801e60c..8cacd0c6d 100644 --- a/patches/unapplied/server/0097-Add-server-name-parameter.patch +++ b/patches/server/0097-Add-server-name-parameter.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add server-name parameter diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index a0ac6ba17a46bac4c5363a32e078ab89b260bac8..b3d62affc6558d2c3082a75793ebd8b521eb1df6 100644 +index f017abbf3418c6000648950dc05b177f9d41f97b..3f531ec9232568243a15ad1b238839b8036a2d82 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -149,6 +149,14 @@ public class Main { diff --git a/patches/unapplied/server/0098-Only-send-Dragon-Wither-Death-sounds-to-same-world.patch b/patches/server/0098-Only-send-Dragon-Wither-Death-sounds-to-same-world.patch similarity index 95% rename from patches/unapplied/server/0098-Only-send-Dragon-Wither-Death-sounds-to-same-world.patch rename to patches/server/0098-Only-send-Dragon-Wither-Death-sounds-to-same-world.patch index e7dc00e60..b053d8f89 100644 --- a/patches/unapplied/server/0098-Only-send-Dragon-Wither-Death-sounds-to-same-world.patch +++ b/patches/server/0098-Only-send-Dragon-Wither-Death-sounds-to-same-world.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Only send Dragon/Wither Death sounds to same world Also fix view distance lookup diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 10da58381202f8ec3d49aa2ed08faf30c435883b..89bd094fc31969284d831eaab47a131914d4fb13 100644 +index 13fa9c47a95571d63b590c595e15e9a15c2f6a65..7b64b14b1d2c0e242a5d8e8602e49b185fcf8839 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -637,8 +637,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -633,8 +633,9 @@ public class EnderDragon extends Mob implements Enemy { if (this.dragonDeathTime == 1 && !this.isSilent()) { // CraftBukkit start - Use relative location for far away sounds // this.world.b(1028, this.getChunkCoordinates(), 0); diff --git a/patches/unapplied/server/0099-Fix-Old-Sign-Conversion.patch b/patches/server/0099-Fix-Old-Sign-Conversion.patch similarity index 94% rename from patches/unapplied/server/0099-Fix-Old-Sign-Conversion.patch rename to patches/server/0099-Fix-Old-Sign-Conversion.patch index a26c037a5..624d45837 100644 --- a/patches/unapplied/server/0099-Fix-Old-Sign-Conversion.patch +++ b/patches/server/0099-Fix-Old-Sign-Conversion.patch @@ -21,7 +21,7 @@ index c518704386f14cd033307dd976455c35760d7236..148e79ae4e24fe16dbbb17550c3f258d private final BlockEntityType type; @Nullable diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index e390cfea5bed64284a97c88a717503f07f073a30..3a2e2adeefe73981b443216724270023408c1feb 100644 +index 715873e52708762b25c29caf6d41d7cb8f79ce57..39bd98b9496e4a27fd69a2de7c83c40689017ebc 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java @@ -93,7 +93,7 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C @@ -34,7 +34,7 @@ index e390cfea5bed64284a97c88a717503f07f073a30..3a2e2adeefe73981b443216724270023 continue; } diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java -index cf8a38b7d55d229ac556f8a93b25c155381df3a2..129ebb095c2280376a59b54920e5ff90cf1f465a 100644 +index 71206f52a234a17db13062d975cbf66d1ffebc9a..f3fcd345178efd4917ef79cb141275a987f99e58 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java +++ b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java @@ -284,7 +284,9 @@ public class StructureTemplate { diff --git a/patches/unapplied/server/0100-Avoid-blocking-on-Network-Manager-creation.patch b/patches/server/0100-Avoid-blocking-on-Network-Manager-creation.patch similarity index 90% rename from patches/unapplied/server/0100-Avoid-blocking-on-Network-Manager-creation.patch rename to patches/server/0100-Avoid-blocking-on-Network-Manager-creation.patch index 56a2d048a..5650234bb 100644 --- a/patches/unapplied/server/0100-Avoid-blocking-on-Network-Manager-creation.patch +++ b/patches/server/0100-Avoid-blocking-on-Network-Manager-creation.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Avoid blocking on Network Manager creation Per Paper issue 294 diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java -index 522aa6a0b4b365a78cf3fce2604d71fb88d30388..e174d9803e557470068f7893260d55a042888517 100644 +index 0b657174309b6eaee0c8a2d6c17dd467d278739c..5e1a6f2cd2d0d9c6b17c446fa782e4089cc138d5 100644 --- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java +++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java -@@ -61,6 +61,15 @@ public class ServerConnectionListener { +@@ -62,6 +62,15 @@ public class ServerConnectionListener { public volatile boolean running; private final List channels = Collections.synchronizedList(Lists.newArrayList()); final List connections = Collections.synchronizedList(Lists.newArrayList()); @@ -25,7 +25,7 @@ index 522aa6a0b4b365a78cf3fce2604d71fb88d30388..e174d9803e557470068f7893260d55a0 public ServerConnectionListener(MinecraftServer server) { this.server = server; -@@ -96,7 +105,8 @@ public class ServerConnectionListener { +@@ -97,7 +106,8 @@ public class ServerConnectionListener { int j = ServerConnectionListener.this.server.getRateLimitPacketsPerSecond(); Object object = j > 0 ? new RateKickingConnection(j) : new Connection(PacketFlow.SERVERBOUND); @@ -35,7 +35,7 @@ index 522aa6a0b4b365a78cf3fce2604d71fb88d30388..e174d9803e557470068f7893260d55a0 channel.pipeline().addLast("packet_handler", (ChannelHandler) object); ((Connection) object).setListener(new ServerHandshakePacketListenerImpl(ServerConnectionListener.this.server, (Connection) object)); } -@@ -155,6 +165,7 @@ public class ServerConnectionListener { +@@ -156,6 +166,7 @@ public class ServerConnectionListener { synchronized (this.connections) { // Spigot Start diff --git a/patches/unapplied/server/0101-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch b/patches/server/0101-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch similarity index 85% rename from patches/unapplied/server/0101-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch rename to patches/server/0101-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch index cd84d9aaf..45952ee42 100644 --- a/patches/unapplied/server/0101-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch +++ b/patches/server/0101-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't lookup game profiles that have no UUID and no name diff --git a/src/main/java/net/minecraft/server/players/GameProfileCache.java b/src/main/java/net/minecraft/server/players/GameProfileCache.java -index fdf2557ed19c6ba9c64eddd2876b2434925dcf36..d8acbce8c2f0cc9a93fff044b25629021bf90f75 100644 +index 717a0d1c1f4df7ebd5f4cdd5e24cabe3fb66bf06..87b7a669ef111b2dc40d152fe6fe4e75ff8ccc98 100644 --- a/src/main/java/net/minecraft/server/players/GameProfileCache.java +++ b/src/main/java/net/minecraft/server/players/GameProfileCache.java @@ -101,7 +101,7 @@ public class GameProfileCache { @@ -14,6 +14,6 @@ index fdf2557ed19c6ba9c64eddd2876b2434925dcf36..d8acbce8c2f0cc9a93fff044b2562902 - if (!GameProfileCache.usesAuthentication() && gameprofile == null) { + if (!GameProfileCache.usesAuthentication() && gameprofile == null && !org.apache.commons.lang3.StringUtils.isBlank(name)) { // Paper - Don't lookup a profile with a blank name - UUID uuid = Player.createPlayerUUID(new GameProfile((UUID) null, name)); + UUID uuid = UUIDUtil.getOrCreatePlayerUUID(new GameProfile((UUID) null, name)); return Optional.of(new GameProfile(uuid, name)); diff --git a/patches/unapplied/server/0102-Add-setting-for-proxy-online-mode-status.patch b/patches/server/0102-Add-setting-for-proxy-online-mode-status.patch similarity index 91% rename from patches/unapplied/server/0102-Add-setting-for-proxy-online-mode-status.patch rename to patches/server/0102-Add-setting-for-proxy-online-mode-status.patch index 58f4336c6..8d12e3032 100644 --- a/patches/unapplied/server/0102-Add-setting-for-proxy-online-mode-status.patch +++ b/patches/server/0102-Add-setting-for-proxy-online-mode-status.patch @@ -32,7 +32,7 @@ index 46ec9016e17805664531a61a75fc046e041b0848..01b1eb60894a79bd10a035404cc796ce + } } diff --git a/src/main/java/net/minecraft/server/players/GameProfileCache.java b/src/main/java/net/minecraft/server/players/GameProfileCache.java -index d8acbce8c2f0cc9a93fff044b25629021bf90f75..c4142568c3188c89142799cc4911dd7eae32a45f 100644 +index 87b7a669ef111b2dc40d152fe6fe4e75ff8ccc98..6087fff889458dc09d5a3eb52e7d4b0a77bde809 100644 --- a/src/main/java/net/minecraft/server/players/GameProfileCache.java +++ b/src/main/java/net/minecraft/server/players/GameProfileCache.java @@ -98,6 +98,7 @@ public class GameProfileCache { @@ -53,7 +53,7 @@ index d8acbce8c2f0cc9a93fff044b25629021bf90f75..c4142568c3188c89142799cc4911dd7e public void add(GameProfile profile) { diff --git a/src/main/java/net/minecraft/server/players/OldUsersConverter.java b/src/main/java/net/minecraft/server/players/OldUsersConverter.java -index b7b98832be6178a2bca534bf974519ede977b282..aa3caccc58f1cec8d5f396813d7fc40b05985cc8 100644 +index da98f074ccd5a40c635824112c97fd174c393cb1..fd9c7e4cb637b67fbbcbee6f8e2449c4e62fc344 100644 --- a/src/main/java/net/minecraft/server/players/OldUsersConverter.java +++ b/src/main/java/net/minecraft/server/players/OldUsersConverter.java @@ -66,7 +66,8 @@ public class OldUsersConverter { @@ -67,10 +67,10 @@ index b7b98832be6178a2bca534bf974519ede977b282..aa3caccc58f1cec8d5f396813d7fc40b } else { String[] astring1 = astring; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 93b55593da49e181f8863347c28043a32e1460dc..bc584d676aef3a107000a101db1323d1ea4d68e8 100644 +index f40446e07308dd9f09622dba55933bc3486f80b8..abada046fd469cc5c423c26571d70b5ea062eda1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1703,7 +1703,7 @@ public final class CraftServer implements Server { +@@ -1686,7 +1686,7 @@ public final class CraftServer implements Server { // Spigot Start GameProfile profile = null; // Only fetch an online UUID in online mode diff --git a/patches/unapplied/server/0103-Optimise-BlockState-s-hashCode-equals.patch b/patches/server/0103-Optimise-BlockState-s-hashCode-equals.patch similarity index 95% rename from patches/unapplied/server/0103-Optimise-BlockState-s-hashCode-equals.patch rename to patches/server/0103-Optimise-BlockState-s-hashCode-equals.patch index a827aa97e..53db895e2 100644 --- a/patches/unapplied/server/0103-Optimise-BlockState-s-hashCode-equals.patch +++ b/patches/server/0103-Optimise-BlockState-s-hashCode-equals.patch @@ -37,10 +37,10 @@ index 4d6e7b5889ecb81195c7152225ae8e3343d3408c..0bca0f971dac994bd8b6ecd87e8b33e2 return true; } else if (object instanceof EnumProperty && super.equals(object)) { diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java -index c3ec7f91794d802e5b9ddac3fffccce378dace68..72f508321ebffcca31240fbdd068b4d185454cbc 100644 +index 59b5b22a567e4e2be499a2a35aedb10218a7432a..bdbe0362e49e73c05237f9f3143230e0b03e494e 100644 --- a/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java +++ b/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java -@@ -38,8 +38,7 @@ public class IntegerProperty extends Property { +@@ -35,8 +35,7 @@ public class IntegerProperty extends Property { return this.values; } diff --git a/patches/unapplied/server/0104-Configurable-packet-in-spam-threshold.patch b/patches/server/0104-Configurable-packet-in-spam-threshold.patch similarity index 93% rename from patches/unapplied/server/0104-Configurable-packet-in-spam-threshold.patch rename to patches/server/0104-Configurable-packet-in-spam-threshold.patch index 9fed3d86a..7ddc015b3 100644 --- a/patches/unapplied/server/0104-Configurable-packet-in-spam-threshold.patch +++ b/patches/server/0104-Configurable-packet-in-spam-threshold.patch @@ -23,10 +23,10 @@ index 01b1eb60894a79bd10a035404cc796ce0d3725c8..77e1a4b9b0734734bbcf03b6adc1cf05 + } } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 782e83989b82ca5547f953473b199694ed2f6690..9ab89d4a6e76e450c735733702bba11ef0173f2f 100644 +index 1b92ee3988c1bdcbc751f32bd480b2ad2f588139..f3146f65f8e3ac465763093e7f5b53274d4d3356 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1503,13 +1503,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1534,13 +1534,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser // Spigot start - limit place/interactions private int limitedPackets; private long lastLimitedPacket = -1; diff --git a/patches/unapplied/server/0105-Configurable-flying-kick-messages.patch b/patches/server/0105-Configurable-flying-kick-messages.patch similarity index 86% rename from patches/unapplied/server/0105-Configurable-flying-kick-messages.patch rename to patches/server/0105-Configurable-flying-kick-messages.patch index ee3f0e691..c45c8577b 100644 --- a/patches/unapplied/server/0105-Configurable-flying-kick-messages.patch +++ b/patches/server/0105-Configurable-flying-kick-messages.patch @@ -21,23 +21,23 @@ index 77e1a4b9b0734734bbcf03b6adc1cf0552063d1f..2440e81ef23c3b8c91ca5bdf13347f13 + } } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9ab89d4a6e76e450c735733702bba11ef0173f2f..8a0c3a8f96ed260fa205e1395b4f8e30e563bd34 100644 +index f3146f65f8e3ac465763093e7f5b53274d4d3356..71b595a293e0add1ad9f7e5c3a2694a8a16771aa 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -300,7 +300,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -326,7 +326,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (this.clientIsFloating && !this.player.isSleeping() && !this.player.isPassenger()) { if (++this.aboveGroundTickCount > 80) { ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating too long!", this.player.getName().getString()); -- this.disconnect(new TranslatableComponent("multiplayer.disconnect.flying")); +- this.disconnect(Component.translatable("multiplayer.disconnect.flying")); + this.disconnect(com.destroystokyo.paper.PaperConfig.flyingKickPlayerMessage); // Paper - use configurable kick message return; } } else { -@@ -319,7 +319,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -345,7 +345,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (this.clientVehicleIsFloating && this.player.getRootVehicle().getControllingPassenger() == this.player) { if (++this.aboveGroundVehicleTickCount > 80) { ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating a vehicle too long!", this.player.getName().getString()); -- this.disconnect(new TranslatableComponent("multiplayer.disconnect.flying")); +- this.disconnect(Component.translatable("multiplayer.disconnect.flying")); + this.disconnect(com.destroystokyo.paper.PaperConfig.flyingKickVehicleMessage); // Paper - use configurable kick message return; } diff --git a/patches/unapplied/server/0106-Add-EntityZapEvent.patch b/patches/server/0106-Add-EntityZapEvent.patch similarity index 96% rename from patches/unapplied/server/0106-Add-EntityZapEvent.patch rename to patches/server/0106-Add-EntityZapEvent.patch index f236547b7..23cf3576c 100644 --- a/patches/unapplied/server/0106-Add-EntityZapEvent.patch +++ b/patches/server/0106-Add-EntityZapEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add EntityZapEvent diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 819f694e96dd21bbc47f345fcd9c5714ab44040f..32a961075b41cd84b24398b9d1a4d58f88439d73 100644 +index 2a7c82be934a965ba26dc7bf1f60689360bda487..33d1a6b31afec4dbeb00dcabf50c5840852102d6 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -836,9 +836,17 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/unapplied/server/0107-Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch b/patches/server/0107-Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch similarity index 100% rename from patches/unapplied/server/0107-Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch rename to patches/server/0107-Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch diff --git a/patches/unapplied/server/0108-Cache-user-authenticator-threads.patch b/patches/server/0108-Cache-user-authenticator-threads.patch similarity index 68% rename from patches/unapplied/server/0108-Cache-user-authenticator-threads.patch rename to patches/server/0108-Cache-user-authenticator-threads.patch index a2659f2b4..b884eeb7e 100644 --- a/patches/unapplied/server/0108-Cache-user-authenticator-threads.patch +++ b/patches/server/0108-Cache-user-authenticator-threads.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cache user authenticator threads diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 627931ec09bfb1a84f0659981491cf3b6425aa32..58ef6874cd6c90e6ccc7c39881cc3bf68fba284b 100644 +index ff8773f3671970bd759303f7a4bbc17d4df5a1de..13f8f3a2a6382ef51567cc6f46b573d971f700f6 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -116,6 +116,18 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -120,6 +120,18 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener } @@ -27,28 +27,28 @@ index 627931ec09bfb1a84f0659981491cf3b6425aa32..58ef6874cd6c90e6ccc7c39881cc3bf6 // Spigot start public void initUUID() { -@@ -210,8 +222,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener - this.connection.send(new ClientboundHelloPacket("", this.server.getKeyPair().getPublic().getEncoded(), this.nonce)); - } else { - // Spigot start -- new Thread("User Authenticator #" + ServerLoginPacketListenerImpl.UNIQUE_THREAD_ID.incrementAndGet()) { +@@ -258,8 +270,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener + this.connection.send(new ClientboundHelloPacket("", this.server.getKeyPair().getPublic().getEncoded(), this.nonce)); + } else { + // Spigot start +- new Thread("User Authenticator #" + ServerLoginPacketListenerImpl.UNIQUE_THREAD_ID.incrementAndGet()) { - + // Paper start - Cache authenticator threads + authenticatorPool.execute(new Runnable() { - @Override - public void run() { - try { -@@ -222,7 +234,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener - server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + ServerLoginPacketListenerImpl.this.gameProfile.getName(), ex); + @Override + public void run() { + try { +@@ -270,7 +282,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener + server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + ServerLoginPacketListenerImpl.this.gameProfile.getName(), ex); + } } - } -- }.start(); +- }.start(); + }); + // Paper end - // Spigot end - } + // Spigot end + } -@@ -257,7 +270,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -311,7 +324,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener throw new IllegalStateException("Protocol error", cryptographyexception); } @@ -58,7 +58,7 @@ index 627931ec09bfb1a84f0659981491cf3b6425aa32..58ef6874cd6c90e6ccc7c39881cc3bf6 public void run() { GameProfile gameprofile = ServerLoginPacketListenerImpl.this.gameProfile; -@@ -302,10 +316,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -356,10 +370,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener return ServerLoginPacketListenerImpl.this.server.getPreventProxyConnections() && socketaddress instanceof InetSocketAddress ? ((InetSocketAddress) socketaddress).getAddress() : null; } diff --git a/patches/unapplied/server/0109-Allow-Reloading-of-Command-Aliases.patch b/patches/server/0109-Allow-Reloading-of-Command-Aliases.patch similarity index 90% rename from patches/unapplied/server/0109-Allow-Reloading-of-Command-Aliases.patch rename to patches/server/0109-Allow-Reloading-of-Command-Aliases.patch index ffd0118c2..901dd8acb 100644 --- a/patches/unapplied/server/0109-Allow-Reloading-of-Command-Aliases.patch +++ b/patches/server/0109-Allow-Reloading-of-Command-Aliases.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow Reloading of Command Aliases Reload the aliases stored in commands.yml diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index bc584d676aef3a107000a101db1323d1ea4d68e8..f3024dcf7d29359931af1a2d00aa429a75e449a1 100644 +index abada046fd469cc5c423c26571d70b5ea062eda1..ae1cfe01f285a773ab9d4bdb9b0dd897615f0b82 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2547,5 +2547,24 @@ public final class CraftServer implements Server { +@@ -2530,5 +2530,24 @@ public final class CraftServer implements Server { DefaultPermissions.registerCorePermissions(); CraftDefaultPermissions.registerCorePermissions(); } diff --git a/patches/unapplied/server/0110-Add-source-to-PlayerExpChangeEvent.patch b/patches/server/0110-Add-source-to-PlayerExpChangeEvent.patch similarity index 100% rename from patches/unapplied/server/0110-Add-source-to-PlayerExpChangeEvent.patch rename to patches/server/0110-Add-source-to-PlayerExpChangeEvent.patch diff --git a/patches/unapplied/server/0111-Add-ProjectileCollideEvent.patch b/patches/server/0111-Add-ProjectileCollideEvent.patch similarity index 96% rename from patches/unapplied/server/0111-Add-ProjectileCollideEvent.patch rename to patches/server/0111-Add-ProjectileCollideEvent.patch index 2d50deada..5a9b67043 100644 --- a/patches/unapplied/server/0111-Add-ProjectileCollideEvent.patch +++ b/patches/server/0111-Add-ProjectileCollideEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add ProjectileCollideEvent diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 68b15e3061e1e8637a34ee5e0f0953dd23645f49..91505b592e95240e0dc71a17906ab48f5eb94f34 100644 +index 046082ab7deb21574d9471b78a39a4a6bb296c2f..62beefb6693d1801d9d8994c7247dca5bd646b0b 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -225,6 +225,17 @@ public abstract class AbstractArrow extends Projectile { +@@ -226,6 +226,17 @@ public abstract class AbstractArrow extends Projectile { } } @@ -27,7 +27,7 @@ index 68b15e3061e1e8637a34ee5e0f0953dd23645f49..91505b592e95240e0dc71a17906ab48f this.preOnHit((HitResult) object); // CraftBukkit - projectile hit event this.hasImpulse = true; diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java -index 02b0622d23521090a0725e2b24cc1231e416ba0c..3de3258418f638a1b523c6a9178bb3ef1aaf2915 100644 +index 867e50769af3c5bdbed15cfd637e429dcfcb6920..d71dc286673fa7ed708be5bec4c5a6868874c090 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java @@ -11,6 +11,7 @@ import net.minecraft.world.entity.Entity; diff --git a/patches/unapplied/server/0112-Prevent-Pathfinding-out-of-World-Border.patch b/patches/server/0112-Prevent-Pathfinding-out-of-World-Border.patch similarity index 91% rename from patches/unapplied/server/0112-Prevent-Pathfinding-out-of-World-Border.patch rename to patches/server/0112-Prevent-Pathfinding-out-of-World-Border.patch index df13150cc..266eb9f28 100644 --- a/patches/unapplied/server/0112-Prevent-Pathfinding-out-of-World-Border.patch +++ b/patches/server/0112-Prevent-Pathfinding-out-of-World-Border.patch @@ -13,10 +13,10 @@ by adding code to all overrides in: to return BLOCKED if it is outside the world border. diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index 66a2813b0b4fc321d24dde4d51dbf2dc81e6149d..7991baa181d60ac037fd859278d00274ddb42be8 100644 +index ff1e04e5e3b8099b0b71eda1c0de864c809c5029..649c2fdba307d986d13916bf90e311c862ccefc1 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -@@ -155,7 +155,7 @@ public abstract class PathNavigation { +@@ -157,7 +157,7 @@ public abstract class PathNavigation { // Paper start - Pathfind event boolean copiedSet = false; for (BlockPos possibleTarget : positions) { diff --git a/patches/unapplied/server/0113-Optimize-World.isLoaded-BlockPosition-Z.patch b/patches/server/0113-Optimize-World.isLoaded-BlockPosition-Z.patch similarity index 86% rename from patches/unapplied/server/0113-Optimize-World.isLoaded-BlockPosition-Z.patch rename to patches/server/0113-Optimize-World.isLoaded-BlockPosition-Z.patch index c6fb2bcab..a00d34dae 100644 --- a/patches/unapplied/server/0113-Optimize-World.isLoaded-BlockPosition-Z.patch +++ b/patches/server/0113-Optimize-World.isLoaded-BlockPosition-Z.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize World.isLoaded(BlockPosition)Z Reduce method invocations for World.isLoaded(BlockPosition)Z diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 9abe4b8bbd97c30d84964d3c66a61e8b43140adb..567cc347af00eed98fdf8832ef6c9468332b94e4 100644 +index 4b5d9b90658efe43fcb346dd94dc1e3372809b0e..b28fc4cf5deb543e78b91547c1ab7e1ab9e6f0e4 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -319,6 +319,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -330,6 +330,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return chunk == null ? null : chunk.getFluidState(blockposition); } diff --git a/patches/unapplied/server/0114-Bound-Treasure-Maps-to-World-Border.patch b/patches/server/0114-Bound-Treasure-Maps-to-World-Border.patch similarity index 76% rename from patches/unapplied/server/0114-Bound-Treasure-Maps-to-World-Border.patch rename to patches/server/0114-Bound-Treasure-Maps-to-World-Border.patch index 8217544b6..9c764f4aa 100644 --- a/patches/unapplied/server/0114-Bound-Treasure-Maps-to-World-Border.patch +++ b/patches/server/0114-Bound-Treasure-Maps-to-World-Border.patch @@ -34,14 +34,14 @@ index 6ec5a1525d0b8ced8fe78d3eab29c5eb82996844..2442c287a7f26cfee10a19e9015558cd return (double) pos.getMaxBlockX() > this.getMinX() && (double) pos.getMinBlockX() < this.getMaxX() && (double) pos.getMaxBlockZ() > this.getMinZ() && (double) pos.getMinBlockZ() < this.getMaxZ(); } diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java -index 30ee07433cfee7c7911dcea6d8bfc58eacf5833a..fff5c9d40a0bab8642376db3ec25cc1e8d666fa6 100644 +index 91666d0c8116353b80d49941f17a3a8405eb50a7..0f92f2906195f5b2b70ca02a46fa111a46f8f18f 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java -@@ -440,6 +440,7 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource { - int l1 = i + i1 * j1; - int i2 = j + i1 * k1; - ChunkPos chunkcoordintpair = randomspreadstructureplacement.getPotentialFeatureChunk(l, l1, i2); -+ if (!iworldreader.getWorldBorder().isChunkInBounds(chunkcoordintpair.x, chunkcoordintpair.z)) { continue; } // Paper - Iterator iterator = set.iterator(); +@@ -387,6 +387,7 @@ public abstract class ChunkGenerator { - while (iterator.hasNext()) { + while (iterator.hasNext()) { + ChunkPos chunkcoordintpair = (ChunkPos) iterator.next(); ++ if (!world.getWorldBorder().isChunkInBounds(chunkcoordintpair.x, chunkcoordintpair.z)) { continue; } // Paper + + blockposition_mutableblockposition.set(SectionPos.sectionToBlockCoord(chunkcoordintpair.x, 8), 32, SectionPos.sectionToBlockCoord(chunkcoordintpair.z, 8)); + double d1 = blockposition_mutableblockposition.distSqr(center); diff --git a/patches/unapplied/server/0115-Configurable-Cartographer-Treasure-Maps.patch b/patches/server/0115-Configurable-Cartographer-Treasure-Maps.patch similarity index 83% rename from patches/unapplied/server/0115-Configurable-Cartographer-Treasure-Maps.patch rename to patches/server/0115-Configurable-Cartographer-Treasure-Maps.patch index 3ed444dcb..40af4aae0 100644 --- a/patches/unapplied/server/0115-Configurable-Cartographer-Treasure-Maps.patch +++ b/patches/server/0115-Configurable-Cartographer-Treasure-Maps.patch @@ -51,28 +51,28 @@ index 0b5e223594ff95b8ba7c300d4a66ca7a17e53802..8451982ba4fc9522f2d77f68fc63a0e1 + } } diff --git a/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java b/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java -index 7eda0af21ce7662e9bb6d47c79e175a060a8bb13..d595c82f850bb04657a86748d7e04695f934846f 100644 +index f95999daa1955dd4d919d0e668fe099901a0481c..7360a0a70ddb3dc055d3ebc62071cb5327094e8e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java +++ b/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java @@ -386,7 +386,8 @@ public class VillagerTrades { return null; } else { ServerLevel serverLevel = (ServerLevel)entity.level; -- BlockPos blockPos = serverLevel.findNearestMapFeature(this.destination, entity.blockPosition(), 100, true); +- BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, entity.blockPosition(), 100, true); + if (!serverLevel.paperConfig.enableTreasureMaps) return null; // Paper -+ BlockPos blockPos = serverLevel.findNearestMapFeature(this.destination, entity.blockPosition(), 100, !serverLevel.paperConfig.treasureMapsAlreadyDiscoveredVillager); // Paper ++ BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, entity.blockPosition(), 100, !serverLevel.paperConfig.treasureMapsAlreadyDiscoveredVillager); // Paper if (blockPos != null) { ItemStack itemStack = MapItem.create(serverLevel, blockPos.getX(), blockPos.getZ(), (byte)2, true, true); MapItem.renderBiomePreviewMap(serverLevel, itemStack); diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java -index 385cae45ef8cbaf9f09472585e6f639eea3e0331..a84cef6a10e3d7fdcd02ef6774163785dc3c350c 100644 +index 321384730cacbdc22eedc53651e4d24f06c73b99..fa1387ce6029198109bed258c559cd008f531c08 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java @@ -68,7 +68,16 @@ public class ExplorationMapFunction extends LootItemConditionalFunction { Vec3 vec3 = context.getParamOrNull(LootContextParams.ORIGIN); if (vec3 != null) { ServerLevel serverLevel = context.getLevel(); -- BlockPos blockPos = serverLevel.findNearestMapFeature(this.destination, new BlockPos(vec3), this.searchRadius, this.skipKnownStructures); +- BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, new BlockPos(vec3), this.searchRadius, this.skipKnownStructures); + // Paper start + if (!serverLevel.paperConfig.enableTreasureMaps) { + /* @@ -82,7 +82,7 @@ index 385cae45ef8cbaf9f09472585e6f639eea3e0331..a84cef6a10e3d7fdcd02ef6774163785 + return stack; + } + // Paper end -+ BlockPos blockPos = serverLevel.findNearestMapFeature(this.destination, new BlockPos(vec3), this.searchRadius, serverLevel.paperConfig.treasureMapsAlreadyDiscoveredLootTable == null ? this.skipKnownStructures : serverLevel.paperConfig.treasureMapsAlreadyDiscoveredLootTable); // Paper ++ BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, new BlockPos(vec3), this.searchRadius, serverLevel.paperConfig.treasureMapsAlreadyDiscoveredLootTable == null ? this.skipKnownStructures : serverLevel.paperConfig.treasureMapsAlreadyDiscoveredLootTable); // Paper if (blockPos != null) { ItemStack itemStack = MapItem.create(serverLevel, blockPos.getX(), blockPos.getZ(), this.zoom, true, true); MapItem.renderBiomePreviewMap(serverLevel, itemStack); diff --git a/patches/unapplied/server/0116-Optimize-ItemStack.isEmpty.patch b/patches/server/0116-Optimize-ItemStack.isEmpty.patch similarity index 84% rename from patches/unapplied/server/0116-Optimize-ItemStack.isEmpty.patch rename to patches/server/0116-Optimize-ItemStack.isEmpty.patch index d850c3dd8..e79f33056 100644 --- a/patches/unapplied/server/0116-Optimize-ItemStack.isEmpty.patch +++ b/patches/server/0116-Optimize-ItemStack.isEmpty.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize ItemStack.isEmpty() Remove hashMap lookup every check, simplify code to remove ternary diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index d66cc030dcd3d98f57803938c8c06342a028ee88..65189af7acc3e60fc7f2bfe82128ada981bf1271 100644 +index 751c23e3f12b44667c0ae36c0712e498d73ab16e..a2426b71830d5c39fff04cedaa7569abe332f92a 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -245,7 +245,7 @@ public final class ItemStack { +@@ -247,7 +247,7 @@ public final class ItemStack { } public boolean isEmpty() { diff --git a/patches/unapplied/server/0117-Add-API-methods-to-control-if-armour-stands-can-move.patch b/patches/server/0117-Add-API-methods-to-control-if-armour-stands-can-move.patch similarity index 93% rename from patches/unapplied/server/0117-Add-API-methods-to-control-if-armour-stands-can-move.patch rename to patches/server/0117-Add-API-methods-to-control-if-armour-stands-can-move.patch index c641c7f9f..6b1910073 100644 --- a/patches/unapplied/server/0117-Add-API-methods-to-control-if-armour-stands-can-move.patch +++ b/patches/server/0117-Add-API-methods-to-control-if-armour-stands-can-move.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add API methods to control if armour stands can move diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index a02fe7542c7809d98d8ec68f1013594ee86ccb3f..a82503bc791b5b01e509b333e9d5baa7abbb60b8 100644 +index bd0f3295932220e88dfd72b1719651b132a325f9..def35ca400cb315a9eea035026412b69ec51b1a8 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -91,6 +91,7 @@ public class ArmorStand extends LivingEntity { @@ -16,7 +16,7 @@ index a02fe7542c7809d98d8ec68f1013594ee86ccb3f..a82503bc791b5b01e509b333e9d5baa7 public ArmorStand(EntityType type, Level world) { super(type, world); -@@ -926,4 +927,13 @@ public class ArmorStand extends LivingEntity { +@@ -925,4 +926,13 @@ public class ArmorStand extends LivingEntity { public boolean canBeSeenByAnyone() { return !this.isInvisible() && !this.isMarker(); } diff --git a/patches/unapplied/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch b/patches/unapplied/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch deleted file mode 100644 index 9e15d0278..000000000 --- a/patches/unapplied/server/0081-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch +++ /dev/null @@ -1,18 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Aikar -Date: Sun, 3 Apr 2016 17:48:50 -0400 -Subject: [PATCH] Fix Cancelling BlockPlaceEvent triggering physics - - -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index b2965b136405bce16f1433411df5beab15231113..522b33f8d78468f07786dc7d6f184d2bc49dfc3f 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -544,6 +544,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - public void setBlocksDirty(BlockPos pos, BlockState old, BlockState updated) {} - - public void updateNeighborsAt(BlockPos pos, Block block) { -+ if (captureBlockStates) { return; } // Paper - Cancel all physics during placement - this.neighborChanged(pos.west(), block, pos); - this.neighborChanged(pos.east(), block, pos); - this.neighborChanged(pos.below(), block, pos);