diff --git a/patches/unapplied/server/0020-Configurable-villager-brain-ticks.patch b/patches/server/0020-Configurable-villager-brain-ticks.patch similarity index 90% rename from patches/unapplied/server/0020-Configurable-villager-brain-ticks.patch rename to patches/server/0020-Configurable-villager-brain-ticks.patch index e27dda6a0..71a004e0a 100644 --- a/patches/unapplied/server/0020-Configurable-villager-brain-ticks.patch +++ b/patches/server/0020-Configurable-villager-brain-ticks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager brain ticks 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 c19030be3e65e317c979610e3cc130ffdf183622..136b6f0f19c9ece222eedbf2b20b118e206ee3e9 100644 +index 0a2131d7455d7de7c9a3f9d50710da870062e714..4c20685b3d8735272f9f97a75485a6438cef6501 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -141,6 +141,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -137,6 +137,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler }, MemoryModuleType.MEETING_POINT, (entityvillager, villageplacetype) -> { return villageplacetype == PoiType.MEETING; }); @@ -16,7 +16,7 @@ index c19030be3e65e317c979610e3cc130ffdf183622..136b6f0f19c9ece222eedbf2b20b118e public Villager(EntityType entityType, Level world) { this(entityType, world, VillagerType.PLAINS); -@@ -153,6 +154,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -149,6 +150,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getNavigation().setCanFloat(true); this.setCanPickUpLoot(true); this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); @@ -24,7 +24,7 @@ index c19030be3e65e317c979610e3cc130ffdf183622..136b6f0f19c9ece222eedbf2b20b118e } // Purpur start -@@ -271,6 +273,10 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -267,6 +269,10 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected void customServerAiStep() { mobTick(false); } protected void mobTick(boolean inactive) { this.level.getProfiler().push("villagerBrain"); @@ -32,7 +32,7 @@ index c19030be3e65e317c979610e3cc130ffdf183622..136b6f0f19c9ece222eedbf2b20b118e + boolean tick = (level.getGameTime() + brainTickOffset) % level.purpurConfig.villagerBrainTicks == 0; + if (((ServerLevel) level).getServer().lagging ? tick : level.purpurConfig.villagerUseBrainTicksOnlyWhenLagging || tick) + // Purpur end - if (!inactive) this.getBrain().tick((ServerLevel) this.level, this); // CraftBukkit - decompile error // Paper + if (!inactive) this.getBrain().tick((ServerLevel) this.level, this); // Paper this.level.getProfiler().pop(); if (this.assignProfessionWhenSpawned) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied/server/0021-Alternative-Keepalive-Handling.patch b/patches/server/0021-Alternative-Keepalive-Handling.patch similarity index 91% rename from patches/unapplied/server/0021-Alternative-Keepalive-Handling.patch rename to patches/server/0021-Alternative-Keepalive-Handling.patch index e8b29a24c..179016d5a 100644 --- a/patches/unapplied/server/0021-Alternative-Keepalive-Handling.patch +++ b/patches/server/0021-Alternative-Keepalive-Handling.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b836820ce38bbb9b0594c4cedcf716b4cf85485f..68d51846987f4c5707cfc9dec737728770a66f11 100644 +index 479acafb1f8759f3097ee425e26f645c0027ea14..1ada1e8532302c3ab1c4454b3a36cee272deb378 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -228,6 +228,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -227,6 +227,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private long keepAliveTime = Util.getMillis(); private boolean keepAlivePending; private long keepAliveChallenge; + private java.util.List keepAlives = new java.util.ArrayList<>(); // Purpur // CraftBukkit start - multithreaded fields - private AtomicInteger chatSpamTickCount = new AtomicInteger(); + private final AtomicInteger chatSpamTickCount = new AtomicInteger(); private final java.util.concurrent.atomic.AtomicInteger tabSpamLimiter = new java.util.concurrent.atomic.AtomicInteger(); // Paper - configurable tab spam limits -@@ -372,6 +373,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -371,6 +372,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser long currentTime = Util.getMillis(); long elapsedTime = currentTime - this.keepAliveTime; @@ -38,7 +38,7 @@ index b836820ce38bbb9b0594c4cedcf716b4cf85485f..68d51846987f4c5707cfc9dec7377287 if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3112,6 +3128,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3045,6 +3061,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { diff --git a/patches/unapplied/server/0022-Silk-touch-spawners.patch b/patches/server/0022-Silk-touch-spawners.patch similarity index 97% rename from patches/unapplied/server/0022-Silk-touch-spawners.patch rename to patches/server/0022-Silk-touch-spawners.patch index 3f69a17f6..1ea3240a1 100644 --- a/patches/unapplied/server/0022-Silk-touch-spawners.patch +++ b/patches/server/0022-Silk-touch-spawners.patch @@ -17,7 +17,7 @@ index f763a3ea5796737304e0c1f41349622e1d7adadf..26c5c3c6e7c51ad6ccc9bac05e2af497 public static final GsonComponentSerializer GSON = GsonComponentSerializer.builder() .legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.INSTANCE) diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index f68639508d7ff9a0e743b5282301e62435d53656..89d4b7e4cd4222b61b49833fceda56ffa39710fa 100644 +index 20444c6887cbdd444b23bf018a6d63f22359e5e7..68321b5e425c0500a5691f80203176122cc1bff4 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java @@ -258,7 +258,7 @@ public class Items { @@ -30,7 +30,7 @@ index f68639508d7ff9a0e743b5282301e62435d53656..89d4b7e4cd4222b61b49833fceda56ff public static final Item CHEST = registerBlock(Blocks.CHEST, CreativeModeTab.TAB_DECORATIONS); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE, CreativeModeTab.TAB_DECORATIONS); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index b1e04d41de80971a7a1616beb0860226ecc25045..a499cf626a54fcef62bc34bba4193ba0565d8379 100644 +index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf08c2ec0f 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java @@ -1,9 +1,19 @@ @@ -129,14 +129,14 @@ index b1e04d41de80971a7a1616beb0860226ecc25045..a499cf626a54fcef62bc34bba4193ba0 @Override public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack stack) { super.spawnAfterBreak(state, world, pos, stack); -@@ -42,6 +114,7 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -38,6 +110,7 @@ public class SpawnerBlock extends BaseEntityBlock { @Override public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack) { + if (isSilkTouch(worldserver, itemstack)) return 0; // Purpur int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15); - return i; + // this.popExperience(worldserver, blockposition, i); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 6df320ab8214669517d5de30a28f044a5a6b4a33..8920b47610a323ceb6b19a05b7592d8acf809bc4 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch similarity index 97% rename from patches/unapplied/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch rename to patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch index cfd83b174..917b7e71a 100644 --- a/patches/unapplied/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch +++ b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] MC-168772 Fix - Add turtle egg block options diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index fdb3ab919a78221605257ae82bfd026346ce2ffb..e98fc3c235f9160f1928a8afb0d7991a6d3430cb 100644 +index 8033d2074d68635515b4737b4416ec9354a3edad..b942e7c85e6c8f9a7664d9e5bf93bcd79e0651f1 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java @@ -10,11 +10,15 @@ import net.minecraft.tags.BlockTags; diff --git a/patches/unapplied/server/0024-Fix-vanilla-command-permission-handler.patch b/patches/server/0024-Fix-vanilla-command-permission-handler.patch similarity index 83% rename from patches/unapplied/server/0024-Fix-vanilla-command-permission-handler.patch rename to patches/server/0024-Fix-vanilla-command-permission-handler.patch index 212cfb9a0..9c47720f8 100644 --- a/patches/unapplied/server/0024-Fix-vanilla-command-permission-handler.patch +++ b/patches/server/0024-Fix-vanilla-command-permission-handler.patch @@ -17,14 +17,14 @@ index f64aa22ed6fcb4af67317b99f459ee5296392548..36c91793e0aa4895193623cf8cba7820 public void removeCommand(String name) { this.children.remove(name); diff --git a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java -index 4aa1dc543950b5de64345b3403a6d0bc41c521df..1c19a64da230268ceb9124bb7e1a141d78ac3393 100644 +index 0377c706c9aec6f367e83f859f9a3432ad5bba4a..96691990aa3ede953e41df6e3b36bb1eb1e3fd13 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java +++ b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java -@@ -89,6 +89,7 @@ public final class VanillaCommandWrapper extends BukkitCommand { +@@ -87,6 +87,7 @@ public final class VanillaCommandWrapper extends BukkitCommand { } public static String getPermission(CommandNode vanillaCommand) { + if (vanillaCommand.getPermission() != null) return vanillaCommand.getPermission(); // Purpur - // Paper start - final String commandName; - if (vanillaCommand.getRedirect() == null) { + return "minecraft.command." + ((vanillaCommand.getRedirect() == null) ? vanillaCommand.getName() : vanillaCommand.getRedirect().getName()); + } + diff --git a/patches/unapplied/server/0025-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch similarity index 97% rename from patches/unapplied/server/0025-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0025-Logger-settings-suppressing-pointless-logs.patch index 18f3053cd..324869755 100644 --- a/patches/unapplied/server/0025-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch @@ -17,7 +17,7 @@ index f7959fe8d5247504dd79a18010470d98781c7cfe..945fb3200d52b83eaee2e62d6db5c43e } // CraftBukkit end diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java -index 63a4fa2408edf84b490ca39e824977135d78eff0..461796c9c559f43bd2e0126b12a46bfc41c830a5 100644 +index ecdac349efbea9e05ac66200c5d0f0385ad1349b..749f3cda15d1f9a0b0c73fa9eda9e58fb285de73 100644 --- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java +++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java @@ -122,6 +122,7 @@ public class ServerRecipeBook extends RecipeBook { diff --git a/patches/unapplied/server/0026-Disable-outdated-build-check.patch b/patches/server/0026-Disable-outdated-build-check.patch similarity index 92% rename from patches/unapplied/server/0026-Disable-outdated-build-check.patch rename to patches/server/0026-Disable-outdated-build-check.patch index 9e1ff1871..417c6eca1 100644 --- a/patches/unapplied/server/0026-Disable-outdated-build-check.patch +++ b/patches/server/0026-Disable-outdated-build-check.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 5b527a32f56a82131168879106f76c1f6cbb7b30..56674053351962a75b2731dde137dbbc0c70dbde 100644 +index a10cebac752fdf5186eb86bd314f19313864fee0..1533e958718d695b50a3e0c46d005cba49eca6cb 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -269,7 +269,7 @@ public class Main {