9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-29 20:09:23 +00:00

Make fakeplayer skin get asynchronously

This commit is contained in:
violetc
2022-06-05 14:06:09 +08:00
parent acad9def3d
commit 54ecb6ac8f
2 changed files with 29 additions and 25 deletions

View File

@@ -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<Bot> 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) {

View File

@@ -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<Bot> 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()));
}