2016-10-07 4 views
-1

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:

  1. Ich habe keine Ahnung, wie das Unternehmen hinter den Spielern zu teleportieren Position suchen.
  2. 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:

Screenshot

+0

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

+0

@ 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

+0

@Ferrybig Nein, definitiv nicht. Das Ziel ist nicht herauszufinden, was eine Nullzeiger-Ausnahme ist. Das Ziel ist herauszufinden, was es verursacht hat. – Apply55gx

Antwort

0

Wenn Sie gefälschte Player erstellen und verschieben möchten, werfen Sie einen Blick auf die ProtocolLib und die PacketWrappers. Außerdem können Sie eine Open-Source-Implementierung eines FakePlayers here finden.

Edit: Da Sie wahrscheinlich ein Anticheat codieren, werfen Sie auch einen Blick auf die Killaura-Bot-Check.

Verwandte Themen