9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-19 14:59:32 +00:00

Fix fakeplayer load chunk bug

This commit is contained in:
violetc
2022-03-05 12:28:47 +08:00
parent a706e0a144
commit 4b0c53ad3d
2 changed files with 20 additions and 29 deletions

View File

@@ -67,7 +67,7 @@ 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 cd08f9b16c065be8f0eacaeba51d3e72d332daf9..c9616d519c01749dc30c8331af184a5e90273142 100644
index 7a0c1ba40156df69bbbf36d96bed0950130d2351..8285d83edeb70c4a368ead68dadd0b4861a7f6a3 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 @@
@@ -232,10 +232,10 @@ 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..97b8cb057c139af76684088bdde71d96e95ada81
index 0000000000000000000000000000000000000000..18bd3b869a9ebd7cdef8da8c46d4da749b6fa3da
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java
@@ -0,0 +1,472 @@
@@ -0,0 +1,471 @@
+package top.leavesmc.leaves.bot;
+
+import com.mojang.authlib.GameProfile;
@@ -255,12 +255,14 @@ index 0000000000000000000000000000000000000000..97b8cb057c139af76684088bdde71d96
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.server.level.TicketType;
+import net.minecraft.server.network.ServerGamePacketListenerImpl;
+import net.minecraft.server.network.ServerPlayerConnection;
+import net.minecraft.util.Mth;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.MoverType;
+import net.minecraft.world.level.ChunkPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.chunk.LevelChunk;
+import net.minecraft.world.phys.AABB;
@@ -429,14 +431,11 @@ index 0000000000000000000000000000000000000000..97b8cb057c139af76684088bdde71d96
+ }
+
+ private void loadChunks() {
+ Level world = level;
+ ServerLevel world = (ServerLevel) level;
+ for (int i = chunkPosition().x - 1; i <= chunkPosition().x + 1; i++) {
+ for (int j = chunkPosition().z - 1; j <= chunkPosition().z + 1; j++) {
+ LevelChunk chunk = world.getChunk(i, j);
+
+ if (!chunk.loaded) {
+ chunk.loaded = true;
+ }
+ ChunkPos chunk = world.getChunk(i, j).getPos();
+ world.chunkSource.chunkMap.distanceManager.addTicketAtLevel(TicketType.PLAYER, chunk, 31, chunk);
+ }
+ }
+ }

View File

@@ -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 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7465b257d 100644
index 18bd3b869a9ebd7cdef8da8c46d4da749b6fa3da..71619f750819ab213b1cae23873eb60f0acb37d7 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 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.server.MinecraftServer;
@@ -20,9 +24,13 @@ import net.minecraft.server.level.ServerPlayer;
@@ -21,9 +25,13 @@ import net.minecraft.server.level.TicketType;
import net.minecraft.server.network.ServerGamePacketListenerImpl;
import net.minecraft.server.network.ServerPlayerConnection;
import net.minecraft.util.Mth;
@@ -65,10 +65,10 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
+import net.minecraft.world.entity.EquipmentSlot;
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.chunk.LevelChunk;
import net.minecraft.world.phys.AABB;
@@ -35,14 +43,20 @@ import org.bukkit.World;
@@ -37,14 +45,20 @@ import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.entity.CraftPlayer;
@@ -89,7 +89,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
@@ -51,12 +65,17 @@ public class Bot extends ServerPlayer {
@@ -53,12 +67,17 @@ public class Bot extends ServerPlayer {
private Vector velocity;
private Vector oldVelocity;
@@ -111,7 +111,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
private static final Set<Bot> bots = new HashSet<>();
@@ -65,9 +84,12 @@ public class Bot extends ServerPlayer {
@@ -67,9 +86,12 @@ public class Bot extends ServerPlayer {
this.entityData.set(new EntityDataAccessor<>(16, EntityDataSerializers.INT), 0xFF);
this.velocity = new Vector(0, 0, 0);
@@ -124,7 +124,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
this.removeOnDeath = true;
}
@@ -153,12 +175,17 @@ public class Bot extends ServerPlayer {
@@ -155,12 +177,17 @@ public class Bot extends ServerPlayer {
}
}
@@ -142,7 +142,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
// die check end
@Override
@@ -166,10 +193,6 @@ public class Bot extends ServerPlayer {
@@ -168,10 +195,6 @@ public class Bot extends ServerPlayer {
return groundTicks != 0;
}
@@ -153,15 +153,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
public static boolean solidAt(Location loc) {
Block block = loc.getBlock();
BoundingBox box = block.getBoundingBox();
@@ -195,7 +218,6 @@ public class Bot extends ServerPlayer {
for (int i = chunkPosition().x - 1; i <= chunkPosition().x + 1; i++) {
for (int j = chunkPosition().z - 1; j <= chunkPosition().z + 1; j++) {
LevelChunk chunk = world.getChunk(i, j);
-
if (!chunk.loaded) {
chunk.loaded = true;
}
@@ -258,12 +280,24 @@ public class Bot extends ServerPlayer {
@@ -257,12 +280,24 @@ public class Bot extends ServerPlayer {
public void tick() {
loadChunks(); // Load chunks
super.tick();
@@ -190,7 +182,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
if (checkGround()) {
if (groundTicks < 5) groundTicks++;
@@ -291,7 +325,83 @@ public class Bot extends ServerPlayer {
@@ -290,7 +325,83 @@ public class Bot extends ServerPlayer {
checkOutOfWorld();
@@ -274,7 +266,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
}
@Override
@@ -324,21 +434,6 @@ public class Bot extends ServerPlayer {
@@ -323,21 +434,6 @@ public class Bot extends ServerPlayer {
}
}
@@ -296,7 +288,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
public Location getLocation() {
return getBukkitPlayer().getLocation();
}
@@ -430,6 +525,68 @@ public class Bot extends ServerPlayer {
@@ -429,6 +525,68 @@ public class Bot extends ServerPlayer {
this.move(MoverType.SELF, new Vec3(velocity.getX(), y, velocity.getZ()));
}