diff --git a/patches/server/0010-Add-fakeplayer-support.patch b/patches/server/0010-Add-fakeplayer-support.patch index 7dfe9dc8..3b4932f7 100644 --- a/patches/server/0010-Add-fakeplayer-support.patch +++ b/patches/server/0010-Add-fakeplayer-support.patch @@ -29,7 +29,7 @@ index b16287a47870978706734b928b87f2357e91e3a1..407c71621769f91955f0b3d2d87b4014 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 188c68d4ae46bc05c6d9c901b5c6ab883fa05ea4..ec4616f6c7c4869e526dd214f0ed13c85f145e9e 100644 +index 624946f48f0811c94d05174f28d0b1fc6d5e6a00..894aa46c7ee6b249107291d5042bae4bf908c9ab 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -92,6 +92,7 @@ import net.minecraft.world.scores.Objective; @@ -123,10 +123,10 @@ index a85a5de7d85cf6c5e19c0245c40e6106e6623007..898c61c25675232e203ee2c872ca2580 public final String worldName; 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..e0b3865f4f464c65be91b8fc7316ecea34cea334 +index 0000000000000000000000000000000000000000..48b10adcb7f86aed364c9286e37af260829e9308 --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java -@@ -0,0 +1,475 @@ +@@ -0,0 +1,483 @@ +package top.leavesmc.leaves.bot; + +import com.mojang.authlib.GameProfile; @@ -167,8 +167,12 @@ index 0000000000000000000000000000000000000000..e0b3865f4f464c65be91b8fc7316ecea +import org.bukkit.block.Block; +import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.craftbukkit.entity.CraftPlayer; ++import org.bukkit.craftbukkit.inventory.CraftItemStack; ++import org.bukkit.craftbukkit.scheduler.MinecraftInternalPlugin; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.CreatureSpawnEvent; ++import org.bukkit.inventory.ItemStack; ++import org.bukkit.plugin.Plugin; +import org.bukkit.util.BoundingBox; +import org.bukkit.util.Vector; +import top.leavesmc.leaves.util.MathUtils; @@ -191,6 +195,7 @@ index 0000000000000000000000000000000000000000..e0b3865f4f464c65be91b8fc7316ecea + private byte noFallTicks; + + private static final Set bots = new HashSet<>(); ++ private static final Plugin MINECRAFT_PLUGIN = new MinecraftInternalPlugin(); + + public Bot(MinecraftServer server, ServerLevel world, GameProfile profile) { + super(server, world, profile); @@ -203,8 +208,11 @@ index 0000000000000000000000000000000000000000..e0b3865f4f464c65be91b8fc7316ecea + this.removeOnDeath = true; + } + -+ public static Bot createBot(Location loc, String name) { -+ return createBot(loc, name, MojangAPI.getSkin(name)); ++ public static void createBot(Location loc, String name) { ++ Bukkit.getScheduler().runTaskAsynchronously(MINECRAFT_PLUGIN, () -> { ++ String[] skin = MojangAPI.getSkin(name); ++ Bukkit.getScheduler().runTask(MINECRAFT_PLUGIN, () -> createBot(loc, name, skin)); ++ }); + } + + public static Bot createBot(Location loc, String name, String[] skin) { diff --git a/patches/server/0011-Add-fakeplayer-action-support.patch b/patches/server/0011-Add-fakeplayer-action-support.patch index 50680376..99703aae 100644 --- a/patches/server/0011-Add-fakeplayer-action-support.patch +++ b/patches/server/0011-Add-fakeplayer-action-support.patch @@ -30,7 +30,7 @@ index 898c61c25675232e203ee2c872ca25804c41358c..4d6d025c78086f186da710ae46f65eda } diff --git a/src/main/java/top/leavesmc/leaves/bot/Bot.java b/src/main/java/top/leavesmc/leaves/bot/Bot.java -index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e104e9018d 100644 +index 48b10adcb7f86aed364c9286e37af260829e9308..5cf6e0b679222afe6b22b0096dbcc1d047ad6ae0 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 @@ @@ -54,7 +54,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.server.MinecraftServer; -@@ -22,9 +26,13 @@ import net.minecraft.server.level.TicketType; +@@ -22,11 +26,14 @@ import net.minecraft.server.level.TicketType; import net.minecraft.server.network.ServerGamePacketListenerImpl; import net.minecraft.server.network.ServerPlayerConnection; import net.minecraft.util.Mth; @@ -66,16 +66,12 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.level.ChunkPos; - import net.minecraft.world.level.Level; +-import net.minecraft.world.level.Level; import net.minecraft.world.level.chunk.LevelChunk; -@@ -38,14 +46,20 @@ import org.bukkit.World; - import org.bukkit.block.Block; - import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.craftbukkit.entity.CraftPlayer; -+import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.entity.Player; - import org.bukkit.event.entity.CreatureSpawnEvent; -+import org.bukkit.inventory.ItemStack; + import net.minecraft.world.phys.AABB; + import net.minecraft.world.phys.Vec3; +@@ -46,10 +53,14 @@ import org.bukkit.inventory.ItemStack; + import org.bukkit.plugin.Plugin; import org.bukkit.util.BoundingBox; import org.bukkit.util.Vector; +import top.leavesmc.leaves.bot.agent.BotAction; @@ -89,7 +85,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 import java.util.Objects; import java.util.Set; import java.util.UUID; -@@ -54,12 +68,17 @@ public class Bot extends ServerPlayer { +@@ -58,12 +69,17 @@ public class Bot extends ServerPlayer { private Vector velocity; private Vector oldVelocity; @@ -110,8 +106,8 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 + private final ItemStack defaultItem; private static final Set bots = new HashSet<>(); - -@@ -68,9 +87,12 @@ public class Bot extends ServerPlayer { + private static final Plugin MINECRAFT_PLUGIN = new MinecraftInternalPlugin(); +@@ -73,9 +89,12 @@ public class Bot extends ServerPlayer { this.entityData.set(new EntityDataAccessor<>(16, EntityDataSerializers.INT), 0xFF); this.velocity = new Vector(0, 0, 0); @@ -124,7 +120,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 this.removeOnDeath = true; } -@@ -156,12 +178,17 @@ public class Bot extends ServerPlayer { +@@ -164,12 +183,17 @@ public class Bot extends ServerPlayer { } } @@ -142,7 +138,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 // die check end @Override -@@ -169,10 +196,6 @@ public class Bot extends ServerPlayer { +@@ -177,10 +201,6 @@ public class Bot extends ServerPlayer { return groundTicks != 0; } @@ -153,7 +149,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 public static boolean solidAt(Location loc) { Block block = loc.getBlock(); BoundingBox box = block.getBoundingBox(); -@@ -261,12 +284,24 @@ public class Bot extends ServerPlayer { +@@ -269,12 +289,24 @@ public class Bot extends ServerPlayer { public void tick() { loadChunks(); // Load chunks super.tick(); @@ -182,7 +178,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 if (checkGround()) { if (groundTicks < 5) groundTicks++; -@@ -294,7 +329,88 @@ public class Bot extends ServerPlayer { +@@ -302,7 +334,88 @@ public class Bot extends ServerPlayer { checkOutOfWorld(); @@ -271,7 +267,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 } @Override -@@ -327,21 +443,6 @@ public class Bot extends ServerPlayer { +@@ -335,21 +448,6 @@ public class Bot extends ServerPlayer { } } @@ -293,7 +289,7 @@ index e0b3865f4f464c65be91b8fc7316ecea34cea334..0d74cdc19865c5068cec67d65da1a9e1 public Location getLocation() { return getBukkitPlayer().getLocation(); } -@@ -433,6 +534,68 @@ public class Bot extends ServerPlayer { +@@ -441,6 +539,68 @@ public class Bot extends ServerPlayer { this.move(MoverType.SELF, new Vec3(velocity.getX(), y, velocity.getZ())); }