- Баллы
- 76
- Имя в Minecraft
- Lisenochek
Всем привет. Пытаюсь создать с помощью NMS игрока, с которым можно было бы взаимодействовать (в том числе и бить).
У меня получилось его создать и даже взаимодействовать с ним, используя PacketListenerAPI от ProtocolLib, но столкнулся с проблемой, что я не могу дамажить NPC, используя те же стрелы или зелья. Я прошерстил все пакеты, но ничего подобного найти не смог, а мне это очень важно.
Помогите пожалуйста с этой проблемой.
Код:
У меня получилось его создать и даже взаимодействовать с ним, используя PacketListenerAPI от ProtocolLib, но столкнулся с проблемой, что я не могу дамажить NPC, используя те же стрелы или зелья. Я прошерстил все пакеты, но ничего подобного найти не смог, а мне это очень важно.
Помогите пожалуйста с этой проблемой.
Код:
Код:
package ru.lisenochek.mcrust.objects;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_12_R1.*;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_12_R1.CraftServer;
import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.UUID;
public class NPCClass extends EntityPlayer {
public static HashMap<Integer, NPCClass> npcMap = new HashMap<>();
private Location location;
public NPCClass(Player player, String name) {
super(((CraftServer) Bukkit.getServer()).getServer(), ((CraftWorld) player.getLocation().getWorld()).getHandle(), new GameProfile(UUID.randomUUID(), "NPC"), new PlayerInteractManager(((CraftWorld) player.getLocation().getWorld()).getHandle()));
WorldServer worldServer = ((CraftWorld) player.getLocation().getWorld()).getHandle();
this.location = player.getLocation();
npcMap.put(getId(), this);
}
public int getID() {
return getId();
}
public Location getLocation() {
return location;
}
public void spawn() {
setLocation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
playerConnection = new PlayerConnection(((CraftServer) Bukkit.getServer()).getServer(), new NetworkManager(EnumProtocolDirection.SERVERBOUND), this);
}
public void removeNPC() {
for (Player player : Bukkit.getOnlinePlayers()) ((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutEntityDestroy(getId()));
npcMap.remove(getId());
}
}