diff --git a/src/main/java/net/aufdemrand/denizen/utilities/packets/intercept/DenizenPacketListener.java b/src/main/java/net/aufdemrand/denizen/utilities/packets/intercept/DenizenPacketListener.java index 4b841495e9..5842db7a32 100644 --- a/src/main/java/net/aufdemrand/denizen/utilities/packets/intercept/DenizenPacketListener.java +++ b/src/main/java/net/aufdemrand/denizen/utilities/packets/intercept/DenizenPacketListener.java @@ -15,6 +15,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import java.lang.reflect.Field; +import java.util.List; import java.util.Map; public class DenizenPacketListener extends AbstractListenerPlayIn { @@ -36,13 +37,19 @@ public void a(PacketPlayInSetCreativeSlot packet) { if (tag.hasKey("Denizen Item Script")) { NBTTagCompound display = tag.getCompound("display"); NBTTagList nbtLore = display.hasKey("Lore") ? (NBTTagList) display.get("Lore") : new NBTTagList(); - if (nbtLore.size() > 0) { - nbtLore.a(0, new NBTTagString(tag.getString("Denizen Item Script"))); + try { + if (nbtLore.size() == 0) { + nbtLore.add(new NBTTagString(tag.getString("Denizen Item Script"))); + } + else { + List list = (List) nbttaglist_list.get(nbtLore); + list.add(0, new NBTTagString(tag.getString("Denizen Item Script"))); + } + display.set("Lore", nbtLore); } - else { - nbtLore.add(new NBTTagString(tag.getString("Denizen Item Script"))); + catch (IllegalAccessException e) { + dB.echoError(e); } - display.set("Lore", nbtLore); tag.set("display", display); itemStack.setTag(tag); } @@ -87,10 +94,13 @@ public void onPlayerJoin(PlayerJoinEvent event) { /////////// private static final Field resource_pack_hash, resource_pack_status; + private static final Field nbttaglist_list; static { Map fields = PacketHelper.registerFields(PacketPlayInResourcePackStatus.class); resource_pack_hash = fields.get("a"); resource_pack_status = fields.get("b"); + fields = PacketHelper.registerFields(NBTTagList.class); + nbttaglist_list = fields.get("list"); } }