For v2.2.
This commit is contained in:
parent
cd1115d2a3
commit
6f3f9b05d4
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<artifactId>npclib</artifactId>
|
||||
<groupId>net.jitse</groupId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-api</artifactId>
|
||||
|
|
|
@ -284,6 +284,9 @@ public abstract class SimpleNPC implements NPC, PacketHandler {
|
|||
case MAINHAND:
|
||||
this.inHand = item;
|
||||
break;
|
||||
case OFFHAND:
|
||||
this.offHand = item;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Entered an invalid inventory slot");
|
||||
}
|
||||
|
|
14
nms/pom.xml
14
nms/pom.xml
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
|
@ -19,12 +19,12 @@
|
|||
<module>v1_8_R3</module>
|
||||
<module>v1_9_R1</module>
|
||||
<module>v1_9_R2</module>
|
||||
<!-- <module>v1_10_R1</module>-->
|
||||
<!-- <module>v1_11_R1</module>-->
|
||||
<!-- <module>v1_12_R1</module>-->
|
||||
<!-- <module>v1_13_R1</module>-->
|
||||
<!-- <module>v1_13_R2</module>-->
|
||||
<!-- <module>v1_14_R1</module>-->
|
||||
<module>v1_10_R1</module>
|
||||
<module>v1_11_R1</module>
|
||||
<module>v1_12_R1</module>
|
||||
<module>v1_13_R1</module>
|
||||
<module>v1_13_R2</module>
|
||||
<module>v1_14_R1</module>
|
||||
</modules>
|
||||
|
||||
<dependencies>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_10_R1</artifactId>
|
||||
|
|
|
@ -5,17 +5,17 @@
|
|||
package net.jitse.npclib.nms.v1_10_R1;
|
||||
|
||||
import net.jitse.npclib.NPCLib;
|
||||
import net.jitse.npclib.api.state.NPCSlot;
|
||||
import net.jitse.npclib.hologram.Hologram;
|
||||
import net.jitse.npclib.internal.MinecraftVersion;
|
||||
import net.jitse.npclib.internal.SimpleNPC;
|
||||
import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
|
||||
import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutNamedEntitySpawnWrapper;
|
||||
import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutPlayerInfoWrapper;
|
||||
import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutScoreboardTeamWrapper;
|
||||
import net.jitse.npclib.nms.v1_10_R1.packets.*;
|
||||
import net.minecraft.server.v1_10_R1.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
@ -97,4 +97,54 @@ public class NPC_v1_10_R1 extends SimpleNPC {
|
|||
playerConnection.sendPacket(packetPlayOutPlayerInfoRemove);
|
||||
hologram.destroy(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMetadataPacket(Player player) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadataWrapper().create(activeStates, entityId);
|
||||
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendEquipmentPacket(Player player, NPCSlot slot, boolean auto) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
EnumItemSlot nmsSlot;
|
||||
ItemStack item;
|
||||
switch (slot) {
|
||||
case HELMET:
|
||||
item = helmet;
|
||||
nmsSlot = EnumItemSlot.HEAD;
|
||||
break;
|
||||
case CHESTPLATE:
|
||||
item = chestplate;
|
||||
nmsSlot = EnumItemSlot.CHEST;
|
||||
break;
|
||||
case LEGGINGS:
|
||||
item = leggings;
|
||||
nmsSlot = EnumItemSlot.LEGS;
|
||||
break;
|
||||
case BOOTS:
|
||||
item = boots;
|
||||
nmsSlot = EnumItemSlot.FEET;
|
||||
break;
|
||||
case MAINHAND:
|
||||
item = inHand;
|
||||
nmsSlot = EnumItemSlot.MAINHAND;
|
||||
break;
|
||||
case OFFHAND:
|
||||
item = offHand;
|
||||
nmsSlot = EnumItemSlot.OFFHAND;
|
||||
break;
|
||||
default:
|
||||
if (!auto) {
|
||||
throw new IllegalArgumentException(slot.toString() + " is not a supported slot for the version of your server");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment(entityId, nmsSlot, CraftItemStack.asNMSCopy(item));
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package net.jitse.npclib.nms.v1_10_R1.packets;
|
||||
|
||||
import net.jitse.npclib.api.state.NPCState;
|
||||
import net.minecraft.server.v1_10_R1.DataWatcher;
|
||||
import net.minecraft.server.v1_10_R1.DataWatcherObject;
|
||||
import net.minecraft.server.v1_10_R1.DataWatcherRegistry;
|
||||
import net.minecraft.server.v1_10_R1.PacketPlayOutEntityMetadata;
|
||||
|
||||
public class PacketPlayOutEntityMetadataWrapper {
|
||||
|
||||
public PacketPlayOutEntityMetadata create(NPCState[] activateStates, int entityId) {
|
||||
DataWatcher dataWatcher = new DataWatcher(null);
|
||||
byte masked = NPCState.getMasked(activateStates);
|
||||
dataWatcher.register(new DataWatcherObject<>(0, DataWatcherRegistry.a), masked);
|
||||
|
||||
return new PacketPlayOutEntityMetadata(entityId, dataWatcher, true);
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_11_R1</artifactId>
|
||||
|
|
|
@ -5,17 +5,17 @@
|
|||
package net.jitse.npclib.nms.v1_11_R1;
|
||||
|
||||
import net.jitse.npclib.NPCLib;
|
||||
import net.jitse.npclib.api.state.NPCSlot;
|
||||
import net.jitse.npclib.hologram.Hologram;
|
||||
import net.jitse.npclib.internal.MinecraftVersion;
|
||||
import net.jitse.npclib.internal.SimpleNPC;
|
||||
import net.jitse.npclib.nms.v1_11_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
|
||||
import net.jitse.npclib.nms.v1_11_R1.packets.PacketPlayOutNamedEntitySpawnWrapper;
|
||||
import net.jitse.npclib.nms.v1_11_R1.packets.PacketPlayOutPlayerInfoWrapper;
|
||||
import net.jitse.npclib.nms.v1_11_R1.packets.PacketPlayOutScoreboardTeamWrapper;
|
||||
import net.jitse.npclib.nms.v1_11_R1.packets.*;
|
||||
import net.minecraft.server.v1_11_R1.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
@ -97,4 +97,54 @@ public class NPC_v1_11_R1 extends SimpleNPC {
|
|||
playerConnection.sendPacket(packetPlayOutPlayerInfoRemove);
|
||||
hologram.destroy(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMetadataPacket(Player player) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadataWrapper().create(activeStates, entityId);
|
||||
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendEquipmentPacket(Player player, NPCSlot slot, boolean auto) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
EnumItemSlot nmsSlot;
|
||||
ItemStack item;
|
||||
switch (slot) {
|
||||
case HELMET:
|
||||
item = helmet;
|
||||
nmsSlot = EnumItemSlot.HEAD;
|
||||
break;
|
||||
case CHESTPLATE:
|
||||
item = chestplate;
|
||||
nmsSlot = EnumItemSlot.CHEST;
|
||||
break;
|
||||
case LEGGINGS:
|
||||
item = leggings;
|
||||
nmsSlot = EnumItemSlot.LEGS;
|
||||
break;
|
||||
case BOOTS:
|
||||
item = boots;
|
||||
nmsSlot = EnumItemSlot.FEET;
|
||||
break;
|
||||
case MAINHAND:
|
||||
item = inHand;
|
||||
nmsSlot = EnumItemSlot.MAINHAND;
|
||||
break;
|
||||
case OFFHAND:
|
||||
item = offHand;
|
||||
nmsSlot = EnumItemSlot.OFFHAND;
|
||||
break;
|
||||
default:
|
||||
if (!auto) {
|
||||
throw new IllegalArgumentException(slot.toString() + " is not a supported slot for the version of your server");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment(entityId, nmsSlot, CraftItemStack.asNMSCopy(item));
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package net.jitse.npclib.nms.v1_11_R1.packets;
|
||||
|
||||
import net.jitse.npclib.api.state.NPCState;
|
||||
import net.minecraft.server.v1_11_R1.DataWatcher;
|
||||
import net.minecraft.server.v1_11_R1.DataWatcherObject;
|
||||
import net.minecraft.server.v1_11_R1.DataWatcherRegistry;
|
||||
import net.minecraft.server.v1_11_R1.PacketPlayOutEntityMetadata;
|
||||
|
||||
public class PacketPlayOutEntityMetadataWrapper {
|
||||
|
||||
public PacketPlayOutEntityMetadata create(NPCState[] activateStates, int entityId) {
|
||||
DataWatcher dataWatcher = new DataWatcher(null);
|
||||
byte masked = NPCState.getMasked(activateStates);
|
||||
dataWatcher.register(new DataWatcherObject<>(0, DataWatcherRegistry.a), masked);
|
||||
|
||||
return new PacketPlayOutEntityMetadata(entityId, dataWatcher, true);
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_12_R1</artifactId>
|
||||
|
|
|
@ -5,17 +5,17 @@
|
|||
package net.jitse.npclib.nms.v1_12_R1;
|
||||
|
||||
import net.jitse.npclib.NPCLib;
|
||||
import net.jitse.npclib.api.state.NPCSlot;
|
||||
import net.jitse.npclib.hologram.Hologram;
|
||||
import net.jitse.npclib.internal.MinecraftVersion;
|
||||
import net.jitse.npclib.internal.SimpleNPC;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutNamedEntitySpawnWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutPlayerInfoWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutScoreboardTeamWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.*;
|
||||
import net.minecraft.server.v1_12_R1.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
@ -95,4 +95,54 @@ public class NPC_v1_12_R1 extends SimpleNPC {
|
|||
playerConnection.sendPacket(packetPlayOutPlayerInfoRemove);
|
||||
hologram.destroy(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMetadataPacket(Player player) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadataWrapper().create(activeStates, entityId);
|
||||
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendEquipmentPacket(Player player, NPCSlot slot, boolean auto) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
EnumItemSlot nmsSlot;
|
||||
ItemStack item;
|
||||
switch (slot) {
|
||||
case HELMET:
|
||||
item = helmet;
|
||||
nmsSlot = EnumItemSlot.HEAD;
|
||||
break;
|
||||
case CHESTPLATE:
|
||||
item = chestplate;
|
||||
nmsSlot = EnumItemSlot.CHEST;
|
||||
break;
|
||||
case LEGGINGS:
|
||||
item = leggings;
|
||||
nmsSlot = EnumItemSlot.LEGS;
|
||||
break;
|
||||
case BOOTS:
|
||||
item = boots;
|
||||
nmsSlot = EnumItemSlot.FEET;
|
||||
break;
|
||||
case MAINHAND:
|
||||
item = inHand;
|
||||
nmsSlot = EnumItemSlot.MAINHAND;
|
||||
break;
|
||||
case OFFHAND:
|
||||
item = offHand;
|
||||
nmsSlot = EnumItemSlot.OFFHAND;
|
||||
break;
|
||||
default:
|
||||
if (!auto) {
|
||||
throw new IllegalArgumentException(slot.toString() + " is not a supported slot for the version of your server");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment(entityId, nmsSlot, CraftItemStack.asNMSCopy(item));
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package net.jitse.npclib.nms.v1_12_R1.packets;
|
||||
|
||||
import net.jitse.npclib.api.state.NPCState;
|
||||
import net.minecraft.server.v1_12_R1.DataWatcher;
|
||||
import net.minecraft.server.v1_12_R1.DataWatcherObject;
|
||||
import net.minecraft.server.v1_12_R1.DataWatcherRegistry;
|
||||
import net.minecraft.server.v1_12_R1.PacketPlayOutEntityMetadata;
|
||||
|
||||
public class PacketPlayOutEntityMetadataWrapper {
|
||||
|
||||
public PacketPlayOutEntityMetadata create(NPCState[] activateStates, int entityId) {
|
||||
DataWatcher dataWatcher = new DataWatcher(null);
|
||||
byte masked = NPCState.getMasked(activateStates);
|
||||
dataWatcher.register(new DataWatcherObject<>(0, DataWatcherRegistry.a), masked);
|
||||
|
||||
return new PacketPlayOutEntityMetadata(entityId, dataWatcher, true);
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_13_R1</artifactId>
|
||||
|
|
|
@ -5,17 +5,17 @@
|
|||
package net.jitse.npclib.nms.v1_13_R1;
|
||||
|
||||
import net.jitse.npclib.NPCLib;
|
||||
import net.jitse.npclib.api.state.NPCSlot;
|
||||
import net.jitse.npclib.hologram.Hologram;
|
||||
import net.jitse.npclib.internal.MinecraftVersion;
|
||||
import net.jitse.npclib.internal.SimpleNPC;
|
||||
import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutNamedEntitySpawnWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutPlayerInfoWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutScoreboardTeamWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R1.packets.*;
|
||||
import net.minecraft.server.v1_13_R1.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
@ -96,4 +96,54 @@ public class NPC_v1_13_R1 extends SimpleNPC {
|
|||
playerConnection.sendPacket(packetPlayOutPlayerInfoRemove);
|
||||
hologram.destroy(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMetadataPacket(Player player) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadataWrapper().create(activeStates, entityId);
|
||||
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendEquipmentPacket(Player player, NPCSlot slot, boolean auto) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
EnumItemSlot nmsSlot;
|
||||
ItemStack item;
|
||||
switch (slot) {
|
||||
case HELMET:
|
||||
item = helmet;
|
||||
nmsSlot = EnumItemSlot.HEAD;
|
||||
break;
|
||||
case CHESTPLATE:
|
||||
item = chestplate;
|
||||
nmsSlot = EnumItemSlot.CHEST;
|
||||
break;
|
||||
case LEGGINGS:
|
||||
item = leggings;
|
||||
nmsSlot = EnumItemSlot.LEGS;
|
||||
break;
|
||||
case BOOTS:
|
||||
item = boots;
|
||||
nmsSlot = EnumItemSlot.FEET;
|
||||
break;
|
||||
case MAINHAND:
|
||||
item = inHand;
|
||||
nmsSlot = EnumItemSlot.MAINHAND;
|
||||
break;
|
||||
case OFFHAND:
|
||||
item = offHand;
|
||||
nmsSlot = EnumItemSlot.OFFHAND;
|
||||
break;
|
||||
default:
|
||||
if (!auto) {
|
||||
throw new IllegalArgumentException(slot.toString() + " is not a supported slot for the version of your server");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment(entityId, nmsSlot, CraftItemStack.asNMSCopy(item));
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package net.jitse.npclib.nms.v1_13_R1.packets;
|
||||
|
||||
import net.jitse.npclib.api.state.NPCState;
|
||||
import net.minecraft.server.v1_13_R1.DataWatcher;
|
||||
import net.minecraft.server.v1_13_R1.DataWatcherObject;
|
||||
import net.minecraft.server.v1_13_R1.DataWatcherRegistry;
|
||||
import net.minecraft.server.v1_13_R1.PacketPlayOutEntityMetadata;
|
||||
|
||||
public class PacketPlayOutEntityMetadataWrapper {
|
||||
|
||||
public PacketPlayOutEntityMetadata create(NPCState[] activateStates, int entityId) {
|
||||
DataWatcher dataWatcher = new DataWatcher(null);
|
||||
byte masked = NPCState.getMasked(activateStates);
|
||||
dataWatcher.register(new DataWatcherObject<>(0, DataWatcherRegistry.a), masked);
|
||||
|
||||
return new PacketPlayOutEntityMetadata(entityId, dataWatcher, true);
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_13_R2</artifactId>
|
||||
|
|
|
@ -5,17 +5,17 @@
|
|||
package net.jitse.npclib.nms.v1_13_R2;
|
||||
|
||||
import net.jitse.npclib.NPCLib;
|
||||
import net.jitse.npclib.api.state.NPCSlot;
|
||||
import net.jitse.npclib.hologram.Hologram;
|
||||
import net.jitse.npclib.internal.MinecraftVersion;
|
||||
import net.jitse.npclib.internal.SimpleNPC;
|
||||
import net.jitse.npclib.nms.v1_13_R2.packets.PacketPlayOutEntityHeadRotationWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R2.packets.PacketPlayOutNamedEntitySpawnWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R2.packets.PacketPlayOutPlayerInfoWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R2.packets.PacketPlayOutScoreboardTeamWrapper;
|
||||
import net.jitse.npclib.nms.v1_13_R2.packets.*;
|
||||
import net.minecraft.server.v1_13_R2.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
@ -77,7 +77,7 @@ public class NPC_v1_13_R2 extends SimpleNPC {
|
|||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
if (hasTeamRegistered.add(player.getUniqueId()))
|
||||
playerConnection.sendPacket(packetPlayOutScoreboardTeamRegister);
|
||||
playerConnection.sendPacket(packetPlayOutScoreboardTeamRegister);
|
||||
playerConnection.sendPacket(packetPlayOutPlayerInfoAdd);
|
||||
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
|
||||
playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
|
||||
|
@ -97,4 +97,54 @@ public class NPC_v1_13_R2 extends SimpleNPC {
|
|||
playerConnection.sendPacket(packetPlayOutPlayerInfoRemove);
|
||||
hologram.destroy(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMetadataPacket(Player player) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadataWrapper().create(activeStates, entityId);
|
||||
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendEquipmentPacket(Player player, NPCSlot slot, boolean auto) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
EnumItemSlot nmsSlot;
|
||||
ItemStack item;
|
||||
switch (slot) {
|
||||
case HELMET:
|
||||
item = helmet;
|
||||
nmsSlot = EnumItemSlot.HEAD;
|
||||
break;
|
||||
case CHESTPLATE:
|
||||
item = chestplate;
|
||||
nmsSlot = EnumItemSlot.CHEST;
|
||||
break;
|
||||
case LEGGINGS:
|
||||
item = leggings;
|
||||
nmsSlot = EnumItemSlot.LEGS;
|
||||
break;
|
||||
case BOOTS:
|
||||
item = boots;
|
||||
nmsSlot = EnumItemSlot.FEET;
|
||||
break;
|
||||
case MAINHAND:
|
||||
item = inHand;
|
||||
nmsSlot = EnumItemSlot.MAINHAND;
|
||||
break;
|
||||
case OFFHAND:
|
||||
item = offHand;
|
||||
nmsSlot = EnumItemSlot.OFFHAND;
|
||||
break;
|
||||
default:
|
||||
if (!auto) {
|
||||
throw new IllegalArgumentException(slot.toString() + " is not a supported slot for the version of your server");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment(entityId, nmsSlot, CraftItemStack.asNMSCopy(item));
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package net.jitse.npclib.nms.v1_13_R2.packets;
|
||||
|
||||
import net.jitse.npclib.api.state.NPCState;
|
||||
import net.minecraft.server.v1_13_R2.DataWatcher;
|
||||
import net.minecraft.server.v1_13_R2.DataWatcherObject;
|
||||
import net.minecraft.server.v1_13_R2.DataWatcherRegistry;
|
||||
import net.minecraft.server.v1_13_R2.PacketPlayOutEntityMetadata;
|
||||
|
||||
public class PacketPlayOutEntityMetadataWrapper {
|
||||
|
||||
public PacketPlayOutEntityMetadata create(NPCState[] activateStates, int entityId) {
|
||||
DataWatcher dataWatcher = new DataWatcher(null);
|
||||
byte masked = NPCState.getMasked(activateStates);
|
||||
dataWatcher.register(new DataWatcherObject<>(0, DataWatcherRegistry.a), masked);
|
||||
|
||||
return new PacketPlayOutEntityMetadata(entityId, dataWatcher, true);
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_14_R1</artifactId>
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
package net.jitse.npclib.nms.v1_14_R1;
|
||||
|
||||
import net.jitse.npclib.NPCLib;
|
||||
import net.jitse.npclib.api.state.NPCSlot;
|
||||
import net.jitse.npclib.hologram.Hologram;
|
||||
import net.jitse.npclib.internal.MinecraftVersion;
|
||||
import net.jitse.npclib.internal.SimpleNPC;
|
||||
import net.jitse.npclib.nms.v1_14_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
|
||||
import net.jitse.npclib.nms.v1_14_R1.packets.PacketPlayOutNamedEntitySpawnWrapper;
|
||||
import net.jitse.npclib.nms.v1_14_R1.packets.PacketPlayOutPlayerInfoWrapper;
|
||||
import net.jitse.npclib.nms.v1_14_R1.packets.PacketPlayOutScoreboardTeamWrapper;
|
||||
import net.jitse.npclib.nms.v1_14_R1.packets.*;
|
||||
import net.minecraft.server.v1_14_R1.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
@ -93,4 +93,54 @@ public class NPC_v1_14_R1 extends SimpleNPC {
|
|||
playerConnection.sendPacket(packetPlayOutPlayerInfoRemove);
|
||||
hologram.destroy(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMetadataPacket(Player player) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadataWrapper().create(activeStates, entityId);
|
||||
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendEquipmentPacket(Player player, NPCSlot slot, boolean auto) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
EnumItemSlot nmsSlot;
|
||||
ItemStack item;
|
||||
switch (slot) {
|
||||
case HELMET:
|
||||
item = helmet;
|
||||
nmsSlot = EnumItemSlot.HEAD;
|
||||
break;
|
||||
case CHESTPLATE:
|
||||
item = chestplate;
|
||||
nmsSlot = EnumItemSlot.CHEST;
|
||||
break;
|
||||
case LEGGINGS:
|
||||
item = leggings;
|
||||
nmsSlot = EnumItemSlot.LEGS;
|
||||
break;
|
||||
case BOOTS:
|
||||
item = boots;
|
||||
nmsSlot = EnumItemSlot.FEET;
|
||||
break;
|
||||
case MAINHAND:
|
||||
item = inHand;
|
||||
nmsSlot = EnumItemSlot.MAINHAND;
|
||||
break;
|
||||
case OFFHAND:
|
||||
item = offHand;
|
||||
nmsSlot = EnumItemSlot.OFFHAND;
|
||||
break;
|
||||
default:
|
||||
if (!auto) {
|
||||
throw new IllegalArgumentException(slot.toString() + " is not a supported slot for the version of your server");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment(entityId, nmsSlot, CraftItemStack.asNMSCopy(item));
|
||||
playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package net.jitse.npclib.nms.v1_14_R1.packets;
|
||||
|
||||
import net.jitse.npclib.api.state.NPCState;
|
||||
import net.minecraft.server.v1_14_R1.DataWatcher;
|
||||
import net.minecraft.server.v1_14_R1.DataWatcherObject;
|
||||
import net.minecraft.server.v1_14_R1.DataWatcherRegistry;
|
||||
import net.minecraft.server.v1_14_R1.PacketPlayOutEntityMetadata;
|
||||
|
||||
public class PacketPlayOutEntityMetadataWrapper {
|
||||
|
||||
public PacketPlayOutEntityMetadata create(NPCState[] activateStates, int entityId) {
|
||||
DataWatcher dataWatcher = new DataWatcher(null);
|
||||
byte masked = NPCState.getMasked(activateStates);
|
||||
// TODO: Find out why NPCState#CROUCHED doesn't work.
|
||||
dataWatcher.register(new DataWatcherObject<>(0, DataWatcherRegistry.a), masked);
|
||||
|
||||
// for (Player online : Bukkit.getOnlinePlayers()) {
|
||||
// DataWatcher watcher = ((CraftPlayer) online).getHandle().getDataWatcher();
|
||||
// try {
|
||||
// Field entriesField = watcher.getClass().getDeclaredField("entries");
|
||||
// entriesField.setAccessible(true);
|
||||
//
|
||||
// Int2ObjectOpenHashMap<DataWatcher.Item<?>> entries = (Int2ObjectOpenHashMap<DataWatcher.Item<?>>) entriesField.get(watcher);
|
||||
// entries.forEach((integer, item) -> {
|
||||
// if (item.b() instanceof Boolean || item.b() instanceof Byte)
|
||||
// online.sendMessage(integer + ": " + item.b() + " type = " + item.b().getClass().toString());
|
||||
// });
|
||||
// } catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
|
||||
return new PacketPlayOutEntityMetadata(entityId, dataWatcher, true);
|
||||
}
|
||||
}
|
|
@ -37,7 +37,7 @@ public class PacketPlayOutNamedEntitySpawnWrapper {
|
|||
.set(packetPlayOutNamedEntitySpawn, (byte) ((int) (location.getPitch() * 256.0F / 360.0F)));
|
||||
|
||||
DataWatcher dataWatcher = new DataWatcher(null);
|
||||
dataWatcher.register(new DataWatcherObject<>(13, DataWatcherRegistry.a), (byte) 127);
|
||||
dataWatcher.register(new DataWatcherObject<>(15, DataWatcherRegistry.a), (byte) 127);
|
||||
|
||||
Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "h", DataWatcher.class)
|
||||
.set(packetPlayOutNamedEntitySpawn, dataWatcher);
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_8_R1</artifactId>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_8_R2</artifactId>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_8_R3</artifactId>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_9_R1</artifactId>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib-nms</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-nms-v1_9_R2</artifactId>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>net.jitse</groupId>
|
||||
<artifactId>npclib</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
<version>2.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>npclib-plugin</artifactId>
|
||||
|
|
Loading…
Reference in New Issue