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:
@@ -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;
|
|
||||||
+ }
|
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
|||||||
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user