aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOwen1212055 <[email protected]>2024-04-25 08:36:48 -0400
committerOwen1212055 <[email protected]>2024-04-25 08:36:48 -0400
commit345b5c1c4c3f99756029f039b8e063ed6f8c3181 (patch)
treec229a0fd351d859a98e60ccce197b358a8a9fb62
parent6da0d8cc91be3b8e1c84c0436f49654cdde6de2f (diff)
downloadPaper-345b5c1c4c3f99756029f039b8e063ed6f8c3181.tar.gz
Paper-345b5c1c4c3f99756029f039b8e063ed6f8c3181.zip
Patches!!!!!!! (we are done)
-rw-r--r--patches/server/1004-Write-SavedData-IO-async.patch2
-rw-r--r--patches/server/1035-Fix-and-optimise-world-force-upgrading.patch (renamed from patches/unapplied/server/1042-Fix-and-optimise-world-force-upgrading.patch)12
-rw-r--r--patches/server/1036-API-for-checking-sent-chunks.patch (renamed from patches/unapplied/server/1068-API-for-checking-sent-chunks.patch)8
-rw-r--r--removed-patches-1-20-5/0675-Prevent-sending-oversized-item-data-in-equipment-and.patch (renamed from patches/removed/0675-Prevent-sending-oversized-item-data-in-equipment-and.patch)0
-rw-r--r--removed-patches-1-20-5/0693-Fix-bees-aging-inside-hives.patch (renamed from patches/removed/0693-Fix-bees-aging-inside-hives.patch)0
-rw-r--r--removed-patches-1-20-5/1027-Hide-unnecessary-itemmeta-from-clients.patch (renamed from patches/removed/0676-Hide-unnecessary-itemmeta-from-clients.patch)73
6 files changed, 64 insertions, 31 deletions
diff --git a/patches/server/1004-Write-SavedData-IO-async.patch b/patches/server/1004-Write-SavedData-IO-async.patch
index 57d9858adf..a1052c55c9 100644
--- a/patches/server/1004-Write-SavedData-IO-async.patch
+++ b/patches/server/1004-Write-SavedData-IO-async.patch
@@ -61,7 +61,7 @@ index ed8e875fff01c6b464fbaefbb0a3f417f9d67a72..aba5f694b25507c9ab2e214bc1f25e0a
public <T extends Entity> List<? extends T> getEntities(EntityTypeTest<Entity, T> filter, Predicate<? super T> predicate) {
diff --git a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
-index 0382b6597a130d746f8954a93a756a9d1ac81d50..cb39c629af1827078f35904a373d35a63fea17ff 100644
+index 7984f17cd9c4cef8100909b6c33b3144c8096fcf..868c9bbb12c8cfe76abb62774cf08102b727063b 100644
--- a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
+++ b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
@@ -116,7 +116,13 @@ public class WorldUpgrader {
diff --git a/patches/unapplied/server/1042-Fix-and-optimise-world-force-upgrading.patch b/patches/server/1035-Fix-and-optimise-world-force-upgrading.patch
index de599d49f8..507303569f 100644
--- a/patches/unapplied/server/1042-Fix-and-optimise-world-force-upgrading.patch
+++ b/patches/server/1035-Fix-and-optimise-world-force-upgrading.patch
@@ -270,10 +270,10 @@ index 244a19ecd0234fa1d7a6ecfea20751595688605d..8893aa1fe4b033fdc25ebe6f3a3606af
Main.LOGGER.info("Forcing world upgrade! {}", session.getLevelId()); // CraftBukkit
WorldUpgrader worldupgrader = new WorldUpgrader(session, dataFixer, dynamicRegistryManager, eraseCache, recreateRegionFiles);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 0f3601f2f1a7ac53425129df6498ed0df302dec8..3cb64c6c870454ee3090d6c88bede8b58d9d3361 100644
+index 5f3b35f0dbd9e78ad18ef5cf7be1a807beffeaf1..a43f597d1148e00a6533f74c25ce272cd4e26dc4 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -595,11 +595,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -599,11 +599,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worlddata = new PrimaryLevelData(worldsettings, worldoptions, worlddimensions_b.specialWorldProperty(), lifecycle);
}
worlddata.checkName(name); // CraftBukkit - Migration did not rewrite the level.dat; This forces 1.8 to take the last loaded world as respawn (in this case the end)
@@ -286,7 +286,7 @@ index 0f3601f2f1a7ac53425129df6498ed0df302dec8..3cb64c6c870454ee3090d6c88bede8b5
PrimaryLevelData iworlddataserver = worlddata;
boolean flag = worlddata.isDebugWorld();
-@@ -614,6 +610,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -618,6 +614,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
biomeProvider = gen.getDefaultBiomeProvider(worldInfo);
}
@@ -301,7 +301,7 @@ index 0f3601f2f1a7ac53425129df6498ed0df302dec8..3cb64c6c870454ee3090d6c88bede8b5
if (dimensionKey == LevelStem.OVERWORLD) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index a137b4a3be01a0333e5fdc1585098fafeeb4f725..ab502b4384d977ac78b05eaa7dd14eaf811f57b5 100644
+index 68746df814aa1a8714e199ff887cad9f8bfa283c..6ddbb71ad67530a49efbecec949b9578c4425b39 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -178,6 +178,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -321,10 +321,10 @@ index a137b4a3be01a0333e5fdc1585098fafeeb4f725..ab502b4384d977ac78b05eaa7dd14eaf
return this.world;
}
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
-index a73a37320da2c141fc2db9d1d61233a34ce0c906..9607e38e39daf8196f1b728c0019a283d730b885 100644
+index af50a02bafb7c1db4569604d1e69f95daab6d2a5..541b99dc1361a6ebd40873e45a1acd12021f1fad 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
-@@ -62,6 +62,29 @@ public class RegionFileStorage implements AutoCloseable {
+@@ -69,6 +69,29 @@ public class RegionFileStorage implements AutoCloseable {
}
// Paper start
diff --git a/patches/unapplied/server/1068-API-for-checking-sent-chunks.patch b/patches/server/1036-API-for-checking-sent-chunks.patch
index b418da022b..35557a8191 100644
--- a/patches/unapplied/server/1068-API-for-checking-sent-chunks.patch
+++ b/patches/server/1036-API-for-checking-sent-chunks.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] API for checking sent chunks
diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
-index 1b090f1e79b996e52097afc49c1cec85936653e6..bf3c5efa0d58c58a5b0b6b73880aaf03c8a37c12 100644
+index ee58c67cb2bd78159cce19ec75f13dc6168a0e7a..149cfb0587299f72fcfddf395fb71b70438986c1 100644
--- a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
+++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
-@@ -1107,6 +1107,11 @@ public class RegionizedPlayerChunkLoader {
+@@ -1048,6 +1048,11 @@ public class RegionizedPlayerChunkLoader {
// now all tickets should be removed, which is all of our external state
}
@@ -21,10 +21,10 @@ index 1b090f1e79b996e52097afc49c1cec85936653e6..bf3c5efa0d58c58a5b0b6b73880aaf03
// TODO rebase into util patch
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 3fbc0312ed291a3878c26c005bfc79f417c695e4..44f4665db613c558078df5bb49106e4ca5679dfe 100644
+index 03e16706e378e7d4d1e74aca7daef62c3cbe3592..d4eb482c54a9e1430ee31e873e02577710aa7322 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -3392,6 +3392,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -3454,6 +3454,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// Paper end
diff --git a/patches/removed/0675-Prevent-sending-oversized-item-data-in-equipment-and.patch b/removed-patches-1-20-5/0675-Prevent-sending-oversized-item-data-in-equipment-and.patch
index 5e19c6e46b..5e19c6e46b 100644
--- a/patches/removed/0675-Prevent-sending-oversized-item-data-in-equipment-and.patch
+++ b/removed-patches-1-20-5/0675-Prevent-sending-oversized-item-data-in-equipment-and.patch
diff --git a/patches/removed/0693-Fix-bees-aging-inside-hives.patch b/removed-patches-1-20-5/0693-Fix-bees-aging-inside-hives.patch
index 4e25bcc978..4e25bcc978 100644
--- a/patches/removed/0693-Fix-bees-aging-inside-hives.patch
+++ b/removed-patches-1-20-5/0693-Fix-bees-aging-inside-hives.patch
diff --git a/patches/removed/0676-Hide-unnecessary-itemmeta-from-clients.patch b/removed-patches-1-20-5/1027-Hide-unnecessary-itemmeta-from-clients.patch
index 212708bc40..c3fea6f0cd 100644
--- a/patches/removed/0676-Hide-unnecessary-itemmeta-from-clients.patch
+++ b/removed-patches-1-20-5/1027-Hide-unnecessary-itemmeta-from-clients.patch
@@ -5,27 +5,29 @@ Subject: [PATCH] Hide unnecessary itemmeta from clients
TODO: Needs updating for data components
-
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index a51564e8dce3c125ed5f05cc23548a05c1e79a95..d2c2075fb0378fd7ec148281d37d886c77a78ce8 100644
+index 22eec853588ded2d255ab69d408f8e987832abe2..dda4fbd63681ab9614ebbb55632355f30d7b19ac 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
-@@ -337,7 +337,7 @@ public class ServerEntity {
+@@ -348,7 +348,10 @@ public class ServerEntity {
+ ItemStack itemstack = ((LivingEntity) this.entity).getItemBySlot(enumitemslot);
+
if (!itemstack.isEmpty()) {
- // Paper start - prevent oversized data
- final ItemStack sanitized = LivingEntity.sanitizeItemStack(itemstack.copy(), false);
-- list.add(Pair.of(enumitemslot, sanitized));
+- list.add(Pair.of(enumitemslot, itemstack.copy()));
++ // Paper start - prevent oversized data
++ final ItemStack sanitized = LivingEntity.sanitizeItemStack(itemstack.copy(), false);
+ list.add(Pair.of(enumitemslot, ((LivingEntity) this.entity).stripMeta(sanitized, false))); // Paper - Hide unnecessary item meta
- // Paper end - prevent oversized data
++ // Paper end - prevent oversized data
}
}
+
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 8fcb241e8d161c9fb024a2a0488f8c29784a74f1..7127c6f163cc00eb439eb37665df3e1a4bf27cc2 100644
+index 32076a765d48d59b339d600f69afa85edbcf833c..6b905d0245f16794078de34fb8509a0cd0869382 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2565,8 +2565,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2802,8 +2802,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// Refresh the current entity metadata
- entity.getEntityData().refresh(ServerGamePacketListenerImpl.this.player);
+ entity.refreshEntityData(ServerGamePacketListenerImpl.this.player);
// SPIGOT-7136 - Allays
- if (entity instanceof Allay) {
- ServerGamePacketListenerImpl.this.send(new ClientboundSetEquipmentPacket(entity.getId(), Arrays.stream(net.minecraft.world.entity.EquipmentSlot.values()).map((slot) -> Pair.of(slot, ((LivingEntity) entity).getItemBySlot(slot).copy())).collect(Collectors.toList())));
@@ -35,19 +37,22 @@ index 8fcb241e8d161c9fb024a2a0488f8c29784a74f1..7127c6f163cc00eb439eb37665df3e1a
}
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 8025e351fb3e24aa67b31eca74be1bc368592851..e44a45ced6f7cd7db44388bb2e85c722b6b5ca8a 100644
+index 9ff43ff4076c658b8561c5a7abd067423830f964..bbc67e97de3ab1cd20c595e794aea27cf00a7cb0 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3210,7 +3210,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3299,7 +3299,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
+ equipmentChanges.forEach((enumitemslot, itemstack) -> {
+ ItemStack itemstack1 = itemstack.copy();
- // Paper start - prevent oversized data
- ItemStack toSend = sanitizeItemStack(itemstack1, true);
-- list.add(Pair.of(enumitemslot, toSend));
+- list.add(Pair.of(enumitemslot, itemstack1));
++ // Paper start - prevent oversized data
++ ItemStack toSend = sanitizeItemStack(itemstack1, true);
+ list.add(Pair.of(enumitemslot, stripMeta(toSend, toSend == itemstack1))); // Paper - Hide unnecessary item meta
- // Paper end - prevent oversized data
++ // Paper end - prevent oversized data
switch (enumitemslot.getType()) {
case HAND:
-@@ -3224,6 +3224,77 @@ public abstract class LivingEntity extends Entity implements Attackable {
+ this.setLastHandItem(enumitemslot, itemstack1);
+@@ -3315,6 +3318,105 @@ public abstract class LivingEntity extends Entity implements Attackable {
((ServerLevel) this.level()).getChunkSource().broadcast(this, new ClientboundSetEquipmentPacket(this.getId(), list));
}
@@ -122,6 +127,34 @@ index 8025e351fb3e24aa67b31eca74be1bc368592851..e44a45ced6f7cd7db44388bb2e85c722
+ }
+ // Paper end - Hide unnecessary item meta
+
- // Paper start - prevent oversized data
- public static ItemStack sanitizeItemStack(final ItemStack itemStack, final boolean copyItemStack) {
- if (itemStack.isEmpty() || !itemStack.hasTag()) {
++ // Paper start - prevent oversized data
++ public static ItemStack sanitizeItemStack(final ItemStack itemStack, final boolean copyItemStack) {
++ if (itemStack.isEmpty() || !itemStack.hasTag()) {
++ return itemStack;
++ }
++
++ final ItemStack copy = copyItemStack ? itemStack.copy() : itemStack;
++ final CompoundTag tag = copy.getTag();
++ if (copy.is(Items.BUNDLE) && tag.get("Items") instanceof ListTag oldItems && !oldItems.isEmpty()) {
++ // Bundles change their texture based on their fullness.
++ org.bukkit.inventory.meta.BundleMeta bundleMeta = (org.bukkit.inventory.meta.BundleMeta) copy.asBukkitMirror().getItemMeta();
++ int sizeUsed = 0;
++ for (org.bukkit.inventory.ItemStack item : bundleMeta.getItems()) {
++ int scale = 64 / item.getMaxStackSize();
++ sizeUsed += scale * item.getAmount();
++ }
++ // Now we add a single fake item that uses the same amount of slots as all other items.
++ ListTag items = new ListTag();
++ items.add(new ItemStack(Items.PAPER, sizeUsed).save(new CompoundTag()));
++ tag.put("Items", items);
++ }
++ if (tag.get("BlockEntityTag") instanceof CompoundTag blockEntityTag) {
++ blockEntityTag.remove("Items");
++ }
++ return copy;
++ }
++ // Paper end - prevent oversized data
++
+ private ItemStack getLastArmorItem(EquipmentSlot slot) {
+ return (ItemStack) this.lastArmorItemStacks.get(slot.getIndex());
+ }