refactor NMS
This commit is contained in:
parent
cdc78e9fe1
commit
f6940df7d2
10 changed files with 44 additions and 54 deletions
|
@ -176,7 +176,7 @@ public class NPC {
|
||||||
try {
|
try {
|
||||||
Object nmsWorld = Reflections.GET_HANDLE_WORLD_METHOD.get().invoke(getLocation().getWorld());
|
Object nmsWorld = Reflections.GET_HANDLE_WORLD_METHOD.get().invoke(getLocation().getWorld());
|
||||||
boolean isPlayer = (npcType == NPCType.PLAYER);
|
boolean isPlayer = (npcType == NPCType.PLAYER);
|
||||||
this.nmsEntity = isPlayer ? this.packets.getNms().getPlayerPacket(nmsWorld, this.gameProfile) : (Utils.versionNewer(14) ? npcType.getConstructor().newInstance(npcType.getNmsEntityType(), nmsWorld) : npcType.getConstructor().newInstance(nmsWorld));
|
this.nmsEntity = isPlayer ? this.packets.getNms().createPlayer(nmsWorld, this.gameProfile) : (Utils.versionNewer(14) ? npcType.getConstructor().newInstance(npcType.getNmsEntityType(), nmsWorld) : npcType.getConstructor().newInstance(nmsWorld));
|
||||||
this.bukkitEntity = Reflections.GET_BUKKIT_ENTITY_METHOD.get().invoke(this.nmsEntity);
|
this.bukkitEntity = Reflections.GET_BUKKIT_ENTITY_METHOD.get().invoke(this.nmsEntity);
|
||||||
this.uuid = (UUID) Reflections.GET_UNIQUE_ID_METHOD.get().invoke(this.nmsEntity, new Object[0]);
|
this.uuid = (UUID) Reflections.GET_UNIQUE_ID_METHOD.get().invoke(this.nmsEntity, new Object[0]);
|
||||||
if (isPlayer) {
|
if (isPlayer) {
|
||||||
|
@ -215,13 +215,13 @@ public class NPC {
|
||||||
if (FunctionFactory.isTrue(this, "mirror")) updateProfile(user.getGameProfile().getProperties());
|
if (FunctionFactory.isTrue(this, "mirror")) updateProfile(user.getGameProfile().getProperties());
|
||||||
Utils.sendPackets(user, this.tabConstructor, this.updateTabConstructor);
|
Utils.sendPackets(user, this.tabConstructor, this.updateTabConstructor);
|
||||||
}
|
}
|
||||||
Utils.sendPackets(user, this.packets.getNms().getSpawnPacket(this.nmsEntity, npcIsPlayer));
|
Utils.sendPackets(user, this.packets.getNms().createSpawnPacket(this.nmsEntity, npcIsPlayer));
|
||||||
if (FunctionFactory.isTrue(this, "holo")) this.hologram.spawn(user);
|
if (FunctionFactory.isTrue(this, "holo")) this.hologram.spawn(user);
|
||||||
updateMetadata(Collections.singleton(user));
|
updateMetadata(Collections.singleton(user));
|
||||||
sendEquipPackets(user);
|
sendEquipPackets(user);
|
||||||
lookAt(user, getLocation(), true);
|
lookAt(user, getLocation(), true);
|
||||||
if (npcIsPlayer) {
|
if (npcIsPlayer) {
|
||||||
Object removeTabPacket = this.packets.getNms().getTabRemovePacket(this.nmsEntity);
|
Object removeTabPacket = this.packets.getNms().createTabRemovePacket(this.nmsEntity);
|
||||||
ZNPCsPlus.SCHEDULER.scheduleSyncDelayedTask(() -> Utils.sendPackets(user, removeTabPacket, this.updateTabConstructor), 60);
|
ZNPCsPlus.SCHEDULER.scheduleSyncDelayedTask(() -> Utils.sendPackets(user, removeTabPacket, this.updateTabConstructor), 60);
|
||||||
}
|
}
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
|
@ -238,9 +238,9 @@ public class NPC {
|
||||||
|
|
||||||
private void handleDelete(ZUser user) {
|
private void handleDelete(ZUser user) {
|
||||||
try {
|
try {
|
||||||
if (this.npcPojo.getNpcType() == NPCType.PLAYER) this.packets.getNms().getTabRemovePacket(this.nmsEntity);
|
if (this.npcPojo.getNpcType() == NPCType.PLAYER) this.packets.getNms().createTabRemovePacket(this.nmsEntity);
|
||||||
this.hologram.delete(user);
|
this.hologram.delete(user);
|
||||||
Utils.sendPackets(user, this.packets.getNms().getDestroyPacket(this.entityID));
|
Utils.sendPackets(user, this.packets.getNms().createEntityDestroyPacket(this.entityID));
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
throw new UnexpectedCallException(operationException);
|
throw new UnexpectedCallException(operationException);
|
||||||
}
|
}
|
||||||
|
@ -267,7 +267,7 @@ public class NPC {
|
||||||
|
|
||||||
protected void updateMetadata(Iterable<ZUser> users) {
|
protected void updateMetadata(Iterable<ZUser> users) {
|
||||||
try {
|
try {
|
||||||
Object metaData = this.packets.getNms().getMetadataPacket(this.entityID, this.nmsEntity);
|
Object metaData = this.packets.getNms().createMetadataPacket(this.entityID, this.nmsEntity);
|
||||||
for (ZUser user : users) Utils.sendPackets(user, metaData);
|
for (ZUser user : users) Utils.sendPackets(user, metaData);
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
operationException.getCause().printStackTrace();
|
operationException.getCause().printStackTrace();
|
||||||
|
@ -290,7 +290,7 @@ public class NPC {
|
||||||
public void sendEquipPackets(ZUser zUser) {
|
public void sendEquipPackets(ZUser zUser) {
|
||||||
if (this.npcPojo.getNpcEquip().isEmpty()) return;
|
if (this.npcPojo.getNpcEquip().isEmpty()) return;
|
||||||
try {
|
try {
|
||||||
ImmutableList<Object> equipPackets = this.packets.getNms().getEquipPackets(this);
|
ImmutableList<Object> equipPackets = this.packets.getNms().createEquipmentPacket(this);
|
||||||
equipPackets.forEach(o -> Utils.sendPackets(zUser, o));
|
equipPackets.forEach(o -> Utils.sendPackets(zUser, o));
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
throw new UnexpectedCallException(operationException.getCause());
|
throw new UnexpectedCallException(operationException.getCause());
|
||||||
|
|
|
@ -35,7 +35,7 @@ public class GlowFunction extends NPCFunction {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean allow(NPC npc) {
|
protected boolean allow(NPC npc) {
|
||||||
return npc.getPackets().getNms().allowGlowColor();
|
return npc.getPackets().getNms().allowsGlowColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public NPCFunction.ResultType resolve(NPC npc) {
|
public NPCFunction.ResultType resolve(NPC npc) {
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class Hologram {
|
||||||
y += LINE_SPACING;
|
y += LINE_SPACING;
|
||||||
}
|
}
|
||||||
setLocation(location, 0.0D);
|
setLocation(location, 0.0D);
|
||||||
this.npc.getPackets().flushCache("getHologramSpawnPacket");
|
this.npc.getPackets().flushCache("createArmorStandSpawnPacket");
|
||||||
this.npc.getViewers().forEach(this::spawn);
|
this.npc.getViewers().forEach(this::spawn);
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
throw new UnexpectedCallException(operationException);
|
throw new UnexpectedCallException(operationException);
|
||||||
|
@ -56,7 +56,7 @@ public class Hologram {
|
||||||
public void spawn(ZUser user) {
|
public void spawn(ZUser user) {
|
||||||
this.hologramLines.forEach(hologramLine -> {
|
this.hologramLines.forEach(hologramLine -> {
|
||||||
try {
|
try {
|
||||||
Object entityPlayerPacketSpawn = this.npc.getPackets().getNms().getHologramSpawnPacket(hologramLine.armorStand);
|
Object entityPlayerPacketSpawn = this.npc.getPackets().getNms().createArmorStandSpawnPacket(hologramLine.armorStand);
|
||||||
Utils.sendPackets(user, entityPlayerPacketSpawn);
|
Utils.sendPackets(user, entityPlayerPacketSpawn);
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
delete(user);
|
delete(user);
|
||||||
|
@ -67,7 +67,7 @@ public class Hologram {
|
||||||
public void delete(ZUser user) {
|
public void delete(ZUser user) {
|
||||||
this.hologramLines.forEach(hologramLine -> {
|
this.hologramLines.forEach(hologramLine -> {
|
||||||
try {
|
try {
|
||||||
Utils.sendPackets(user, this.npc.getPackets().getNms().getDestroyPacket(hologramLine.id));
|
Utils.sendPackets(user, this.npc.getPackets().getNms().createEntityDestroyPacket(hologramLine.id));
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
throw new UnexpectedCallException(operationException);
|
throw new UnexpectedCallException(operationException);
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ public class Hologram {
|
||||||
for (HologramLine hologramLine : this.hologramLines) {
|
for (HologramLine hologramLine : this.hologramLines) {
|
||||||
try {
|
try {
|
||||||
updateLine(hologramLine.line, hologramLine.armorStand, user);
|
updateLine(hologramLine.line, hologramLine.armorStand, user);
|
||||||
Object metaData = this.npc.getPackets().getNms().getMetadataPacket(hologramLine.id, hologramLine.armorStand);
|
Object metaData = this.npc.getPackets().getNms().createMetadataPacket(hologramLine.id, hologramLine.armorStand);
|
||||||
Utils.sendPackets(user, metaData);
|
Utils.sendPackets(user, metaData);
|
||||||
} catch (ReflectiveOperationException operationException) {
|
} catch (ReflectiveOperationException operationException) {
|
||||||
throw new UnexpectedCallException(operationException);
|
throw new UnexpectedCallException(operationException);
|
||||||
|
|
|
@ -18,23 +18,21 @@ public interface NMS {
|
||||||
int version();
|
int version();
|
||||||
|
|
||||||
@PacketValue(keyName = "playerPacket")
|
@PacketValue(keyName = "playerPacket")
|
||||||
Object getPlayerPacket(Object paramObject, GameProfile paramGameProfile) throws ReflectiveOperationException;
|
Object createPlayer(Object paramObject, GameProfile paramGameProfile) throws ReflectiveOperationException;
|
||||||
|
|
||||||
@PacketValue(keyName = "spawnPacket")
|
@PacketValue(keyName = "spawnPacket")
|
||||||
Object getSpawnPacket(Object paramObject, boolean paramBoolean) throws ReflectiveOperationException;
|
Object createSpawnPacket(Object paramObject, boolean paramBoolean) throws ReflectiveOperationException;
|
||||||
|
|
||||||
Object convertItemStack(int paramInt, ItemSlot paramItemSlot, ItemStack paramItemStack) throws ReflectiveOperationException;
|
Object createEntityEquipmentPacket(int paramInt, ItemSlot paramItemSlot, ItemStack paramItemStack) throws ReflectiveOperationException;
|
||||||
|
|
||||||
Object getClickType(Object paramObject) throws ReflectiveOperationException;
|
Object createMetadataPacket(int paramInt, Object paramObject) throws ReflectiveOperationException;
|
||||||
|
|
||||||
Object getMetadataPacket(int paramInt, Object paramObject) throws ReflectiveOperationException;
|
|
||||||
|
|
||||||
@PacketValue(keyName = "hologramSpawnPacket", valueType = ValueType.ARGUMENTS)
|
@PacketValue(keyName = "hologramSpawnPacket", valueType = ValueType.ARGUMENTS)
|
||||||
Object getHologramSpawnPacket(Object paramObject) throws ReflectiveOperationException;
|
Object createArmorStandSpawnPacket(Object paramObject) throws ReflectiveOperationException;
|
||||||
|
|
||||||
@SuppressWarnings("SuspiciousTernaryOperatorInVarargsCall")
|
@SuppressWarnings("SuspiciousTernaryOperatorInVarargsCall")
|
||||||
@PacketValue(keyName = "destroyPacket", valueType = ValueType.ARGUMENTS)
|
@PacketValue(keyName = "destroyPacket", valueType = ValueType.ARGUMENTS)
|
||||||
default Object getDestroyPacket(int entityId) throws ReflectiveOperationException {
|
default Object createEntityDestroyPacket(int entityId) throws ReflectiveOperationException {
|
||||||
return Reflections.PACKET_PLAY_OUT_ENTITY_DESTROY_CONSTRUCTOR.get().newInstance(Reflections.PACKET_PLAY_OUT_ENTITY_DESTROY_CONSTRUCTOR.get().getParameterTypes()[0].isArray() ? new int[] {entityId} : entityId);
|
return Reflections.PACKET_PLAY_OUT_ENTITY_DESTROY_CONSTRUCTOR.get().newInstance(Reflections.PACKET_PLAY_OUT_ENTITY_DESTROY_CONSTRUCTOR.get().getParameterTypes()[0].isArray() ? new int[] {entityId} : entityId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +42,7 @@ public interface NMS {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PacketValue(keyName = "removeTab")
|
@PacketValue(keyName = "removeTab")
|
||||||
default Object getTabRemovePacket(Object nmsEntity) throws ReflectiveOperationException {
|
default Object createTabRemovePacket(Object nmsEntity) throws ReflectiveOperationException {
|
||||||
try {
|
try {
|
||||||
return Reflections.PACKET_PLAY_OUT_PLAYER_INFO_CONSTRUCTOR.get().newInstance(Reflections.REMOVE_PLAYER_FIELD.get(), Collections.singletonList(nmsEntity));
|
return Reflections.PACKET_PLAY_OUT_PLAYER_INFO_CONSTRUCTOR.get().newInstance(Reflections.REMOVE_PLAYER_FIELD.get(), Collections.singletonList(nmsEntity));
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
|
@ -55,7 +53,7 @@ public interface NMS {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PacketValue(keyName = "equipPackets")
|
@PacketValue(keyName = "equipPackets")
|
||||||
ImmutableList<Object> getEquipPackets(NPC paramNPC) throws ReflectiveOperationException;
|
ImmutableList<Object> createEquipmentPacket(NPC paramNPC) throws ReflectiveOperationException;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@PacketValue(keyName = "scoreboardPackets")
|
@PacketValue(keyName = "scoreboardPackets")
|
||||||
|
@ -91,15 +89,15 @@ public interface NMS {
|
||||||
} else {
|
} else {
|
||||||
collection.add(npc.getUUID().toString());
|
collection.add(npc.getUUID().toString());
|
||||||
}
|
}
|
||||||
if (allowGlowColor() && FunctionFactory.isTrue(npc, "glow"))
|
if (allowsGlowColor() && FunctionFactory.isTrue(npc, "glow"))
|
||||||
updateGlowPacket(npc, scoreboardTeamPacket);
|
updateGlow(npc, scoreboardTeamPacket);
|
||||||
builder.add(isVersion17 ? Reflections.PACKET_PLAY_OUT_SCOREBOARD_TEAM_CREATE.get().invoke(null, scoreboardTeamPacket, Boolean.TRUE) : scoreboardTeamPacket);
|
builder.add(isVersion17 ? Reflections.PACKET_PLAY_OUT_SCOREBOARD_TEAM_CREATE.get().invoke(null, scoreboardTeamPacket, Boolean.TRUE) : scoreboardTeamPacket);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateGlowPacket(NPC paramNPC, Object paramObject) throws ReflectiveOperationException;
|
void updateGlow(NPC paramNPC, Object paramObject) throws ReflectiveOperationException;
|
||||||
|
|
||||||
boolean allowGlowColor();
|
boolean allowsGlowColor();
|
||||||
|
|
||||||
default void update(PacketCache packetCache) throws ReflectiveOperationException {
|
default void update(PacketCache packetCache) throws ReflectiveOperationException {
|
||||||
packetCache.flushCache("scoreboardPackets");
|
packetCache.flushCache("scoreboardPackets");
|
||||||
|
|
|
@ -16,12 +16,12 @@ public class NMSV16 extends NMSV9 {
|
||||||
return 16;
|
return 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImmutableList<Object> getEquipPackets(NPC npc) throws ReflectiveOperationException {
|
public ImmutableList<Object> createEquipmentPacket(NPC npc) throws ReflectiveOperationException {
|
||||||
List<Pair<?, ?>> pairs = Lists.newArrayListWithCapacity((ItemSlot.values()).length);
|
List<Pair<?, ?>> pairs = Lists.newArrayListWithCapacity((ItemSlot.values()).length);
|
||||||
for (Map.Entry<ItemSlot, ItemStack> entry : npc.getNpcPojo().getNpcEquip().entrySet())
|
for (Map.Entry<ItemSlot, ItemStack> entry : npc.getNpcPojo().getNpcEquip().entrySet())
|
||||||
pairs.add(new Pair<>(getItemSlot(entry
|
pairs.add(new Pair<>(getItemSlot(entry
|
||||||
.getKey().getSlot()),
|
.getKey().getSlot()),
|
||||||
convertItemStack(npc.getEntityID(), entry.getKey(), entry.getValue())));
|
createEntityEquipmentPacket(npc.getEntityID(), entry.getKey(), entry.getValue())));
|
||||||
return ImmutableList.of(Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_V1.get().newInstance(npc.getEntityID(), pairs));
|
return ImmutableList.of(Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_V1.get().newInstance(npc.getEntityID(), pairs));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,15 +11,11 @@ public class NMSV17 extends NMSV16 {
|
||||||
return 17;
|
return 17;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getPlayerPacket(Object nmsWorld, GameProfile gameProfile) throws ReflectiveOperationException {
|
public Object createPlayer(Object nmsWorld, GameProfile gameProfile) throws ReflectiveOperationException {
|
||||||
return Reflections.PLAYER_CONSTRUCTOR_NEW.get().newInstance(Reflections.GET_SERVER_METHOD.get().invoke(Bukkit.getServer()), nmsWorld, gameProfile);
|
return Reflections.PLAYER_CONSTRUCTOR_NEW.get().newInstance(Reflections.GET_SERVER_METHOD.get().invoke(Bukkit.getServer()), nmsWorld, gameProfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateGlowPacket(NPC npc, Object packet) throws ReflectiveOperationException {
|
public void updateGlow(NPC npc, Object packet) throws ReflectiveOperationException {
|
||||||
Utils.setValue(packet, "n", Reflections.ENUM_CHAT_FORMAT_FIND.get().invoke(null, npc.getNpcPojo().getGlowName()));
|
Utils.setValue(packet, "n", Reflections.ENUM_CHAT_FORMAT_FIND.get().invoke(null, npc.getNpcPojo().getGlowName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getClickType(Object interactPacket) {
|
|
||||||
return "INTERACT";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ public class NMSV18 extends NMSV17 {
|
||||||
return 18;
|
return 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateGlowPacket(NPC npc, Object packet) throws ReflectiveOperationException {
|
public void updateGlow(NPC npc, Object packet) throws ReflectiveOperationException {
|
||||||
Utils.setValue(packet, "m", Reflections.ENUM_CHAT_FORMAT_FIND.get().invoke(null, npc.getNpcPojo().getGlowName()));
|
Utils.setValue(packet, "m", Reflections.ENUM_CHAT_FORMAT_FIND.get().invoke(null, npc.getNpcPojo().getGlowName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ public class NMSV19 extends NMSV18 {
|
||||||
return 19;
|
return 19;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getPlayerPacket(Object nmsWorld, GameProfile gameProfile) throws ReflectiveOperationException {
|
public Object createPlayer(Object nmsWorld, GameProfile gameProfile) throws ReflectiveOperationException {
|
||||||
try {
|
try {
|
||||||
return Reflections.PLAYER_CONSTRUCTOR_NEW_1.get().newInstance(Reflections.GET_SERVER_METHOD.get().invoke(Bukkit.getServer()), nmsWorld, gameProfile, null);
|
return Reflections.PLAYER_CONSTRUCTOR_NEW_1.get().newInstance(Reflections.GET_SERVER_METHOD.get().invoke(Bukkit.getServer()), nmsWorld, gameProfile, null);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
|
|
@ -17,26 +17,22 @@ public class NMSV8 implements NMS {
|
||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getPlayerPacket(Object nmsWorld, GameProfile gameProfile) throws ReflectiveOperationException {
|
public Object createPlayer(Object nmsWorld, GameProfile gameProfile) throws ReflectiveOperationException {
|
||||||
Constructor<?> constructor = (Utils.BUKKIT_VERSION > 13) ? Reflections.PLAYER_INTERACT_MANAGER_NEW_CONSTRUCTOR.get() : Reflections.PLAYER_INTERACT_MANAGER_OLD_CONSTRUCTOR.get();
|
Constructor<?> constructor = (Utils.BUKKIT_VERSION > 13) ? Reflections.PLAYER_INTERACT_MANAGER_NEW_CONSTRUCTOR.get() : Reflections.PLAYER_INTERACT_MANAGER_OLD_CONSTRUCTOR.get();
|
||||||
return Reflections.PLAYER_CONSTRUCTOR_OLD.get().newInstance(Reflections.GET_SERVER_METHOD
|
return Reflections.PLAYER_CONSTRUCTOR_OLD.get().newInstance(Reflections.GET_SERVER_METHOD
|
||||||
.get().invoke(Bukkit.getServer()), nmsWorld, gameProfile, constructor.newInstance(nmsWorld));
|
.get().invoke(Bukkit.getServer()), nmsWorld, gameProfile, constructor.newInstance(nmsWorld));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getSpawnPacket(Object nmsEntity, boolean isPlayer) throws ReflectiveOperationException {
|
public Object createSpawnPacket(Object nmsEntity, boolean isPlayer) throws ReflectiveOperationException {
|
||||||
return isPlayer ? Reflections.PACKET_PLAY_OUT_NAMED_ENTITY_CONSTRUCTOR.get().newInstance(nmsEntity) : Reflections.PACKET_PLAY_OUT_SPAWN_ENTITY_CONSTRUCTOR.get().newInstance(nmsEntity);
|
return isPlayer ? Reflections.PACKET_PLAY_OUT_NAMED_ENTITY_CONSTRUCTOR.get().newInstance(nmsEntity) : Reflections.PACKET_PLAY_OUT_SPAWN_ENTITY_CONSTRUCTOR.get().newInstance(nmsEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object convertItemStack(int entityId, ItemSlot itemSlot, ItemStack itemStack) throws ReflectiveOperationException {
|
public Object createEntityEquipmentPacket(int entityId, ItemSlot itemSlot, ItemStack itemStack) throws ReflectiveOperationException {
|
||||||
return Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_OLD.get().newInstance(entityId,
|
return Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_OLD.get().newInstance(entityId,
|
||||||
itemSlot.getSlotOld(), Reflections.AS_NMS_COPY_METHOD.get().invoke(Reflections.CRAFT_ITEM_STACK_CLASS, itemStack));
|
itemSlot.getSlotOld(), Reflections.AS_NMS_COPY_METHOD.get().invoke(Reflections.CRAFT_ITEM_STACK_CLASS, itemStack));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getClickType(Object interactPacket) throws ReflectiveOperationException {
|
public Object createMetadataPacket(int entityId, Object nmsEntity) throws ReflectiveOperationException {
|
||||||
return Utils.getValue(interactPacket, "action");
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getMetadataPacket(int entityId, Object nmsEntity) throws ReflectiveOperationException {
|
|
||||||
Object dataWatcher = Reflections.GET_DATA_WATCHER_METHOD.get().invoke(nmsEntity);
|
Object dataWatcher = Reflections.GET_DATA_WATCHER_METHOD.get().invoke(nmsEntity);
|
||||||
try {
|
try {
|
||||||
return Reflections.PACKET_PLAY_OUT_ENTITY_META_DATA_CONSTRUCTOR.get().newInstance(entityId, dataWatcher, true);
|
return Reflections.PACKET_PLAY_OUT_ENTITY_META_DATA_CONSTRUCTOR.get().newInstance(entityId, dataWatcher, true);
|
||||||
|
@ -45,24 +41,24 @@ public class NMSV8 implements NMS {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getHologramSpawnPacket(Object armorStand) throws ReflectiveOperationException {
|
public Object createArmorStandSpawnPacket(Object armorStand) throws ReflectiveOperationException {
|
||||||
return Reflections.PACKET_PLAY_OUT_SPAWN_ENTITY_CONSTRUCTOR.get().newInstance(armorStand);
|
return Reflections.PACKET_PLAY_OUT_SPAWN_ENTITY_CONSTRUCTOR.get().newInstance(armorStand);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImmutableList<Object> getEquipPackets(NPC npc) throws ReflectiveOperationException {
|
public ImmutableList<Object> createEquipmentPacket(NPC npc) throws ReflectiveOperationException {
|
||||||
ImmutableList.Builder<Object> builder = ImmutableList.builder();
|
ImmutableList.Builder<Object> builder = ImmutableList.builder();
|
||||||
for (Map.Entry<ItemSlot, ItemStack> stackEntry : npc.getNpcPojo().getNpcEquip().entrySet()) {
|
for (Map.Entry<ItemSlot, ItemStack> stackEntry : npc.getNpcPojo().getNpcEquip().entrySet()) {
|
||||||
builder.add(Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_OLD.get().newInstance(npc.getEntityID(), stackEntry.getKey().getSlotOld(),
|
builder.add(Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_OLD.get().newInstance(npc.getEntityID(), stackEntry.getKey().getSlotOld(),
|
||||||
convertItemStack(npc.getEntityID(), stackEntry.getKey(), stackEntry.getValue())));
|
createEntityEquipmentPacket(npc.getEntityID(), stackEntry.getKey(), stackEntry.getValue())));
|
||||||
}
|
}
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateGlowPacket(NPC npc, Object packet) throws ReflectiveOperationException {
|
public void updateGlow(NPC npc, Object packet) throws ReflectiveOperationException {
|
||||||
throw new IllegalStateException("Glow color is not supported for 1.8 version.");
|
throw new IllegalStateException("Glow color is not supported for 1.8 version.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean allowGlowColor() {
|
public boolean allowsGlowColor() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,21 +14,21 @@ public class NMSV9 extends NMSV8 {
|
||||||
return 9;
|
return 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object convertItemStack(int entityId, ItemSlot itemSlot, ItemStack itemStack) throws ReflectiveOperationException {
|
public Object createEntityEquipmentPacket(int entityId, ItemSlot itemSlot, ItemStack itemStack) throws ReflectiveOperationException {
|
||||||
return Reflections.AS_NMS_COPY_METHOD.get().invoke(Reflections.CRAFT_ITEM_STACK_CLASS, itemStack);
|
return Reflections.AS_NMS_COPY_METHOD.get().invoke(Reflections.CRAFT_ITEM_STACK_CLASS, itemStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImmutableList<Object> getEquipPackets(NPC npc) throws ReflectiveOperationException {
|
public ImmutableList<Object> createEquipmentPacket(NPC npc) throws ReflectiveOperationException {
|
||||||
ImmutableList.Builder<Object> builder = ImmutableList.builder();
|
ImmutableList.Builder<Object> builder = ImmutableList.builder();
|
||||||
for (Map.Entry<ItemSlot, ItemStack> stackEntry : npc.getNpcPojo().getNpcEquip().entrySet()) {
|
for (Map.Entry<ItemSlot, ItemStack> stackEntry : npc.getNpcPojo().getNpcEquip().entrySet()) {
|
||||||
builder.add(Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_NEWEST_OLD.get().newInstance(npc.getEntityID(),
|
builder.add(Reflections.PACKET_PLAY_OUT_ENTITY_EQUIPMENT_CONSTRUCTOR_NEWEST_OLD.get().newInstance(npc.getEntityID(),
|
||||||
getItemSlot(stackEntry.getKey().getSlot()),
|
getItemSlot(stackEntry.getKey().getSlot()),
|
||||||
convertItemStack(npc.getEntityID(), stackEntry.getKey(), stackEntry.getValue())));
|
createEntityEquipmentPacket(npc.getEntityID(), stackEntry.getKey(), stackEntry.getValue())));
|
||||||
}
|
}
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateGlowPacket(NPC npc, Object packet) throws ReflectiveOperationException {
|
public void updateGlow(NPC npc, Object packet) throws ReflectiveOperationException {
|
||||||
Object enumChatString = Reflections.ENUM_CHAT_TO_STRING_METHOD.get().invoke(npc.getGlowColor());
|
Object enumChatString = Reflections.ENUM_CHAT_TO_STRING_METHOD.get().invoke(npc.getGlowColor());
|
||||||
if (Utils.BUKKIT_VERSION > 12) {
|
if (Utils.BUKKIT_VERSION > 12) {
|
||||||
Utils.setValue(packet, npc.getGlowColor(), Reflections.ENUM_CHAT_CLASS);
|
Utils.setValue(packet, npc.getGlowColor(), Reflections.ENUM_CHAT_CLASS);
|
||||||
|
@ -39,7 +39,7 @@ public class NMSV9 extends NMSV8 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean allowGlowColor() {
|
public boolean allowsGlowColor() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue