9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-21 07:49:35 +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); AdvancementProgress advancementprogress = this.getOrStartProgress(advancement);
boolean flag1 = advancementprogress.isDone(); 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 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 --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
@@ -232,10 +232,10 @@ index a73c79e57f51a6ab0f0d0b37fa6c87ff9bd69325..4b8d05838bd70a2932a36a5919436861
MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Leaves", entry.getValue()); 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 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 new file mode 100644
index 0000000000000000000000000000000000000000..97b8cb057c139af76684088bdde71d96e95ada81 index 0000000000000000000000000000000000000000..18bd3b869a9ebd7cdef8da8c46d4da749b6fa3da
--- /dev/null --- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java +++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java
@@ -0,0 +1,472 @@ @@ -0,0 +1,471 @@
+package top.leavesmc.leaves.bot; +package top.leavesmc.leaves.bot;
+ +
+import com.mojang.authlib.GameProfile; +import com.mojang.authlib.GameProfile;
@@ -255,12 +255,14 @@ index 0000000000000000000000000000000000000000..97b8cb057c139af76684088bdde71d96
+import net.minecraft.server.MinecraftServer; +import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.server.level.TicketType;
+import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.server.network.ServerGamePacketListenerImpl;
+import net.minecraft.server.network.ServerPlayerConnection; +import net.minecraft.server.network.ServerPlayerConnection;
+import net.minecraft.util.Mth; +import net.minecraft.util.Mth;
+import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.MoverType;
+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; +import net.minecraft.world.level.chunk.LevelChunk;
+import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.AABB;
@@ -429,14 +431,11 @@ index 0000000000000000000000000000000000000000..97b8cb057c139af76684088bdde71d96
+ } + }
+ +
+ private void loadChunks() { + private void loadChunks() {
+ Level world = level; + ServerLevel world = (ServerLevel) level;
+ for (int i = chunkPosition().x - 1; i <= chunkPosition().x + 1; i++) { + for (int i = chunkPosition().x - 1; i <= chunkPosition().x + 1; i++) {
+ for (int j = chunkPosition().z - 1; j <= chunkPosition().z + 1; j++) { + for (int j = chunkPosition().z - 1; j <= chunkPosition().z + 1; j++) {
+ LevelChunk chunk = world.getChunk(i, j); + ChunkPos chunk = world.getChunk(i, j).getPos();
+ + world.chunkSource.chunkMap.distanceManager.addTicketAtLevel(TicketType.PLAYER, chunk, 31, chunk);
+ if (!chunk.loaded) {
+ chunk.loaded = true;
+ }
+ } + }
+ } + }
+ } + }

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 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 --- a/src/main/java/top/leavesmc/leaves/bot/Bot.java
+++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java +++ b/src/main/java/top/leavesmc/leaves/bot/Bot.java
@@ -1,9 +1,12 @@ @@ -1,9 +1,12 @@
@@ -54,7 +54,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.server.MinecraftServer; 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.ServerGamePacketListenerImpl;
import net.minecraft.server.network.ServerPlayerConnection; import net.minecraft.server.network.ServerPlayerConnection;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
@@ -65,10 +65,10 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
+import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.MoverType; import net.minecraft.world.entity.MoverType;
+import net.minecraft.world.entity.item.ItemEntity; +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; import net.minecraft.world.level.chunk.LevelChunk;
import net.minecraft.world.phys.AABB; @@ -37,14 +45,20 @@ import org.bukkit.World;
@@ -35,14 +43,20 @@ import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.entity.CraftPlayer;
@@ -89,7 +89,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.UUID; 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 velocity;
private Vector oldVelocity; private Vector oldVelocity;
@@ -111,7 +111,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
private static final Set<Bot> bots = new HashSet<>(); 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.entityData.set(new EntityDataAccessor<>(16, EntityDataSerializers.INT), 0xFF);
this.velocity = new Vector(0, 0, 0); this.velocity = new Vector(0, 0, 0);
@@ -124,7 +124,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
this.removeOnDeath = true; 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 // die check end
@Override @Override
@@ -166,10 +193,6 @@ public class Bot extends ServerPlayer { @@ -168,10 +195,6 @@ public class Bot extends ServerPlayer {
return groundTicks != 0; return groundTicks != 0;
} }
@@ -153,15 +153,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
public static boolean solidAt(Location loc) { public static boolean solidAt(Location loc) {
Block block = loc.getBlock(); Block block = loc.getBlock();
BoundingBox box = block.getBoundingBox(); BoundingBox box = block.getBoundingBox();
@@ -195,7 +218,6 @@ public class Bot extends ServerPlayer { @@ -257,12 +280,24 @@ 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 {
public void tick() { public void tick() {
loadChunks(); // Load chunks loadChunks(); // Load chunks
super.tick(); super.tick();
@@ -190,7 +182,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
if (checkGround()) { if (checkGround()) {
if (groundTicks < 5) groundTicks++; if (groundTicks < 5) groundTicks++;
@@ -291,7 +325,83 @@ public class Bot extends ServerPlayer { @@ -290,7 +325,83 @@ public class Bot extends ServerPlayer {
checkOutOfWorld(); checkOutOfWorld();
@@ -274,7 +266,7 @@ index 97b8cb057c139af76684088bdde71d96e95ada81..e07c7e204044916de223edf62e3e88e7
} }
@Override @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() { public Location getLocation() {
return getBukkitPlayer().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())); this.move(MoverType.SELF, new Vec3(velocity.getX(), y, velocity.getZ()));
} }