diff --git a/leaves-server/unapplied/0071-Avoid-anvil-too-expensive.patch b/leaves-server/minecraft-patches/features/0071-Avoid-anvil-too-expensive.patch similarity index 85% rename from leaves-server/unapplied/0071-Avoid-anvil-too-expensive.patch rename to leaves-server/minecraft-patches/features/0071-Avoid-anvil-too-expensive.patch index 6e9ab8ec..83fb2662 100644 --- a/leaves-server/unapplied/0071-Avoid-anvil-too-expensive.patch +++ b/leaves-server/minecraft-patches/features/0071-Avoid-anvil-too-expensive.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Avoid anvil too expensive diff --git a/net/minecraft/world/inventory/AnvilMenu.java b/net/minecraft/world/inventory/AnvilMenu.java -index 65c400444314049d5529f1f76d65fbd6b1ea7af2..eed4ba79dd5328a59121bd9fe81ef1efd563094e 100644 +index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..fa5fb93e2d3abd7171f4f7db9a74d42ec37b8ecd 100644 --- a/net/minecraft/world/inventory/AnvilMenu.java +++ b/net/minecraft/world/inventory/AnvilMenu.java -@@ -259,7 +259,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -266,7 +266,7 @@ public class AnvilMenu extends ItemCombinerMenu { this.onlyRenaming = true; } diff --git a/leaves-server/unapplied/0072-Bow-infinity-fix.patch b/leaves-server/minecraft-patches/features/0072-Bow-infinity-fix.patch similarity index 90% rename from leaves-server/unapplied/0072-Bow-infinity-fix.patch rename to leaves-server/minecraft-patches/features/0072-Bow-infinity-fix.patch index baa38a1f..2fb3d6cd 100644 --- a/leaves-server/unapplied/0072-Bow-infinity-fix.patch +++ b/leaves-server/minecraft-patches/features/0072-Bow-infinity-fix.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bow infinity fix diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index ee8c0d0edbb296106a128c48f4186ba3a5bf9df8..6c32b0e26a77c808fb16fc420e89fcebbea56ab1 100644 +index 7a8572d7fd7201cf5ec63c933139403c39be8013..8c00b05124c31f12c8aada9991f24ba560044e3d 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -2169,8 +2169,10 @@ public abstract class Player extends LivingEntity { +@@ -2188,8 +2188,10 @@ public abstract class Player extends LivingEntity { } } diff --git a/leaves-server/unapplied/0073-Zero-tick-plants.patch b/leaves-server/minecraft-patches/features/0073-Zero-tick-plants.patch similarity index 97% rename from leaves-server/unapplied/0073-Zero-tick-plants.patch rename to leaves-server/minecraft-patches/features/0073-Zero-tick-plants.patch index a8b2b7f8..bd20206a 100644 --- a/leaves-server/unapplied/0073-Zero-tick-plants.patch +++ b/leaves-server/minecraft-patches/features/0073-Zero-tick-plants.patch @@ -20,7 +20,7 @@ index a6249f5852c4ac2432bb60cb4f7a2e0a03abd7dd..29f9866e693dbbf9487cdc15ca8d2f55 } diff --git a/net/minecraft/world/level/block/CactusBlock.java b/net/minecraft/world/level/block/CactusBlock.java -index 8f6878cc8e72513446895bfc79886075bfcd5565..efbd3aff528cd81a79c522aa44b6348827b8c88d 100644 +index d4fbf130e23a959be8268085067b3bea1541be9a..a8cb3264ebc3b9728ce1a1af449f7ccb4d3c9973 100644 --- a/net/minecraft/world/level/block/CactusBlock.java +++ b/net/minecraft/world/level/block/CactusBlock.java @@ -47,6 +47,10 @@ public class CactusBlock extends Block { diff --git a/leaves-server/unapplied/0074-Replay-Mod-API.patch b/leaves-server/minecraft-patches/features/0074-Replay-Mod-API.patch similarity index 86% rename from leaves-server/unapplied/0074-Replay-Mod-API.patch rename to leaves-server/minecraft-patches/features/0074-Replay-Mod-API.patch index 26704277..d00dd391 100644 --- a/leaves-server/unapplied/0074-Replay-Mod-API.patch +++ b/leaves-server/minecraft-patches/features/0074-Replay-Mod-API.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Replay Mod API This patch is Powered by ReplayMod(https://github.com/ReplayMod) diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java -index cb63e4c264a31788cd1405428af70f7a018910e9..a1e8f25b70b49590fd42b618fcd467cf306650af 100644 +index 3acfb2a78845dd8081dc3c01d653034232c76e60..efe3f1849e68e5bbe2cdb3793dafc8b58c3d8415 100644 --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java -@@ -588,7 +588,7 @@ public class CommandSourceStack implements ExecutionCommandSource getOnlinePlayerNames() { @@ -81,10 +81,10 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..2f78ca86f46ea08fdcf4b8047d3d0b04 if (players.size() >= resultLimit) { return players; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index ca4fdcabbe6c0c57bfa13ef6d83bcd560baae8fc..2005719308a281128a5edc24a563df929418c6e3 100644 +index f288b85909550e6eec931ee2da9e0d4c7808fdc9..f880cfc9394454bc090f41bc51fbc29b382fab31 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1637,7 +1637,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - PlayerList playerList = context.getSource().getServer().getPlayerList(); + (commandContext, suggestionsBuilder) -> { + PlayerList playerList = commandContext.getSource().getServer().getPlayerList(); return SharedSuggestionProvider.suggest( - playerList.getPlayers() + playerList.realPlayers // Leaves - only real player .stream() - .filter(player -> !playerList.isOp(player.getGameProfile())) - .map(player -> player.getGameProfile().getName()), + .filter(serverPlayer -> !playerList.isOp(serverPlayer.getGameProfile())) + .map(serverPlayer -> serverPlayer.getGameProfile().getName()), diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 68490d8dc26c2d5f4999361fd7ad72a83581f48f..122e5e46a2c1e4be5c9d04501bfe064f239ec230 100644 +index 4a34e43d5471bb12ef2535a1a9246376310c56f1..d50d0874aa34578af3ff8a6bb7c889ba6ab885d6 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -2645,7 +2645,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2690,7 +2690,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (entity instanceof ServerPlayer serverPlayer) { ServerLevel.this.players.add(serverPlayer); // Leaves start - skip @@ -132,7 +132,7 @@ index 68490d8dc26c2d5f4999361fd7ad72a83581f48f..122e5e46a2c1e4be5c9d04501bfe064f ServerLevel.this.realPlayers.add(serverPlayer); } // Leaves end - skip -@@ -2720,7 +2720,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2773,7 +2773,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (entity instanceof ServerPlayer serverPlayer) { ServerLevel.this.players.remove(serverPlayer); // Leaves start - skip @@ -142,10 +142,10 @@ index 68490d8dc26c2d5f4999361fd7ad72a83581f48f..122e5e46a2c1e4be5c9d04501bfe064f } // Leaves end - skip diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 72c2762485da81d3a252290455f57a8cf81dfe66..0dee4945feb6d4cb2f520d346bf8be4fa36fb868 100644 +index e74ca7f4c98590941fe88935d9fea0917c7b5c50..968a6bbff3540d781c0925a0db96c0492283d1f2 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -131,6 +131,7 @@ public abstract class PlayerList { +@@ -130,6 +130,7 @@ public abstract class PlayerList { private boolean allowCommandsForAllPlayers; private static final boolean ALLOW_LOGOUTIVATOR = false; private int sendAllPlayerInfoIn; @@ -153,7 +153,7 @@ index 72c2762485da81d3a252290455f57a8cf81dfe66..0dee4945feb6d4cb2f520d346bf8be4f // CraftBukkit start private org.bukkit.craftbukkit.CraftServer cserver; -@@ -149,6 +150,119 @@ public abstract class PlayerList { +@@ -148,6 +149,126 @@ public abstract class PlayerList { abstract public void loadAndSaveFiles(); // Paper - fix converting txt to json file; moved from DedicatedPlayerList constructor @@ -199,6 +199,7 @@ index 72c2762485da81d3a252290455f57a8cf81dfe66..0dee4945feb6d4cb2f520d346bf8be4f + } + + this.players.add(player); ++ this.realPlayers.add(player); // Leaves - replay api + this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot + this.playersByUUID.put(player.getUUID(), player); + @@ -235,6 +236,12 @@ index 72c2762485da81d3a252290455f57a8cf81dfe66..0dee4945feb6d4cb2f520d346bf8be4f + continue; + } + ++ // Leaves start - skip photographer ++ if (entityplayer1 instanceof org.leavesmc.leaves.replay.ServerPhotographer) { ++ continue; ++ } ++ // Leaves end - skip photographer ++ + onlinePlayers.add(entityplayer1); + } + if (!onlinePlayers.isEmpty()) { @@ -273,27 +280,6 @@ index 72c2762485da81d3a252290455f57a8cf81dfe66..0dee4945feb6d4cb2f520d346bf8be4f public void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie) { player.isRealPlayer = true; // Paper player.loginTime = System.currentTimeMillis(); // Paper - Replace OfflinePlayer#getLastPlayed -@@ -309,6 +423,7 @@ public abstract class PlayerList { - - // player.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(this.players)); // CraftBukkit - replaced with loop below - this.players.add(player); -+ this.realPlayers.add(player); // Leaves - replay api - this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot - this.playersByUUID.put(player.getUUID(), player); - // this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player))); // CraftBukkit - replaced with loop below -@@ -383,6 +498,12 @@ public abstract class PlayerList { - continue; - } - -+ // Leaves start - skip photographer -+ if (entityplayer1 instanceof org.leavesmc.leaves.replay.ServerPhotographer) { -+ continue; -+ } -+ // Leaves end - skip photographer -+ - onlinePlayers.add(entityplayer1); // Paper - Use single player info update packet on join - } - // Paper start - Use single player info update packet on join @@ -517,6 +638,43 @@ public abstract class PlayerList { } } @@ -346,12 +332,12 @@ index 72c2762485da81d3a252290455f57a8cf81dfe66..0dee4945feb6d4cb2f520d346bf8be4f this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot this.server.getCustomBossEvents().onPlayerDisconnect(player); UUID uuid = player.getUUID(); -@@ -683,7 +842,7 @@ public abstract class PlayerList { - // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) - // ? Component.translatable("multiplayer.disconnect.server_full") - // : null; -- if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile)) { -+ if (this.realPlayers.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile)) { // Leaves - only real player - event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure - } - } +@@ -1032,7 +1191,7 @@ public abstract class PlayerList { + + // Paper start - whitelist verify event / login event + public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) { +- final boolean shouldKick = this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile); ++ final boolean shouldKick = this.realPlayers.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile); // Leaves - only real player + final io.papermc.paper.event.player.PlayerServerFullCheckEvent fullCheckEvent = new io.papermc.paper.event.player.PlayerServerFullCheckEvent( + com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitMirror(profile), + io.papermc.paper.adventure.PaperAdventure.asAdventure(currentResult.message), diff --git a/leaves-server/unapplied/0075-Leaves-I18n-support.patch b/leaves-server/minecraft-patches/features/0075-Leaves-I18n-support.patch similarity index 92% rename from leaves-server/unapplied/0075-Leaves-I18n-support.patch rename to leaves-server/minecraft-patches/features/0075-Leaves-I18n-support.patch index a3eca868..eee83b5f 100644 --- a/leaves-server/unapplied/0075-Leaves-I18n-support.patch +++ b/leaves-server/minecraft-patches/features/0075-Leaves-I18n-support.patch @@ -26,10 +26,10 @@ index 7b9e2a1a208b46a69c16e6afd8b502259893574f..8ef3627217a8c495e4e31b70e61ad1b7 loadFromJson(resourceAsStream, output); } catch (JsonParseException | IOException var7) { diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java -index 4cde785a679dccc3dfa42272e6094328e9ce98c1..3efcacd808d968b7ff3a67b05d9fcd4e7dc21236 100644 +index e673df664b06c654a7be0622874b9b27ad7ef20f..898bf4d1e3269135f9514cdfd923040b947eef33 100644 --- a/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java -@@ -153,6 +153,8 @@ public class Main { +@@ -154,6 +154,8 @@ public class Main { return; } @@ -39,7 +39,7 @@ index 4cde785a679dccc3dfa42272e6094328e9ce98c1..3efcacd808d968b7ff3a67b05d9fcd4e String awtException = io.papermc.paper.util.ServerEnvironment.awtDependencyCheck(); if (awtException != null) { diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 9543e374f779e0488cf876aff546c475c3dfc0c3..12c8486ff2a5a7140fde40babc4388f311a6401e 100644 +index 9112c203c7cf31b2ce1789ea97ab17ceaaba24b4..d587517dde1f5c3f57d8312ab1643c837fbd3056 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java @@ -186,6 +186,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/leaves-server/unapplied/0076-Fix-minecraft-hopper-not-work-without-player.patch b/leaves-server/minecraft-patches/features/0076-Fix-minecraft-hopper-not-work-without-player.patch similarity index 83% rename from leaves-server/unapplied/0076-Fix-minecraft-hopper-not-work-without-player.patch rename to leaves-server/minecraft-patches/features/0076-Fix-minecraft-hopper-not-work-without-player.patch index 00cd4117..f3d662b7 100644 --- a/leaves-server/unapplied/0076-Fix-minecraft-hopper-not-work-without-player.patch +++ b/leaves-server/minecraft-patches/features/0076-Fix-minecraft-hopper-not-work-without-player.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix minecraft hopper not work without player diff --git a/net/minecraft/world/entity/vehicle/MinecartHopper.java b/net/minecraft/world/entity/vehicle/MinecartHopper.java -index a56d9cdeb6589a053ffaaf2cd599a98ae0a0989a..eb94eb2fe717f6432e458deefb39f37600d890fc 100644 +index 41a6ec508a10a49a37539d2f10171d15c233b280..ae6246635b7961b91a217b7f4f9d9d0f41560207 100644 --- a/net/minecraft/world/entity/vehicle/MinecartHopper.java +++ b/net/minecraft/world/entity/vehicle/MinecartHopper.java -@@ -100,6 +100,13 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper +@@ -101,6 +101,13 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper } } diff --git a/leaves-server/unapplied/0077-RNG-Fishing.patch b/leaves-server/minecraft-patches/features/0077-RNG-Fishing.patch similarity index 88% rename from leaves-server/unapplied/0077-RNG-Fishing.patch rename to leaves-server/minecraft-patches/features/0077-RNG-Fishing.patch index ec1da438..107f3a39 100644 --- a/leaves-server/unapplied/0077-RNG-Fishing.patch +++ b/leaves-server/minecraft-patches/features/0077-RNG-Fishing.patch @@ -5,10 +5,10 @@ Subject: [PATCH] RNG Fishing diff --git a/net/minecraft/world/entity/projectile/FishingHook.java b/net/minecraft/world/entity/projectile/FishingHook.java -index f82f37d498f99ce38f72a63d051721c6dab9f2ca..0014ede48956facc87940f4b1d5f8ac72af052bb 100644 +index 8c139d572bd3c44b8e2b6205e28ab09f82c9abfe..a5df132c2d97c30ad0960197ea7ce8640ee9e863 100644 --- a/net/minecraft/world/entity/projectile/FishingHook.java +++ b/net/minecraft/world/entity/projectile/FishingHook.java -@@ -518,7 +518,7 @@ public class FishingHook extends Projectile { +@@ -529,7 +529,7 @@ public class FishingHook extends Projectile { .withLuck(this.luck + playerOwner.getLuck()) .create(LootContextParamSets.FISHING); LootTable lootTable = this.level().getServer().reloadableRegistries().getLootTable(BuiltInLootTables.FISHING); diff --git a/leaves-server/unapplied/0078-Wool-Hopper-Counter.patch b/leaves-server/minecraft-patches/features/0078-Wool-Hopper-Counter.patch similarity index 96% rename from leaves-server/unapplied/0078-Wool-Hopper-Counter.patch rename to leaves-server/minecraft-patches/features/0078-Wool-Hopper-Counter.patch index 6dc4546f..85b9b0d3 100644 --- a/leaves-server/unapplied/0078-Wool-Hopper-Counter.patch +++ b/leaves-server/minecraft-patches/features/0078-Wool-Hopper-Counter.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Wool Hopper Counter This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet) diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index a2fe5fdf50ae731e423821a0d1c52141b478e0be..7140571ef324f823942bc2c528cb66dac9e91d94 100644 +index ea64414708d7034ccbc0e93a344d17c851f78add..47281ac61c6a462a47c60cc51f48440d3691effd 100644 --- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -432,6 +432,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen diff --git a/leaves-server/unapplied/0079-Spider-jockeys-drop-gapples.patch b/leaves-server/minecraft-patches/features/0079-Spider-jockeys-drop-gapples.patch similarity index 94% rename from leaves-server/unapplied/0079-Spider-jockeys-drop-gapples.patch rename to leaves-server/minecraft-patches/features/0079-Spider-jockeys-drop-gapples.patch index afcde1f9..c4829040 100644 --- a/leaves-server/unapplied/0079-Spider-jockeys-drop-gapples.patch +++ b/leaves-server/minecraft-patches/features/0079-Spider-jockeys-drop-gapples.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Spider jockeys drop gapples diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 48f26ed693b43e3f65f1559ba69b3d7249664f71..7ee1aa2d41cadefb0ee0a5f17a04ed52da60de86 100644 +index 743bc2986b962d4aaef00d2e457117f375ca65c7..7a982b5720278ad6870446bfc1cffb220d08279e 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -139,4 +139,16 @@ public class Skeleton extends AbstractSkeleton { +@@ -140,4 +140,16 @@ public class Skeleton extends AbstractSkeleton { this.spawnAtLocation(level, Items.SKELETON_SKULL); } } diff --git a/leaves-server/unapplied/0080-Force-Void-Trade.patch b/leaves-server/minecraft-patches/features/0080-Force-Void-Trade.patch similarity index 94% rename from leaves-server/unapplied/0080-Force-Void-Trade.patch rename to leaves-server/minecraft-patches/features/0080-Force-Void-Trade.patch index 8196aa70..c5705505 100644 --- a/leaves-server/unapplied/0080-Force-Void-Trade.patch +++ b/leaves-server/minecraft-patches/features/0080-Force-Void-Trade.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Force Void Trade diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java -index a375fad192cc09ba83775d5e37c1bb351730e6c4..203e6819aa39de7e932125acb8a0de224918bb6f 100644 +index 38572ecba568072b132b9e7fc12e6c0c38edd2e2..c3bec7a52f167a5169f96da709bcf9269a5bbae1 100644 --- a/net/minecraft/world/entity/npc/AbstractVillager.java +++ b/net/minecraft/world/entity/npc/AbstractVillager.java @@ -43,6 +43,7 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa @@ -74,7 +74,7 @@ index a375fad192cc09ba83775d5e37c1bb351730e6c4..203e6819aa39de7e932125acb8a0de22 + // Leaves end - force void trade } diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 956b949b42a7041290838dde816d3b79e1f9e0d4..1b906f04852637046f03d71f54f950f04c086c46 100644 +index 2330415f8e3bc021e43facff4c99177cc0c9fc5c..cab1ef5547d6de724c4d9341ecad0bff25c84c5b 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -383,6 +383,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -101,10 +101,10 @@ index 956b949b42a7041290838dde816d3b79e1f9e0d4..1b906f04852637046f03d71f54f950f0 this.updateMerchantTimer = 40; this.increaseProfessionLevelOnUpdate = true; diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 70cc20483905d3877e2ffb51afb4902bd59f0cd0..066d18609f7f8aa5c14e95e09b454cb7d15f2ed7 100644 +index c2573946dd1244eb5d1ef2be7823211064daa80d..567c24f7c87a23a11c54be1dad531f29d2b3a569 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -123,9 +123,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -124,9 +124,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return InteractionResult.CONSUME; } @@ -132,7 +132,7 @@ index 1bf2a015fa35981328c098f2fec363c84b85b2a7..8aa4079e7fb5fb81f33859d106a425d0 private int merchantLevel; private boolean showProgressBar; diff --git a/net/minecraft/world/item/trading/MerchantOffer.java b/net/minecraft/world/item/trading/MerchantOffer.java -index 9333c63f217e1207eced37c5be150e192f2fcc3e..0b1a086d3f101b42d95304c69f9e69f4c6c7d906 100644 +index 64c99df8ff305fa28c75dc03fc5ef8c61634ad84..a7799f226d7b7d75c5626d6d3d8394f40af930c5 100644 --- a/net/minecraft/world/item/trading/MerchantOffer.java +++ b/net/minecraft/world/item/trading/MerchantOffer.java @@ -39,6 +39,7 @@ public class MerchantOffer { @@ -151,7 +151,7 @@ index 9333c63f217e1207eced37c5be150e192f2fcc3e..0b1a086d3f101b42d95304c69f9e69f4 } public MerchantOffer(ItemCost baseCostA, ItemStack result, int maxUses, int xp, float priceMultiplier) { -@@ -166,6 +168,16 @@ public class MerchantOffer { +@@ -167,6 +169,16 @@ public class MerchantOffer { this.uses++; } @@ -168,7 +168,7 @@ index 9333c63f217e1207eced37c5be150e192f2fcc3e..0b1a086d3f101b42d95304c69f9e69f4 public int getDemand() { return this.demand; } -@@ -195,7 +207,7 @@ public class MerchantOffer { +@@ -196,7 +208,7 @@ public class MerchantOffer { } public boolean isOutOfStock() { diff --git a/leaves-server/unapplied/0081-Villager-infinite-discounts.patch b/leaves-server/minecraft-patches/features/0081-Villager-infinite-discounts.patch similarity index 100% rename from leaves-server/unapplied/0081-Villager-infinite-discounts.patch rename to leaves-server/minecraft-patches/features/0081-Villager-infinite-discounts.patch diff --git a/leaves-server/unapplied/0082-CCE-update-suppression.patch b/leaves-server/minecraft-patches/features/0082-CCE-update-suppression.patch similarity index 100% rename from leaves-server/unapplied/0082-CCE-update-suppression.patch rename to leaves-server/minecraft-patches/features/0082-CCE-update-suppression.patch diff --git a/leaves-server/unapplied/0083-Disable-offline-warn-if-use-proxy.patch b/leaves-server/minecraft-patches/features/0083-Disable-offline-warn-if-use-proxy.patch similarity index 93% rename from leaves-server/unapplied/0083-Disable-offline-warn-if-use-proxy.patch rename to leaves-server/minecraft-patches/features/0083-Disable-offline-warn-if-use-proxy.patch index 8b8e2aa1..638cbff2 100644 --- a/leaves-server/unapplied/0083-Disable-offline-warn-if-use-proxy.patch +++ b/leaves-server/minecraft-patches/features/0083-Disable-offline-warn-if-use-proxy.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable offline warn if use proxy diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 12c8486ff2a5a7140fde40babc4388f311a6401e..6846570f8e669341662b86cd9b693aa5fffc897e 100644 +index d587517dde1f5c3f57d8312ab1643c837fbd3056..9da70088b377f0b093aa12837861025a0522773d 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java @@ -246,7 +246,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/leaves-server/unapplied/0084-Armor-stand-cant-kill-by-mob-projectile.patch b/leaves-server/minecraft-patches/features/0084-Armor-stand-cant-kill-by-mob-projectile.patch similarity index 89% rename from leaves-server/unapplied/0084-Armor-stand-cant-kill-by-mob-projectile.patch rename to leaves-server/minecraft-patches/features/0084-Armor-stand-cant-kill-by-mob-projectile.patch index 8a2efc45..60977a4e 100644 --- a/leaves-server/unapplied/0084-Armor-stand-cant-kill-by-mob-projectile.patch +++ b/leaves-server/minecraft-patches/features/0084-Armor-stand-cant-kill-by-mob-projectile.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Armor stand cant kill by mob projectile diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index f09bf1f8b23aae530b14129b7a56c96285ef2cf1..a09bd2121d457cace3e38f321985cff8817b2a2f 100644 +index d7725b5ca689e3d5b512baab04e113be77c0b2ee..39b056d73bbdd06ba5cdb5368efcbcc128dc79ae 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -414,6 +414,15 @@ public class ArmorStand extends LivingEntity { +@@ -372,6 +372,15 @@ public class ArmorStand extends LivingEntity { // CraftBukkit end boolean isCanBreakArmorStand = damageSource.is(DamageTypeTags.CAN_BREAK_ARMOR_STAND); boolean isAlwaysKillsArmorStands = damageSource.is(DamageTypeTags.ALWAYS_KILLS_ARMOR_STANDS); diff --git a/leaves-server/unapplied/0085-Make-Item-tick-vanilla.patch b/leaves-server/minecraft-patches/features/0085-Make-Item-tick-vanilla.patch similarity index 81% rename from leaves-server/unapplied/0085-Make-Item-tick-vanilla.patch rename to leaves-server/minecraft-patches/features/0085-Make-Item-tick-vanilla.patch index 22d6f7dd..46f2ed06 100644 --- a/leaves-server/unapplied/0085-Make-Item-tick-vanilla.patch +++ b/leaves-server/minecraft-patches/features/0085-Make-Item-tick-vanilla.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make Item tick vanilla diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java -index 0cb2d5cd37171cd6e01748ed3d2ce99da1a15e3f..71c5dd7e58ecc3f4dce0c942a8ce88cb8898cf99 100644 +index 7040d2212f20bb2cd83198b6886074a6f430ee71..351a5fbc4b73098c321ad63119d0515de2271dd9 100644 --- a/net/minecraft/world/entity/item/ItemEntity.java +++ b/net/minecraft/world/entity/item/ItemEntity.java -@@ -140,6 +140,9 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -138,6 +138,9 @@ public class ItemEntity extends Entity implements TraceableEntity { // Paper start - EAR 2 @Override public void inactiveTick() { @@ -18,7 +18,7 @@ index 0cb2d5cd37171cd6e01748ed3d2ce99da1a15e3f..71c5dd7e58ecc3f4dce0c942a8ce88cb super.inactiveTick(); if (this.pickupDelay > 0 && this.pickupDelay != 32767) { this.pickupDelay--; -@@ -157,6 +160,8 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -155,6 +158,8 @@ public class ItemEntity extends Entity implements TraceableEntity { // CraftBukkit end this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause } diff --git a/leaves-server/unapplied/0086-Copper-Bulb-1-gt-delay.patch b/leaves-server/minecraft-patches/features/0086-Copper-Bulb-1-gt-delay.patch similarity index 100% rename from leaves-server/unapplied/0086-Copper-Bulb-1-gt-delay.patch rename to leaves-server/minecraft-patches/features/0086-Copper-Bulb-1-gt-delay.patch diff --git a/leaves-server/unapplied/0087-Crafter-1-gt-delay.patch b/leaves-server/minecraft-patches/features/0087-Crafter-1-gt-delay.patch similarity index 100% rename from leaves-server/unapplied/0087-Crafter-1-gt-delay.patch rename to leaves-server/minecraft-patches/features/0087-Crafter-1-gt-delay.patch diff --git a/leaves-server/unapplied/0088-More-Region-Format-Support.patch b/leaves-server/minecraft-patches/features/0088-More-Region-Format-Support.patch similarity index 98% rename from leaves-server/unapplied/0088-More-Region-Format-Support.patch rename to leaves-server/minecraft-patches/features/0088-More-Region-Format-Support.patch index 37db07b3..f6e28c8c 100644 --- a/leaves-server/unapplied/0088-More-Region-Format-Support.patch +++ b/leaves-server/minecraft-patches/features/0088-More-Region-Format-Support.patch @@ -21,7 +21,7 @@ index a814512fcfb85312474ae2c2c21443843bf57831..2b0349568f38321c893a8ffa16607350 public MoonriseRegionFileIO.RegionDataController.WriteData moonrise$startWrite( final int chunkX, final int chunkZ, final CompoundTag compound diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java b/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java -index 709df35246fb328cda21679b53d44d9f96206cb3..8fa38dcff5987e109423a2ed0a86abc9c5c195cd 100644 +index f5ed467c0880e4bcdf1b9ae773a5aac21c4381c3..349741f48bf21777b640a4698a0ae8da0b2487c5 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java @@ -1260,7 +1260,7 @@ public final class MoonriseRegionFileIO { @@ -54,10 +54,10 @@ index 51c126735ace8fdde89ad97b5cab62f244212db0..a6573e327ace16b7ea320eb1440ffcbc + public void moonrise$write(final org.leavesmc.leaves.region.IRegionFile regionFile) throws IOException; // Leaves - more region format } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 2005719308a281128a5edc24a563df929418c6e3..f1681577f27a618338cae1634094e728c98fc3ff 100644 +index f880cfc9394454bc090f41bc51fbc29b382fab31..1c26b6767b53c7e90764f7ec42503dfbe9c49bc6 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -943,10 +943,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop