-1

I'm trying to create a plugin which send a packet that contain a fake entity. Additionally I want the fake entity to be constantly teleported behind the Player's looking position.

Troubles:

  1. I've got no idea how to teleport the entity behind the players looking position.
  2. When the Player falls from a specific height and takes falldamage something with the Particelpackets goes wrong(see error).

My 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");





}

}

My Error:

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

What happens on Screen:

Screenshot

Apply55gx
  • 1
  • 5
  • You're using NMS. Don't use NMS; it's outside of the bukkit API and isn't documented. Consider using ProtocolLib instead (and constructing a _real_ fake player, not sending an existing player twice; that'll break things _really bad_ due to entity ID collisions). One other note - you do know that the `F5` key exists, right? – Pokechu22 Oct 07 '16 at 19:22
  • @Pokechu22 Thanks for the Quick answer. I already took a look on ProtocolLib but unfortunately couldn't find good tutorials. But you're right sometimes even my Minecraft crashed XD. And just by the way: it was on purpose that I was in F5 mode. – Apply55gx Oct 08 '16 at 14:35
  • @Ferrybig No definitly not. The Goal isn't to find out what a null pointer Exception is. The Goal is to find out by what it's caused. – Apply55gx Oct 08 '16 at 14:41
  • @Apply55gx The linked question & answer also link to a question how to read the stack trace – Ferrybig Oct 08 '16 at 14:43

1 Answers1

0

If you want to create and move fake players , take a look at the ProtocolLib and the PacketWrappers. Also, you can find an open-source implementation of a FakePlayer here.

Edit: Since you are probably coding an anticheat, also take a look at the Killaura-Bot-Check.