diff --git a/v1_12_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_12_R1/ChunkLoaderNPC.java b/v1_12_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_12_R1/ChunkLoaderNPC.java index cb9dd48..33be559 100644 --- a/v1_12_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_12_R1/ChunkLoaderNPC.java +++ b/v1_12_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_12_R1/ChunkLoaderNPC.java @@ -4,6 +4,7 @@ import com.bgsoftware.wildloaders.handlers.NPCHandler; import com.bgsoftware.wildloaders.npc.DummyChannel; import com.mojang.authlib.GameProfile; import net.minecraft.server.v1_12_R1.AxisAlignedBB; +import net.minecraft.server.v1_12_R1.BlockPosition; import net.minecraft.server.v1_12_R1.DamageSource; import net.minecraft.server.v1_12_R1.EntityPlayer; import net.minecraft.server.v1_12_R1.EnumGamemode; @@ -33,14 +34,16 @@ import java.util.UUID; public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware.wildloaders.api.npc.ChunkLoaderNPC { - private static final AxisAlignedBB EMPTY_BOUND = new AxisAlignedBB(0D, 0D, 0D, 0D, 0D, 0D); + private final AxisAlignedBB boundingBox; - public ChunkLoaderNPC(Location location, UUID uuid){ + public ChunkLoaderNPC(Location location, UUID uuid) { super(((CraftServer) Bukkit.getServer()).getServer(), ((CraftWorld) location.getWorld()).getHandle(), new GameProfile(uuid, NPCHandler.getName(location.getWorld().getName())), new PlayerInteractManager(((CraftWorld) location.getWorld()).getHandle())); + this.boundingBox = new AxisAlignedBB(new BlockPosition(location.getX(), location.getY(), location.getZ())); + playerConnection = new DummyPlayerConnection(server, this); this.playerInteractManager.setGameMode(EnumGamemode.CREATIVE); @@ -52,7 +55,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware world.players.add(this); ((WorldServer) world).getPlayerChunkMap().addPlayer(this); - super.a(EMPTY_BOUND); + super.a(this.boundingBox); } @Override @@ -62,7 +65,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware @Override public AxisAlignedBB getBoundingBox() { - return EMPTY_BOUND; + return this.boundingBox; } @Override @@ -87,7 +90,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware return false; } - public static class DummyNetworkManager extends NetworkManager{ + public static class DummyNetworkManager extends NetworkManager { private static Field channelField; private static Field socketAddressField; @@ -103,7 +106,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware } } - DummyNetworkManager(){ + DummyNetworkManager() { super(EnumProtocolDirection.SERVERBOUND); updateFields(); } diff --git a/v1_16_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_16_R3/ChunkLoaderNPC.java b/v1_16_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_16_R3/ChunkLoaderNPC.java index 6f5d386..ec5a56f 100644 --- a/v1_16_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_16_R3/ChunkLoaderNPC.java +++ b/v1_16_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_16_R3/ChunkLoaderNPC.java @@ -4,6 +4,7 @@ import com.bgsoftware.wildloaders.handlers.NPCHandler; import com.bgsoftware.wildloaders.npc.DummyChannel; import com.mojang.authlib.GameProfile; import net.minecraft.server.v1_16_R3.AxisAlignedBB; +import net.minecraft.server.v1_16_R3.BlockPosition; import net.minecraft.server.v1_16_R3.EntityPlayer; import net.minecraft.server.v1_16_R3.EnumGamemode; import net.minecraft.server.v1_16_R3.EnumProtocolDirection; @@ -32,7 +33,7 @@ import java.util.UUID; public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware.wildloaders.api.npc.ChunkLoaderNPC { - private static final AxisAlignedBB EMPTY_BOUND = new AxisAlignedBB(0D, 0D, 0D, 0D, 0D, 0D); + private final AxisAlignedBB boundingBox; private boolean dieCall = false; @@ -42,6 +43,8 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware new GameProfile(uuid, NPCHandler.getName(location.getWorld().getName())), new PlayerInteractManager(((CraftWorld) location.getWorld()).getHandle())); + this.boundingBox = new AxisAlignedBB(new BlockPosition(location.getX(), location.getY(), location.getZ())); + playerConnection = new DummyPlayerConnection(server, this); this.playerInteractManager.setGameMode(EnumGamemode.CREATIVE); @@ -54,7 +57,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware ((WorldServer) world).addPlayerJoin(this); - super.a(EMPTY_BOUND); + super.a(this.boundingBox); } @Override @@ -64,7 +67,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware @Override public AxisAlignedBB getBoundingBox() { - return EMPTY_BOUND; + return this.boundingBox; } @Override diff --git a/v1_17_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_17_R1/ChunkLoaderNPC.java b/v1_17_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_17_R1/ChunkLoaderNPC.java index 1563fa2..b8d5245 100644 --- a/v1_17_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_17_R1/ChunkLoaderNPC.java +++ b/v1_17_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_17_R1/ChunkLoaderNPC.java @@ -4,6 +4,7 @@ import com.bgsoftware.common.reflection.ReflectMethod; import com.bgsoftware.wildloaders.handlers.NPCHandler; import com.bgsoftware.wildloaders.npc.DummyChannel; import com.mojang.authlib.GameProfile; +import net.minecraft.core.BlockPosition; import net.minecraft.network.NetworkManager; import net.minecraft.network.protocol.EnumProtocolDirection; import net.minecraft.network.protocol.Packet; @@ -30,17 +31,19 @@ import java.util.UUID; public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware.wildloaders.api.npc.ChunkLoaderNPC { - private static final AxisAlignedBB EMPTY_BOUND = new AxisAlignedBB(0D, 0D, 0D, 0D, 0D, 0D); - private static final ReflectMethod SET_GAMEMODE = new ReflectMethod<>(PlayerInteractManager.class, 1, EnumGamemode.class, EnumGamemode.class); + private final AxisAlignedBB boundingBox; + private boolean dieCall = false; - public ChunkLoaderNPC(MinecraftServer minecraftServer, Location location, UUID uuid){ + public ChunkLoaderNPC(MinecraftServer minecraftServer, Location location, UUID uuid) { super(minecraftServer, ((CraftWorld) location.getWorld()).getHandle(), new GameProfile(uuid, NPCHandler.getName(location.getWorld().getName()))); + this.boundingBox = new AxisAlignedBB(new BlockPosition(location.getX(), location.getY(), location.getZ())); + this.b = new DummyPlayerConnection(minecraftServer, this); SET_GAMEMODE.invoke(this.d, EnumGamemode.b, null); @@ -53,7 +56,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware ((WorldServer) getWorld()).addPlayerJoin(this); - super.a(EMPTY_BOUND); + super.a(this.boundingBox); } @Override @@ -63,17 +66,16 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware @Override public AxisAlignedBB cs() { - return EMPTY_BOUND; + return this.boundingBox; } @Override public void a(Entity.RemovalReason removalReason) { - if(!dieCall) { + if (!dieCall) { dieCall = true; removePlayer(getWorldServer(), this); dieCall = false; - } - else { + } else { super.a(removalReason); } } @@ -88,13 +90,13 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware return getBukkitEntity(); } - private static void removePlayer(WorldServer worldServer, EntityPlayer entityPlayer){ + private static void removePlayer(WorldServer worldServer, EntityPlayer entityPlayer) { worldServer.a(entityPlayer, RemovalReason.d); } public static class DummyNetworkManager extends NetworkManager { - DummyNetworkManager(){ + DummyNetworkManager() { super(EnumProtocolDirection.a); this.k = new DummyChannel(); this.l = null; diff --git a/v1_18_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R1/ChunkLoaderNPC.java b/v1_18_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R1/ChunkLoaderNPC.java index 6de00cc..ca0982a 100644 --- a/v1_18_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R1/ChunkLoaderNPC.java +++ b/v1_18_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R1/ChunkLoaderNPC.java @@ -7,6 +7,7 @@ import com.bgsoftware.wildloaders.nms.v1_18_R1.mappings.net.minecraft.world.enti import com.bgsoftware.wildloaders.nms.v1_18_R1.mappings.net.minecraft.world.level.World; import com.bgsoftware.wildloaders.npc.DummyChannel; import com.mojang.authlib.GameProfile; +import net.minecraft.core.BlockPosition; import net.minecraft.network.NetworkManager; import net.minecraft.network.protocol.EnumProtocolDirection; import net.minecraft.network.protocol.Packet; @@ -34,9 +35,8 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware private static final ReflectMethod SET_GAMEMODE = new ReflectMethod<>(PlayerInteractManager.class, 1, EnumGamemode.class, EnumGamemode.class); - private static final AxisAlignedBB EMPTY_BOUND = new AxisAlignedBB(0D, 0D, 0D, 0D, 0D, 0D); - private final World world; + private final AxisAlignedBB boundingBox; private boolean dieCall = false; @@ -47,10 +47,11 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware Entity entity = new Entity(this); this.world = entity.getWorld(); + this.boundingBox = new AxisAlignedBB(new BlockPosition(location.getX(), location.getY(), location.getZ())); this.b = new DummyPlayerConnection(minecraftServer, this); - SET_GAMEMODE.invoke(this.d, EnumGamemode.b); + SET_GAMEMODE.invoke(this.d, EnumGamemode.b, null); clientViewDistance = 1; fauxSleeping = true; @@ -60,7 +61,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware this.world.addNewPlayer(this); - super.a(EMPTY_BOUND); + super.a(this.boundingBox); } @Remap(classPath = "net.minecraft.world.entity.Entity", @@ -87,7 +88,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware remappedName = "cx") @Override public AxisAlignedBB cx() { - return EMPTY_BOUND; + return this.boundingBox; } @Remap(classPath = "net.minecraft.world.entity.Entity", diff --git a/v1_18_R2/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R2/ChunkLoaderNPC.java b/v1_18_R2/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R2/ChunkLoaderNPC.java index c25d132..ac1fea8 100644 --- a/v1_18_R2/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R2/ChunkLoaderNPC.java +++ b/v1_18_R2/src/main/java/com/bgsoftware/wildloaders/nms/v1_18_R2/ChunkLoaderNPC.java @@ -7,6 +7,7 @@ import com.bgsoftware.wildloaders.nms.v1_18_R2.mappings.net.minecraft.world.enti import com.bgsoftware.wildloaders.nms.v1_18_R2.mappings.net.minecraft.world.level.World; import com.bgsoftware.wildloaders.npc.DummyChannel; import com.mojang.authlib.GameProfile; +import net.minecraft.core.BlockPosition; import net.minecraft.network.NetworkManager; import net.minecraft.network.protocol.EnumProtocolDirection; import net.minecraft.network.protocol.Packet; @@ -34,9 +35,8 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware private static final ReflectMethod SET_GAMEMODE = new ReflectMethod<>(PlayerInteractManager.class, 1, EnumGamemode.class, EnumGamemode.class); - private static final AxisAlignedBB EMPTY_BOUND = new AxisAlignedBB(0D, 0D, 0D, 0D, 0D, 0D); - private final World world; + private final AxisAlignedBB boundingBox; private boolean dieCall = false; @@ -47,10 +47,11 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware Entity entity = new Entity(this); this.world = entity.getWorld(); + this.boundingBox = new AxisAlignedBB(new BlockPosition(location.getX(), location.getY(), location.getZ())); this.b = new DummyPlayerConnection(minecraftServer, this); - SET_GAMEMODE.invoke(this.d, EnumGamemode.b); + SET_GAMEMODE.invoke(this.d, EnumGamemode.b, null); clientViewDistance = 1; fauxSleeping = true; @@ -60,7 +61,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware this.world.addNewPlayer(this); - super.a(EMPTY_BOUND); + super.a(this.boundingBox); } @Remap(classPath = "net.minecraft.world.entity.Entity", @@ -87,7 +88,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware remappedName = "cx") @Override public AxisAlignedBB cx() { - return EMPTY_BOUND; + return this.boundingBox; } @Remap(classPath = "net.minecraft.world.entity.Entity", diff --git a/v1_19_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_19_R1/ChunkLoaderNPC.java b/v1_19_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_19_R1/ChunkLoaderNPC.java index a95ccb5..b263101 100644 --- a/v1_19_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_19_R1/ChunkLoaderNPC.java +++ b/v1_19_R1/src/main/java/com/bgsoftware/wildloaders/nms/v1_19_R1/ChunkLoaderNPC.java @@ -7,6 +7,7 @@ import com.bgsoftware.wildloaders.nms.v1_19_R1.mappings.net.minecraft.world.enti import com.bgsoftware.wildloaders.nms.v1_19_R1.mappings.net.minecraft.world.level.World; import com.bgsoftware.wildloaders.npc.DummyChannel; import com.mojang.authlib.GameProfile; +import net.minecraft.core.BlockPosition; import net.minecraft.network.NetworkManager; import net.minecraft.network.protocol.EnumProtocolDirection; import net.minecraft.network.protocol.Packet; @@ -34,9 +35,8 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware private static final ReflectMethod SET_GAMEMODE = new ReflectMethod<>(PlayerInteractManager.class, 1, EnumGamemode.class, EnumGamemode.class); - private static final AxisAlignedBB EMPTY_BOUND = new AxisAlignedBB(0D, 0D, 0D, 0D, 0D, 0D); - private final World world; + private final AxisAlignedBB boundingBox; private boolean dieCall = false; @@ -47,10 +47,11 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware Entity entity = new Entity(this); this.world = entity.getWorld(); + this.boundingBox = new AxisAlignedBB(new BlockPosition(location.getX(), location.getY(), location.getZ())); this.b = new DummyPlayerConnection(minecraftServer, this); - SET_GAMEMODE.invoke(this.d, EnumGamemode.b); + SET_GAMEMODE.invoke(this.d, EnumGamemode.b, null); clientViewDistance = 1; fauxSleeping = true; @@ -60,7 +61,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware this.world.addNewPlayer(this); - super.a(EMPTY_BOUND); + super.a(this.boundingBox); } @Remap(classPath = "net.minecraft.world.entity.Entity", @@ -87,7 +88,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware remappedName = "cz") @Override public AxisAlignedBB cz() { - return EMPTY_BOUND; + return this.boundingBox; } @Remap(classPath = "net.minecraft.world.entity.Entity", diff --git a/v1_8_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_8_R3/ChunkLoaderNPC.java b/v1_8_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_8_R3/ChunkLoaderNPC.java index 05ddfe3..ac3f4af 100644 --- a/v1_8_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_8_R3/ChunkLoaderNPC.java +++ b/v1_8_R3/src/main/java/com/bgsoftware/wildloaders/nms/v1_8_R3/ChunkLoaderNPC.java @@ -4,6 +4,7 @@ import com.bgsoftware.wildloaders.handlers.NPCHandler; import com.bgsoftware.wildloaders.npc.DummyChannel; import com.mojang.authlib.GameProfile; import net.minecraft.server.v1_8_R3.AxisAlignedBB; +import net.minecraft.server.v1_8_R3.BlockPosition; import net.minecraft.server.v1_8_R3.DamageSource; import net.minecraft.server.v1_8_R3.EntityPlayer; import net.minecraft.server.v1_8_R3.EnumProtocolDirection; @@ -33,7 +34,7 @@ import java.util.UUID; public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware.wildloaders.api.npc.ChunkLoaderNPC { - private static final AxisAlignedBB EMPTY_BOUND = new AxisAlignedBB(0D, 0D, 0D, 0D, 0D, 0D); + private final AxisAlignedBB boundingBox; public ChunkLoaderNPC(Location location, UUID uuid) { super(((CraftServer) Bukkit.getServer()).getServer(), @@ -41,6 +42,9 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware new GameProfile(uuid, NPCHandler.getName(location.getWorld().getName())), new PlayerInteractManager(((CraftWorld) location.getWorld()).getHandle())); + this.boundingBox = new AxisAlignedBB(location.getX(), location.getY(), location.getZ(), + location.getX() + 1, location.getY() + 1, location.getZ() + 1); + playerConnection = new DummyPlayerConnection(server, this); playerInteractManager.setGameMode(WorldSettings.EnumGamemode.CREATIVE); @@ -60,7 +64,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware world.players.add(this); ((WorldServer) world).getPlayerChunkMap().addPlayer(this); - super.a(EMPTY_BOUND); + super.a(this.boundingBox); } @Override @@ -70,7 +74,7 @@ public final class ChunkLoaderNPC extends EntityPlayer implements com.bgsoftware @Override public AxisAlignedBB getBoundingBox() { - return EMPTY_BOUND; + return this.boundingBox; } @Override