mirror of
https://github.com/LeavesMC/Leaves.git
synced 2025-12-24 09:29:22 +00:00
Fix fakeplayer And add more api
This commit is contained in:
@@ -21,36 +21,46 @@ index 0000000000000000000000000000000000000000..d4afe549b5e1aba7d468450c5e1570d2
|
||||
+}
|
||||
diff --git a/src/main/java/top/leavesmc/leaves/event/bot/BotCreateEvent.java b/src/main/java/top/leavesmc/leaves/event/bot/BotCreateEvent.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..9424a0b82ebfedd571e759db4f41d51364ad0b88
|
||||
index 0000000000000000000000000000000000000000..913a750e7ce042dd945be744f5c12343f3fddd9b
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/top/leavesmc/leaves/event/bot/BotCreateEvent.java
|
||||
@@ -0,0 +1,84 @@
|
||||
@@ -0,0 +1,94 @@
|
||||
+package top.leavesmc.leaves.event.bot;
|
||||
+
|
||||
+import org.bukkit.Location;
|
||||
+import org.bukkit.event.Cancellable;
|
||||
+import org.bukkit.event.Event;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+import top.leavesmc.leaves.entity.Bot;
|
||||
+
|
||||
+/**
|
||||
+ * Call when a fakeplayer creates a server
|
||||
+ */
|
||||
+public class BotCreateEvent extends BotEvent implements Cancellable {
|
||||
+public class BotCreateEvent extends Event implements Cancellable {
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+
|
||||
+ private final String bot;
|
||||
+ private String joinMessage;
|
||||
+ private Location createLocation;
|
||||
+ private boolean cancel = false;
|
||||
+
|
||||
+ public BotCreateEvent(@NotNull final Bot who, @NotNull final Location createLocation, @Nullable final String joinMessage) {
|
||||
+ super(who);
|
||||
+ public BotCreateEvent(@NotNull final String who, @NotNull final Location createLocation, @Nullable final String joinMessage) {
|
||||
+ this.bot = who;
|
||||
+ this.joinMessage = joinMessage;
|
||||
+ this.createLocation = createLocation;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the fakeplayer name
|
||||
+ *
|
||||
+ * @return fakeplayer name
|
||||
+ */
|
||||
+ public String getBot() {
|
||||
+ return bot;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the join message to send to all online players
|
||||
+ *
|
||||
+ * @return string join message. Can be null
|
||||
@@ -146,3 +156,36 @@ index 0000000000000000000000000000000000000000..4a4fe07ce965d4a97e0d8105a91310da
|
||||
+ return bot;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/top/leavesmc/leaves/event/bot/BotJoinEvent.java b/src/main/java/top/leavesmc/leaves/event/bot/BotJoinEvent.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..10afa5c7fd4ee8a4e72d64f8ca9bf8731ec2ad61
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/top/leavesmc/leaves/event/bot/BotJoinEvent.java
|
||||
@@ -0,0 +1,27 @@
|
||||
+package top.leavesmc.leaves.event.bot;
|
||||
+
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import top.leavesmc.leaves.entity.Bot;
|
||||
+
|
||||
+/**
|
||||
+ * Called when a fakeplayer joins a server
|
||||
+ */
|
||||
+public class BotJoinEvent extends BotEvent {
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+
|
||||
+ public BotJoinEvent(@NotNull Bot who) {
|
||||
+ super(who);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
|
||||
@@ -28,8 +28,34 @@ index de0513b38e5fa0138f1cee6bb633561be12449fc..8548ef7f79e85aca593928b8e748d8b6
|
||||
boolean flag = false;
|
||||
AdvancementProgress advancementprogress = this.getOrStartProgress(advancement);
|
||||
boolean flag1 = advancementprogress.isDone();
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 5f0d934399991ae94795ad0a94da689c242ffeba..17daf0e9ef3b3ea79f49388113b87052a2ef87e1 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -173,6 +173,7 @@ import org.bukkit.event.player.PlayerPortalEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.inventory.MainHand;
|
||||
+import top.leavesmc.leaves.bot.ServerBot;
|
||||
// CraftBukkit end
|
||||
|
||||
public class ServerPlayer extends Player {
|
||||
@@ -1179,6 +1180,13 @@ public class ServerPlayer extends Player {
|
||||
this.lastSentHealth = -1.0F;
|
||||
this.lastSentFood = -1;
|
||||
|
||||
+ // Leaves start - bot support
|
||||
+ if (top.leavesmc.leaves.LeavesConfig.fakeplayerSupport) {
|
||||
+ ServerBot.getBots().forEach(bot1 ->
|
||||
+ bot1.render(this.connection, true,this.getBukkitEntity().getWorld() == bot1.getBukkitEntity().getWorld())); // Leaves - render bot
|
||||
+ }
|
||||
+ // Leaves end - bot support
|
||||
+
|
||||
// CraftBukkit start
|
||||
PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld());
|
||||
this.level.getCraftServer().getPluginManager().callEvent(changeEvent);
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 20cdfdb3b9351f74e89bc45b3ab972384165659a..fe38a9cd9724d0547e0d1689153a8c155c377d0c 100644
|
||||
index 20cdfdb3b9351f74e89bc45b3ab972384165659a..e7d425fc7187dad45416827260804c6b93117032 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -100,10 +100,10 @@ import net.minecraft.world.scores.Objective;
|
||||
@@ -52,7 +78,7 @@ index 20cdfdb3b9351f74e89bc45b3ab972384165659a..fe38a9cd9724d0547e0d1689153a8c15
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
@@ -368,6 +367,17 @@ public abstract class PlayerList {
|
||||
@@ -368,6 +367,18 @@ public abstract class PlayerList {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -63,7 +89,8 @@ index 20cdfdb3b9351f74e89bc45b3ab972384165659a..fe38a9cd9724d0547e0d1689153a8c15
|
||||
+ bot.kill(); // Leaves - remove bot with the same name
|
||||
+ }
|
||||
+
|
||||
+ ServerBot.getBots().forEach(bot1 -> bot1.render(playerconnection, true)); // Leaves - render bot
|
||||
+ ServerBot.getBots().forEach(bot1 ->
|
||||
+ bot1.render(playerconnection, true,player.getBukkitEntity().getWorld() == bot1.getBukkitEntity().getWorld())); // Leaves - render bot
|
||||
+ }
|
||||
+ // Leaves end - bot support
|
||||
+
|
||||
@@ -71,7 +98,7 @@ index 20cdfdb3b9351f74e89bc45b3ab972384165659a..fe38a9cd9724d0547e0d1689153a8c15
|
||||
|
||||
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
index 2a6c67634c31c332102d24bef293da1bacd0c000..877c9fa13c0ff1fbc90d957258bd0bc1f42c0fd4 100644
|
||||
index b80cc0938b2b3928f4450f1314a9fbd7ea9c116b..8624cfb27246c1e39994d14a3cef48e68a3a3488 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
@@ -187,6 +187,8 @@ import org.bukkit.plugin.Plugin;
|
||||
@@ -316,10 +343,10 @@ index 0000000000000000000000000000000000000000..daaece30b2a3983f1cc9ee9a851e8f37
|
||||
+}
|
||||
diff --git a/src/main/java/top/leavesmc/leaves/bot/ServerBot.java b/src/main/java/top/leavesmc/leaves/bot/ServerBot.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..b833653b671df660686134754c794d3e6686b112
|
||||
index 0000000000000000000000000000000000000000..24d90f94da2d2ddea7e7134568b6bfcbe8c53ec3
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/top/leavesmc/leaves/bot/ServerBot.java
|
||||
@@ -0,0 +1,510 @@
|
||||
@@ -0,0 +1,517 @@
|
||||
+package top.leavesmc.leaves.bot;
|
||||
+
|
||||
+import com.mojang.authlib.GameProfile;
|
||||
@@ -371,6 +398,8 @@ index 0000000000000000000000000000000000000000..b833653b671df660686134754c794d3e
|
||||
+import top.leavesmc.leaves.entity.Bot;
|
||||
+import top.leavesmc.leaves.entity.CraftBot;
|
||||
+import top.leavesmc.leaves.event.bot.BotCreateEvent;
|
||||
+import top.leavesmc.leaves.bot.agent.BotAction;
|
||||
+import top.leavesmc.leaves.event.bot.BotJoinEvent;
|
||||
+import top.leavesmc.leaves.util.MathUtils;
|
||||
+
|
||||
+import javax.annotation.Nullable;
|
||||
@@ -414,42 +443,39 @@ index 0000000000000000000000000000000000000000..b833653b671df660686134754c794d3e
|
||||
+ @Nullable
|
||||
+ public static ServerBot createBot(@NotNull Location loc, @NotNull String name, String[] skin) {
|
||||
+ MinecraftServer server = MinecraftServer.getServer();
|
||||
+ ServerLevel world = ((CraftWorld) Objects.requireNonNull(loc.getWorld())).getHandle();
|
||||
+
|
||||
+ UUID uuid = UUID.randomUUID();
|
||||
+ CustomGameProfile profile = new CustomGameProfile(uuid, name.length() > 16 ? name.substring(0, 16) : name, skin);
|
||||
+
|
||||
+ ServerBot bot = new ServerBot(server, world, profile);
|
||||
+
|
||||
+ bot.connection = new ServerGamePacketListenerImpl(server, new Connection(PacketFlow.CLIENTBOUND) {
|
||||
+ @Override
|
||||
+ public void send(Packet<?> packet, @Nullable GenericFutureListener<? extends Future<? super Void>> callback) {
|
||||
+ }
|
||||
+ }, bot);
|
||||
+ bot.isRealPlayer = true;
|
||||
+
|
||||
+ BotCreateEvent event = new BotCreateEvent(bot.getBukkitPlayer(), loc, ChatColor.YELLOW + bot.getName().getString() + " joined the game");
|
||||
+ BotCreateEvent event = new BotCreateEvent(name, loc, ChatColor.YELLOW + name + " joined the game");
|
||||
+ server.server.getPluginManager().callEvent(event);
|
||||
+ if (!event.isCancelled()) {
|
||||
+ loc = event.getCreateLocation();
|
||||
+
|
||||
+ ServerLevel world = ((CraftWorld) Objects.requireNonNull(loc.getWorld())).getHandle();
|
||||
+ UUID uuid = UUID.randomUUID();
|
||||
+ CustomGameProfile profile = new CustomGameProfile(uuid, name.length() > 16 ? name.substring(0, 16) : name, skin);
|
||||
+
|
||||
+ ServerBot bot = new ServerBot(server, world, profile);
|
||||
+
|
||||
+ bot.connection = new ServerGamePacketListenerImpl(server, new Connection(PacketFlow.CLIENTBOUND) {
|
||||
+ @Override
|
||||
+ public void send(@NotNull Packet<?> packet, @Nullable GenericFutureListener<? extends Future<? super Void>> callback) {
|
||||
+ }
|
||||
+ }, bot);
|
||||
+ bot.isRealPlayer = true;
|
||||
+
|
||||
+ if (event.getJoinMessage() != null) {
|
||||
+ Bukkit.broadcastMessage(event.getJoinMessage());
|
||||
+ }
|
||||
+
|
||||
+ loc = event.getCreateLocation();
|
||||
+ ServerLevel world1 = ((CraftWorld) Objects.requireNonNull(loc.getWorld())).getHandle();
|
||||
+
|
||||
+ if (world1 != world) {
|
||||
+ world = world1;
|
||||
+ bot.changeDimension(world, PlayerTeleportEvent.TeleportCause.COMMAND);
|
||||
+ }
|
||||
+
|
||||
+ bot.teleportTo(loc.getX(), loc.getY(), loc.getZ());
|
||||
+ bot.setRot(loc.getYaw(), loc.getPitch());
|
||||
+ world.addFreshEntity(bot, CreatureSpawnEvent.SpawnReason.COMMAND);
|
||||
+
|
||||
+ bot.renderAll();
|
||||
+
|
||||
+ bots.add(bot);
|
||||
+
|
||||
+ BotJoinEvent event1 = new BotJoinEvent(bot.getBukkitPlayer());
|
||||
+ server.server.getPluginManager().callEvent(event1);
|
||||
+
|
||||
+ return bot;
|
||||
+ }
|
||||
+
|
||||
@@ -458,22 +484,24 @@ index 0000000000000000000000000000000000000000..b833653b671df660686134754c794d3e
|
||||
+
|
||||
+ private void renderAll() {
|
||||
+ Packet<?>[] packets = getRenderPackets();
|
||||
+ Bukkit.getOnlinePlayers().forEach(p -> render(((CraftPlayer) p).getHandle().connection, packets, false));
|
||||
+ Bukkit.getOnlinePlayers().forEach(p ->
|
||||
+ render(((CraftPlayer) p).getHandle().connection, packets, false, p.getWorld() == getBukkitPlayer().getWorld()));
|
||||
+ }
|
||||
+
|
||||
+ public void render(ServerPlayerConnection connection, boolean login) {
|
||||
+ render(connection, getRenderPackets(), login);
|
||||
+ public void render(ServerPlayerConnection connection, boolean login, boolean all) {
|
||||
+ render(connection, getRenderPackets(), login, all);
|
||||
+ }
|
||||
+
|
||||
+ private void render(ServerPlayerConnection connection, Packet<?>[] packets, boolean login) { // always use getRenderPackets() to get packets. replace it soon
|
||||
+ private void render(ServerPlayerConnection connection, Packet<?>[] packets, boolean login, boolean all) { // always use getRenderPackets() to get packets. replace it soon
|
||||
+ connection.send(packets[0]);
|
||||
+ connection.send(packets[1]);
|
||||
+ connection.send(packets[2]);
|
||||
+
|
||||
+ if (login) {
|
||||
+ connection.send(packets[3]); // This need delay 10 tick ? real ?
|
||||
+ } else {
|
||||
+ connection.send(packets[3]);
|
||||
+ if (all) {
|
||||
+ connection.send(packets[1]);
|
||||
+ connection.send(packets[2]);
|
||||
+ if (login) {
|
||||
+ connection.send(packets[3]); // This need delay 10 tick ? real ?
|
||||
+ } else {
|
||||
+ connection.send(packets[3]);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@@ -515,6 +543,12 @@ index 0000000000000000000000000000000000000000..b833653b671df660686134754c794d3e
|
||||
+ }
|
||||
+ // die check end
|
||||
+
|
||||
+ @Nullable
|
||||
+ @Override
|
||||
+ public Entity changeDimension(ServerLevel destination) {
|
||||
+ return null; // disable dimension change
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isOnGround() {
|
||||
+ return groundTicks != 0;
|
||||
|
||||
@@ -30,16 +30,17 @@ index 898c61c25675232e203ee2c872ca25804c41358c..4d6d025c78086f186da710ae46f65eda
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/top/leavesmc/leaves/bot/BotCommand.java b/src/main/java/top/leavesmc/leaves/bot/BotCommand.java
|
||||
index 292fede3bb850892e57640814440bdcebfd43aec..7693118ee1bb06d9938b866dca8e6cc9d2f1dded 100644
|
||||
index 292fede3bb850892e57640814440bdcebfd43aec..348174882a6ccc64aeda3997d20e5c8f37234268 100644
|
||||
--- a/src/main/java/top/leavesmc/leaves/bot/BotCommand.java
|
||||
+++ b/src/main/java/top/leavesmc/leaves/bot/BotCommand.java
|
||||
@@ -6,6 +6,10 @@ import org.bukkit.Location;
|
||||
@@ -5,7 +5,11 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
+import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
+import top.leavesmc.leaves.bot.agent.Actions;
|
||||
+import top.leavesmc.leaves.bot.agent.BotAction;
|
||||
+import top.leavesmc.leaves.entity.CraftBot;
|
||||
+import top.leavesmc.leaves.util.MathUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -140,12 +141,12 @@ index 292fede3bb850892e57640814440bdcebfd43aec..7693118ee1bb06d9938b866dca8e6cc9
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ bot.setBotAction(action.getNew(tickDelay, ((CraftBot) sender).getHandle()));
|
||||
+ bot.setBotAction(action.getNew(tickDelay, ((CraftPlayer) sender).getHandle()));
|
||||
+ sender.sendMessage("Action set");
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/top/leavesmc/leaves/bot/ServerBot.java b/src/main/java/top/leavesmc/leaves/bot/ServerBot.java
|
||||
index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c67988e83fe6 100644
|
||||
index 24d90f94da2d2ddea7e7134568b6bfcbe8c53ec3..b945cedb0c35418180415112dbccbca1c908a833 100644
|
||||
--- a/src/main/java/top/leavesmc/leaves/bot/ServerBot.java
|
||||
+++ b/src/main/java/top/leavesmc/leaves/bot/ServerBot.java
|
||||
@@ -1,9 +1,12 @@
|
||||
@@ -183,25 +184,21 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
import net.minecraft.world.level.ChunkPos;
|
||||
import net.minecraft.world.level.chunk.LevelChunk;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
@@ -37,11 +45,13 @@ import org.bukkit.World;
|
||||
@@ -37,11 +45,10 @@ 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.craftbukkit.scheduler.MinecraftInternalPlugin;
|
||||
import org.bukkit.entity.Player;
|
||||
-import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
-import org.bukkit.event.player.PlayerJoinEvent;
|
||||
-import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
+import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
import org.bukkit.util.Vector;
|
||||
@@ -49,10 +59,14 @@ import org.jetbrains.annotations.NotNull;
|
||||
import top.leavesmc.leaves.entity.Bot;
|
||||
import top.leavesmc.leaves.entity.CraftBot;
|
||||
import top.leavesmc.leaves.event.bot.BotCreateEvent;
|
||||
+import top.leavesmc.leaves.bot.agent.BotAction;
|
||||
@@ -54,7 +61,10 @@ import top.leavesmc.leaves.event.bot.BotJoinEvent;
|
||||
import top.leavesmc.leaves.util.MathUtils;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -212,7 +209,7 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
@@ -61,12 +75,17 @@ public class ServerBot extends ServerPlayer {
|
||||
@@ -63,12 +73,17 @@ public class ServerBot extends ServerPlayer {
|
||||
|
||||
private Vector velocity;
|
||||
private Vector oldVelocity;
|
||||
@@ -234,7 +231,7 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
|
||||
private static final Set<ServerBot> bots = new HashSet<>();
|
||||
private static final Plugin MINECRAFT_PLUGIN = new MinecraftInternalPlugin();
|
||||
@@ -79,6 +98,8 @@ public class ServerBot extends ServerPlayer {
|
||||
@@ -81,6 +96,8 @@ public class ServerBot extends ServerPlayer {
|
||||
this.oldVelocity = velocity.clone();
|
||||
this.noFallTicks = 60;
|
||||
this.fireTicks = 0;
|
||||
@@ -243,7 +240,7 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
this.removeOnDeath = true;
|
||||
}
|
||||
|
||||
@@ -185,12 +206,17 @@ public class ServerBot extends ServerPlayer {
|
||||
@@ -186,12 +203,17 @@ public class ServerBot extends ServerPlayer {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,8 +257,8 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
+
|
||||
// die check end
|
||||
|
||||
@Override
|
||||
@@ -198,10 +224,6 @@ public class ServerBot extends ServerPlayer {
|
||||
@Nullable
|
||||
@@ -205,10 +227,6 @@ public class ServerBot extends ServerPlayer {
|
||||
return groundTicks != 0;
|
||||
}
|
||||
|
||||
@@ -272,7 +269,7 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
public static boolean solidAt(Location loc) {
|
||||
Block block = loc.getBlock();
|
||||
BoundingBox box = block.getBoundingBox();
|
||||
@@ -296,12 +318,24 @@ public class ServerBot extends ServerPlayer {
|
||||
@@ -303,12 +321,24 @@ public class ServerBot extends ServerPlayer {
|
||||
public void tick() {
|
||||
// loadChunks(); // Load chunks
|
||||
super.tick();
|
||||
@@ -301,7 +298,7 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
|
||||
if (checkGround()) {
|
||||
if (groundTicks < 5) groundTicks++;
|
||||
@@ -329,7 +363,88 @@ public class ServerBot extends ServerPlayer {
|
||||
@@ -336,7 +366,88 @@ public class ServerBot extends ServerPlayer {
|
||||
|
||||
checkOutOfWorld();
|
||||
|
||||
@@ -390,7 +387,7 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -362,21 +477,6 @@ public class ServerBot extends ServerPlayer {
|
||||
@@ -369,21 +480,6 @@ public class ServerBot extends ServerPlayer {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -412,7 +409,7 @@ index b833653b671df660686134754c794d3e6686b112..d0b88733427d81aacb9699faf695c679
|
||||
public Location getLocation() {
|
||||
return getBukkitPlayer().getLocation();
|
||||
}
|
||||
@@ -468,6 +568,68 @@ public class ServerBot extends ServerPlayer {
|
||||
@@ -475,6 +571,68 @@ public class ServerBot extends ServerPlayer {
|
||||
this.move(MoverType.SELF, new Vec3(velocity.getX(), y, velocity.getZ()));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user