Ich versuche, ein Plugin zu erstellen, das ein Paket sendet, das eine falsche Entität enthält. Zusätzlich möchte ich, dass die falsche Entität ständig hinter der Position des Spielers teleportiert wird.Wie man eine falsche Entität teleportiert
Troubles:
- Ich habe keine Ahnung, wie das Unternehmen hinter den Spielern zu teleportieren Position suchen.
- Wenn der Player aus einer bestimmten Höhe fällt und Fehldamage etwas mit dem Particelpackets eingeht schief geht (siehe Fehler).
Mein Code:
package com.gmail.apply55gx.UltimateAntiCheat.Packets;
public class PacketsCore implements Listener{
private EntityPlayer npc;
Player GhostPlayer;
MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer();
WorldServer world = ((CraftWorld)Bukkit.getServer().getWorlds().get(0)).getHandle();
@EventHandler
public void Join(PlayerJoinEvent event){
Random r = new Random();
ArrayList<Player> RandomGhostPlayer = new ArrayList<Player>();
for(Player online : Bukkit.getServer().getOnlinePlayers()) {
RandomGhostPlayer.add(online);
}
int index = r.nextInt(RandomGhostPlayer.size());
GhostPlayer = (Player) RandomGhostPlayer.get(index);
npc = new EntityPlayer(server, world, new GameProfile(GhostPlayer.getUniqueId(), GhostPlayer.getName()), new PlayerInteractManager(world));
//NPC
npc.teleportTo(event.getPlayer().getEyeLocation().add(0,2,0),false);
PlayerConnection connection = ((CraftPlayer) event.getPlayer()).getHandle().playerConnection;
connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, npc));
connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
}
@EventHandler
public void move(PlayerMoveEvent event){
Player p = event.getPlayer();
try {
npc.teleportTo((p.getLocation().add(0,3,0)),false);
PlayerConnection connection = ((CraftPlayer) event.getPlayer()).getHandle().playerConnection;
connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, npc));
connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
npc.setLocation(p.getLocation().getX(),p.getLocation().getY() + 3,p.getLocation().getZ(),p.getLocation().getDirection().getBlockX(),p.getLocation().getDirection().getBlockY());
}catch (Exception e){}
p.sendMessage("tp");
}
}
Mein Fehler:
19:19:10 [FATAL] Error executing task
19:19:10 java.util.concurrent.ExecutionException: java.lang.NullPointerException
19:19:10 at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_65]
19:19:10 at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_65]
19:19:10 at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:45) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]
19:19:10 Caused by: java.lang.NullPointerException
19:19:10 at net.minecraft.server.v1_8_R3.WorldServer.sendParticles(WorldServer.java:1179) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.EntityLiving.a(EntityLiving.java:152) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.EntityPlayer.a(EntityPlayer.java:621) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:456) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:126) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:8) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_65]
19:19:10 at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_65]
19:19:10 at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:10 ... 5 more
19:19:10 [FATAL] Error executing task
19:19:10 java.util.concurrent.ExecutionException: java.lang.NullPointerException
19:19:11 at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_65]
19:19:11 at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_65]
19:19:11 at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:45) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]
19:19:11 Caused by: java.lang.NullPointerException
19:19:11 at net.minecraft.server.v1_8_R3.WorldServer.sendParticles(WorldServer.java:1179) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.EntityLiving.a(EntityLiving.java:152) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.EntityPlayer.a(EntityPlayer.java:621) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:456) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:126) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:8) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_65]
19:19:11 at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_65]
19:19:11 at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
19:19:11 ... 5 more
was auf dem Bildschirm passiert:
Sie verwenden NMS. Verwenden Sie kein NMS; Es liegt außerhalb der Bukkit-API und ist nicht dokumentiert. Erwäge stattdessen, ProtocolLib zu verwenden (und einen _real_ fake player zu konstruieren, einen vorhandenen Player nicht zweimal zu senden; das wird die Dinge _wirklich schlecht_ aufgrund von Entitäts-ID-Kollisionen brechen). Eine andere Anmerkung - Sie wissen, dass die 'F5'-Taste existiert, oder? – Pokechu22
@ Pokechu22 Danke für die schnelle Antwort. Ich habe bereits auf ProtocolLib geschaut, konnte aber leider keine guten Tutorials finden. Aber du hast recht, manchmal hat sogar meine Minecraft XD abgestürzt. Übrigens: Ich war absichtlich im F5-Modus. – Apply55gx
@Ferrybig Nein, definitiv nicht. Das Ziel ist nicht herauszufinden, was eine Nullzeiger-Ausnahme ist. Das Ziel ist herauszufinden, was es verursacht hat. – Apply55gx