For v2.2.

This commit is contained in:
Jitse Boonstra
2019-10-20 20:04:38 +02:00
parent cd1115d2a3
commit 6f3f9b05d4
29 changed files with 475 additions and 47 deletions
+1 -1
View File
@@ -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);
}
}