2016-10-07 6 views
-1

Я пытаюсь создать плагин, который отправляет пакет, содержащий поддельный объект. Кроме того, я хочу, чтобы поддельная сущность постоянно телепортировалась позади позиции игрока.Как телепортировать поддельную сущность

Неприятности:

  1. У меня нет ни малейшего представления о том, как телепортировать объект позади игроков, позиции.
  2. Когда игрок падает с определенной высоты и принимает falldamage, что-то с Particelpackets идет не так (см. Ошибку).

Мой код:

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





} 

}

Моя ошибка:

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 

Что происходит на экране:

Screenshot

+0

Вы используете NMS. Не используйте NMS; он находится вне API bukkit и не документирован. Подумайте, вместо этого используйте ProtocolLib (и создайте фальшивый проигрыватель _real_, не отправляя уже существующего игрока дважды, что приведет к поломке вещей _really bad_ из-за конфликтов идентификаторов сущностей). Еще одно замечание - вы знаете, что существует ключ 'F5', правильно? – Pokechu22

+0

@ Pokechu22 Спасибо за быстрый ответ. Я уже посмотрел на ProtocolLib, но, к сожалению, не смог найти хорошие учебники. Но вы правы, иногда даже мой Minecraft разбился XD. И, кстати, это было специально, что я был в режиме F5. – Apply55gx

+0

@Ferrybig Нет, конечно нет. Цель состоит не в том, чтобы определить, что такое исключение null. Цель состоит в том, чтобы выяснить, что это вызвало. – Apply55gx

ответ

0

Если вы хотите создать и переместить поддельных игроков, взгляните на ProtocolLib и PacketWrappers. Кроме того, вы можете найти реализацию FakePlayer с открытым исходным кодом here.

Редактировать: Поскольку вы, вероятно, кодируете античит, также взгляните на Killaura-Bot-Check.

 Смежные вопросы

  • Нет связанных вопросов^_^