diff --git a/gradle.properties b/gradle.properties index f0e65ba1..9e17c503 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = top.leavesmc.leaves -version = 1.18.1-R0.1-SNAPSHOT +version = 1.18.2-R0.1-SNAPSHOT -mcVersion = 1.18.1 -packageVersion = 1_18_R1 +mcVersion = 1.18.2 +packageVersion = 1_18_R2 org.gradle.jvmargs=-Xmx2G -paperRef=7f65b0b589cf3d3da81925e4dd09d967ba6b0b6c +paperRef=42a9c3789d6f71b9641b7de5812656ef9281ba52 diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index c67e3ded..503aca94 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 4662952bd0a389fe77e00ede9ab4a57f33522794..db83976d235386882ee9d8e024302e8a254ee0e2 100644 +index 4beb35d1e5b013395f5df101e843f41c2ce174ad..19e73e560e9aedcb1b5cd62a45d8477cb49e5f57 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,8 +18,12 @@ repositories { @@ -71,10 +71,10 @@ index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..6105f3bdc6e698b07181b10aec588225 metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c847a2b935130a293d9ac4c196c9cff27470649b..09263e49f520a9a8984ba941fe50e70190d1242a 100644 +index 07c382f30ed3736ed15b5b71f48dc4a1de958242..164ed3eeae7c074cbf906cd693734e8f4edc8be4 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1719,7 +1719,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourcekey, final DimensionType dimensionmanager, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor +@@ -264,6 +266,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper + this.leavesConfig = new top.leavesmc.leaves.LeavesConfig.WorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData)worlddatamutable).getLevelName()); // Leaves - World Config @@ -67,10 +67,10 @@ index 11e146241a01ab9ec206b9d3f39aebf5c201a16e..4f1ef148a8b98c373571eef3ea09902f this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index db4e750ecff0626a52bac2d68fe26f180af29da9..97d2bf70991629725ffa565efab4a37b4cc4cca7 100644 +index 25b9d4ccedb9df8b5134a15aa81ccf391db6b8da..85aec3b017e11ab94cc0846be019fb5d632127f9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -958,6 +958,7 @@ public final class CraftServer implements Server { +@@ -955,6 +955,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper @@ -78,7 +78,7 @@ index db4e750ecff0626a52bac2d68fe26f180af29da9..97d2bf70991629725ffa565efab4a37b for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -974,6 +975,7 @@ public final class CraftServer implements Server { +@@ -971,6 +972,7 @@ public final class CraftServer implements Server { } world.spigotConfig.init(); // Spigot world.paperConfig.init(); // Paper @@ -86,7 +86,7 @@ index db4e750ecff0626a52bac2d68fe26f180af29da9..97d2bf70991629725ffa565efab4a37b } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -2697,6 +2699,14 @@ public final class CraftServer implements Server { +@@ -2673,6 +2675,14 @@ public final class CraftServer implements Server { { return com.destroystokyo.paper.PaperConfig.config; } @@ -102,7 +102,7 @@ index db4e750ecff0626a52bac2d68fe26f180af29da9..97d2bf70991629725ffa565efab4a37b @Override public void restart() { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 840bd9cbbd57ad6c76e5cc8cf27318f543ceffaa..b44d7651df9eb87d2a82c41e78195e2c4c60eba7 100644 +index 34c2ca3571438d84c13fd5a4562ee49ecceb95cb..909f0e1ff837bac4d3213214adee01a11098f77c 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -145,6 +145,14 @@ public class Main { diff --git a/patches/server/0004-Fix-gravity-block-duper.patch b/patches/server/0004-Fix-gravity-block-duper.patch index 91bb547a..c4b7186f 100644 --- a/patches/server/0004-Fix-gravity-block-duper.patch +++ b/patches/server/0004-Fix-gravity-block-duper.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix gravity block duper diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4584dcec835f97e94dcf12788b66703075dafe45..a5d2f07881761bb7a00a05d5767abf177ea2837d 100644 +index 84fce7dccf9232209f939a32acfc3131e62eb27c..cbe48b0add7134100c3da87c07ecee36cef8c69d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -395,36 +395,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -398,36 +398,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); } // Paper end - optimise entity tracking @@ -46,7 +46,7 @@ index 4584dcec835f97e94dcf12788b66703075dafe45..a5d2f07881761bb7a00a05d5767abf17 // Paper start /** -@@ -2767,7 +2739,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -2801,7 +2773,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i } this.processPortalCooldown(); @@ -56,10 +56,10 @@ index 4584dcec835f97e94dcf12788b66703075dafe45..a5d2f07881761bb7a00a05d5767abf17 } diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 0c94b4cb6ee0c3dffe0b67a2291d0160ae0ef96f..ef147a7dc3d233e33435d94e238619e749f9704d 100644 +index c267bc75a5a2a410d941accbe8c41e3422a634a5..dd03e377d03d82dff4719da23dacc3878b8b94ea 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -@@ -110,11 +110,7 @@ public class FallingBlockEntity extends Entity { +@@ -119,11 +119,7 @@ public class FallingBlockEntity extends Entity { @Override public void tick() { @@ -71,8 +71,8 @@ index 0c94b4cb6ee0c3dffe0b67a2291d0160ae0ef96f..ef147a7dc3d233e33435d94e238619e7 + // Leaves - fix gravity block duper if (this.blockState.isAir()) { this.discard(); - } else if (this.level.isClientSide && this.removeAtMillis > 0L) { -@@ -152,11 +148,7 @@ public class FallingBlockEntity extends Entity { + } else { +@@ -136,11 +132,7 @@ public class FallingBlockEntity extends Entity { this.move(MoverType.SELF, this.getDeltaMovement()); diff --git a/patches/server/0005-Fix-trading-with-the-void.patch b/patches/server/0005-Fix-trading-with-the-void.patch index b305e598..d2071381 100644 --- a/patches/server/0005-Fix-trading-with-the-void.patch +++ b/patches/server/0005-Fix-trading-with-the-void.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix trading with the void diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 768017ba650f1bd96e3db0aad8fda939e2ea7add..d3df136a3dc9ae93d0b38d90c00d4cbacb270127 100644 +index b5b56d4549e97abbbe9e91d881b9bca8428f1eec..272130e7bf2f72e1f68123f01e307263665dd328 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2480,11 +2480,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2494,11 +2494,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message diff --git a/patches/server/0008-Add-Leaves-Command.patch b/patches/server/0008-Add-Leaves-Command.patch index 39e526b1..4e8a1b3b 100644 --- a/patches/server/0008-Add-Leaves-Command.patch +++ b/patches/server/0008-Add-Leaves-Command.patch @@ -5,67 +5,10 @@ Subject: [PATCH] Add Leaves Command diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index eda9ce9953943996ca000d762e15b7e6d5f45825..24a2a229bee621fe421553647198e21dad0ba072 100644 +index e92b98177189df1b162b648c0e259035c7ec2263..4f0d97c51db4313a73e46878546ca4c192b483d0 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -1,26 +1,11 @@ - package net.minecraft.server.dedicated; - -+import co.aikar.timings.MinecraftTimings; - import com.google.common.base.Strings; --import com.google.common.collect.Lists; - import com.mojang.authlib.GameProfile; - import com.mojang.authlib.GameProfileRepository; - import com.mojang.authlib.minecraft.MinecraftSessionService; - import com.mojang.datafixers.DataFixer; --import java.io.BufferedReader; --import java.io.BufferedWriter; --import java.io.IOException; --import java.io.InputStreamReader; --import java.net.InetAddress; --import java.net.Proxy; --import java.nio.charset.StandardCharsets; --import java.nio.file.Files; --import java.nio.file.Path; --import java.util.Collections; --import java.util.List; --import java.util.Locale; --import java.util.function.BooleanSupplier; --import java.util.regex.Pattern; --import javax.annotation.Nullable; - import net.minecraft.DefaultUncaughtExceptionHandler; - import net.minecraft.DefaultUncaughtExceptionHandlerWithName; - import net.minecraft.SharedConstants; -@@ -58,15 +43,25 @@ import net.minecraft.world.level.GameType; - import net.minecraft.world.level.block.entity.SkullBlockEntity; - import net.minecraft.world.level.storage.LevelStorageSource; - import net.minecraft.world.level.storage.WorldData; -+import org.apache.logging.log4j.Level; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --import org.apache.logging.log4j.Level; - import org.apache.logging.log4j.io.IoBuilder; - import org.bukkit.command.CommandSender; --import co.aikar.timings.MinecraftTimings; // Paper --import org.bukkit.event.server.ServerCommandEvent; - import org.bukkit.craftbukkit.util.Waitable; - import org.bukkit.event.server.RemoteServerCommandEvent; -+import org.bukkit.event.server.ServerCommandEvent; -+ -+import javax.annotation.Nullable; -+import java.io.BufferedWriter; -+import java.io.IOException; -+import java.net.InetAddress; -+import java.net.Proxy; -+import java.nio.file.Files; -+import java.nio.file.Path; -+import java.util.Locale; -+import java.util.function.BooleanSupplier; -+import java.util.regex.Pattern; - // CraftBukkit end - - public class DedicatedServer extends MinecraftServer implements ServerInterface { -@@ -234,6 +229,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -237,6 +237,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface // Paper end top.leavesmc.leaves.LeavesConfig.init((java.io.File) options.valueOf("leaves-settings")); // Leaves - Server Config @@ -74,10 +17,10 @@ index eda9ce9953943996ca000d762e15b7e6d5f45825..24a2a229bee621fe421553647198e21d this.setPvpAllowed(dedicatedserverproperties.pvp); this.setFlightAllowed(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 97d2bf70991629725ffa565efab4a37b4cc4cca7..42d2a7f04a09ce4aaac4bdca091841f724a07520 100644 +index 85aec3b017e11ab94cc0846be019fb5d632127f9..d71577feb77a67d8a1e048b1fdd6d8ac276a6473 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -991,6 +991,7 @@ public final class CraftServer implements Server { +@@ -988,6 +988,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper diff --git a/patches/server/0010-Add-fakeplayer-support.patch b/patches/server/0010-Add-fakeplayer-support.patch index 148539d9..f78d774d 100644 --- a/patches/server/0010-Add-fakeplayer-support.patch +++ b/patches/server/0010-Add-fakeplayer-support.patch @@ -5,56 +5,18 @@ Subject: [PATCH] Add fakeplayer support diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index f7959fe8d5247504dd79a18010470d98781c7cfe..a77dc509dd65d4e49315b16902063d08feadcb28 100644 +index b16287a47870978706734b928b87f2357e91e3a1..407c71621769f91955f0b3d2d87b4014f816737e 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java -@@ -15,21 +15,6 @@ import com.google.gson.stream.JsonReader; - import com.mojang.datafixers.DataFixer; - import com.mojang.serialization.Dynamic; - import com.mojang.serialization.JsonOps; --import java.io.File; --import java.io.FileOutputStream; --import java.io.IOException; --import java.io.OutputStreamWriter; --import java.io.StringReader; --import java.nio.charset.StandardCharsets; --import java.util.Comparator; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Map.Entry; --import java.util.Set; --import java.util.stream.Collectors; --import java.util.stream.Stream; --import javax.annotation.Nullable; - import net.minecraft.SharedConstants; - import net.minecraft.Util; - import net.minecraft.advancements.Advancement; -@@ -51,6 +36,23 @@ import net.minecraft.util.datafix.DataFixTypes; +@@ -51,6 +51,7 @@ import net.minecraft.server.players.PlayerList; + import net.minecraft.util.datafix.DataFixTypes; import net.minecraft.world.level.GameRules; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; + import org.slf4j.Logger; +import top.leavesmc.leaves.bot.Bot; -+ -+import javax.annotation.Nullable; -+import java.io.File; -+import java.io.FileOutputStream; -+import java.io.IOException; -+import java.io.OutputStreamWriter; -+import java.io.StringReader; -+import java.nio.charset.StandardCharsets; -+import java.util.Comparator; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; -+import java.util.Map.Entry; -+import java.util.Set; -+import java.util.stream.Collectors; -+import java.util.stream.Stream; public class PlayerAdvancements { -@@ -275,6 +277,11 @@ public class PlayerAdvancements { +@@ -275,6 +276,11 @@ public class PlayerAdvancements { } public boolean award(Advancement advancement, String criterionName) { @@ -67,118 +29,23 @@ index f7959fe8d5247504dd79a18010470d98781c7cfe..a77dc509dd65d4e49315b16902063d08 AdvancementProgress advancementprogress = this.getOrStartProgress(advancement); boolean flag1 = advancementprogress.isDone(); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 7a0c1ba40156df69bbbf36d96bed0950130d2351..8285d83edeb70c4a368ead68dadd0b4861a7f6a3 100644 +index 02dc93c394d37c9a84aa4a58d80615c403c54fb9..d93311c3a60e54378b97286bbe7dc73ee6d5f119 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1,6 +1,7 @@ - package net.minecraft.server.players; - - import co.aikar.timings.MinecraftTimings; -+import com.google.common.base.Predicate; - import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; -@@ -9,20 +10,6 @@ import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; - import io.netty.buffer.Unpooled; - import io.papermc.paper.adventure.PaperAdventure; --import java.io.File; --import java.net.SocketAddress; --import java.nio.file.Path; --import java.text.SimpleDateFormat; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Objects; --import java.util.Optional; --import java.util.Set; --import java.util.UUID; --import java.util.function.Function; --import javax.annotation.Nullable; - import net.minecraft.ChatFormatting; - import net.minecraft.FileUtil; - import net.minecraft.Util; -@@ -37,7 +24,6 @@ import net.minecraft.network.chat.Component; - import net.minecraft.network.chat.TranslatableComponent; - import net.minecraft.network.protocol.Packet; - import net.minecraft.network.protocol.game.ClientboundChangeDifficultyPacket; --import net.minecraft.network.protocol.game.ClientboundChatPacket; - import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; - import net.minecraft.network.protocol.game.ClientboundDisconnectPacket; - import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; -@@ -68,6 +54,15 @@ import net.minecraft.resources.ResourceKey; - import net.minecraft.server.MinecraftServer; - import net.minecraft.server.PlayerAdvancements; - import net.minecraft.server.ServerScoreboard; -+import net.minecraft.server.dedicated.DedicatedServer; -+import net.minecraft.server.level.ServerLevel; -+import net.minecraft.server.level.ServerPlayer; -+import net.minecraft.server.network.ServerGamePacketListenerImpl; -+import net.minecraft.server.network.ServerLoginPacketListenerImpl; -+import net.minecraft.sounds.SoundEvents; -+import net.minecraft.sounds.SoundSource; -+import net.minecraft.stats.ServerStatsCounter; -+import net.minecraft.stats.Stats; - import net.minecraft.tags.BlockTags; - import net.minecraft.tags.Tag; - import net.minecraft.util.Mth; -@@ -93,31 +88,34 @@ import net.minecraft.world.scores.Scoreboard; // Paper +@@ -92,6 +92,7 @@ import net.minecraft.world.scores.Objective; + import net.minecraft.world.scores.PlayerTeam; + import net.minecraft.world.scores.Scoreboard; // Paper import net.minecraft.world.scores.Team; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import io.papermc.paper.adventure.PaperAdventure; // Paper --import com.google.common.base.Predicate; --import java.util.stream.Collectors; --import net.minecraft.server.dedicated.DedicatedServer; --import net.minecraft.server.level.ServerLevel; --import net.minecraft.server.level.ServerPlayer; --import net.minecraft.server.network.ServerGamePacketListenerImpl; --import net.minecraft.server.network.ServerLoginPacketListenerImpl; --import net.minecraft.sounds.SoundEvents; --import net.minecraft.sounds.SoundSource; --import net.minecraft.stats.ServerStatsCounter; --import net.minecraft.stats.Stats; - import org.bukkit.Location; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.craftbukkit.entity.CraftPlayer; --import org.bukkit.craftbukkit.util.CraftChatMessage; - import org.bukkit.entity.Player; - import org.bukkit.event.player.PlayerChangedWorldEvent; - import org.bukkit.event.player.PlayerJoinEvent; - import org.bukkit.event.player.PlayerLoginEvent; - import org.bukkit.event.player.PlayerQuitEvent; - import org.bukkit.event.player.PlayerRespawnEvent; -+import top.leavesmc.leaves.LeavesConfig; +import top.leavesmc.leaves.bot.Bot; -+ -+import javax.annotation.Nullable; -+import java.io.File; -+import java.net.SocketAddress; -+import java.nio.file.Path; -+import java.text.SimpleDateFormat; -+import java.util.Collection; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; -+import java.util.Objects; -+import java.util.Optional; -+import java.util.Set; -+import java.util.UUID; -+import java.util.function.Function; -+import java.util.stream.Collectors; - // CraftBukkit end + import org.slf4j.Logger; - public abstract class PlayerList { -@@ -366,6 +364,17 @@ public abstract class PlayerList { + // CraftBukkit start +@@ -366,6 +367,17 @@ public abstract class PlayerList { return; } + // Leaves start - bot support -+ if (LeavesConfig.fakeplayerSupport) { ++ if (top.leavesmc.leaves.LeavesConfig.fakeplayerSupport) { + Bot bot = Bot.getBot(player.getName().getString()); + if (bot != null) { + bot.kill(); // Leaves - remove bot with the same name @@ -232,7 +99,7 @@ index a73c79e57f51a6ab0f0d0b37fa6c87ff9bd69325..4b8d05838bd70a2932a36a5919436861 MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Leaves", entry.getValue()); diff --git a/src/main/java/top/leavesmc/leaves/bot/Bot.java b/src/main/java/top/leavesmc/leaves/bot/Bot.java new file mode 100644 -index 0000000000000000000000000000000000000000..18bd3b869a9ebd7cdef8da8c46d4da749b6fa3da +index 0000000000000000000000000000000000000000..ff7c96e48e266813598e0bd06fe9fc50587aa181 --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java @@ -0,0 +1,471 @@ @@ -435,7 +302,7 @@ index 0000000000000000000000000000000000000000..18bd3b869a9ebd7cdef8da8c46d4da74 + for (int i = chunkPosition().x - 1; i <= chunkPosition().x + 1; i++) { + for (int j = chunkPosition().z - 1; j <= chunkPosition().z + 1; j++) { + ChunkPos chunk = world.getChunk(i, j).getPos(); -+ world.chunkSource.chunkMap.distanceManager.addTicketAtLevel(TicketType.PLAYER, chunk, 31, chunk); ++ world.chunkSource.chunkMap.distanceManager.addTicket(TicketType.PLAYER, chunk, 31, chunk); + } + } + } diff --git a/patches/server/0011-Add-fakeplayer-action-support.patch b/patches/server/0011-Add-fakeplayer-action-support.patch index fb15e841..262aba78 100644 --- a/patches/server/0011-Add-fakeplayer-action-support.patch +++ b/patches/server/0011-Add-fakeplayer-action-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add fakeplayer action support diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index d85da02be7f1d494af8f2cc840c49073774f5f9c..7a3f18d3efcf6c1ec665ecdde0019a15adf7da25 100644 +index 9c767096ca950d55d6002282c7a3fe2884bcd630..dcae420f13a03c6ec0f8d8cb414dc283bb3d1e88 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1231,7 +1231,7 @@ public abstract class Player extends LivingEntity { +@@ -1244,7 +1244,7 @@ public abstract class Player extends LivingEntity { boolean flag3 = false; double d0 = (double) (this.walkDist - this.walkDistO); @@ -30,7 +30,7 @@ index 4b8d05838bd70a2932a36a5919436861b8e41c0b..def8ab8bf0537e648751b200de016071 } diff --git a/src/main/java/top/leavesmc/leaves/bot/Bot.java b/src/main/java/top/leavesmc/leaves/bot/Bot.java -index 18bd3b869a9ebd7cdef8da8c46d4da749b6fa3da..71619f750819ab213b1cae23873eb60f0acb37d7 100644 +index ff7c96e48e266813598e0bd06fe9fc50587aa181..13d3a24fc43e7f00d2c6cb0252a3ab955eb62202 100644 --- a/src/main/java/top/leavesmc/leaves/bot/Bot.java +++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java @@ -1,9 +1,12 @@ diff --git a/patches/server/0012-Make-shears-in-dispenser-can-unlimited-use.patch b/patches/server/0012-Make-shears-in-dispenser-can-unlimited-use.patch index 4eceefa4..a7db1bae 100644 --- a/patches/server/0012-Make-shears-in-dispenser-can-unlimited-use.patch +++ b/patches/server/0012-Make-shears-in-dispenser-can-unlimited-use.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make shears in dispenser can unlimited use diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index c861505325efecfb53069ce44c14bc20fb851c59..ce97355a14defbe6457f00f5d99fecebe8306396 100644 +index 2366d411bf64f88c7296e888cd3bf584825ae4a9..f8bc12bf746b1e32735081cb330b31d0c36d4c1d 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java @@ -1,7 +1,5 @@ @@ -16,7 +16,7 @@ index c861505325efecfb53069ce44c14bc20fb851c59..ce97355a14defbe6457f00f5d99feceb import net.minecraft.core.BlockPos; import net.minecraft.core.BlockSource; import net.minecraft.core.Direction; -@@ -23,10 +21,12 @@ import net.minecraft.world.level.block.entity.BeehiveBlockEntity; +@@ -22,10 +20,12 @@ import net.minecraft.world.level.block.entity.BeehiveBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.phys.AABB; @@ -30,7 +30,7 @@ index c861505325efecfb53069ce44c14bc20fb851c59..ce97355a14defbe6457f00f5d99feceb // CraftBukkit end public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { -@@ -64,7 +64,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { +@@ -63,7 +63,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { BlockPos blockposition = pointer.getPos().relative((Direction) pointer.getBlockState().getValue(DispenserBlock.FACING)); this.setSuccess(ShearsDispenseItemBehavior.tryShearBeehive((ServerLevel) worldserver, blockposition) || ShearsDispenseItemBehavior.tryShearLivingEntity((ServerLevel) worldserver, blockposition, bukkitBlock, craftItem)); // CraftBukkit