public TileEntity(TileEntityType type, Position position, NBTCompound nbt) { this.type = type; this.position = position; this.nbt = nbt; this.nbt.setTag("id", new NBTString(type.getRegistryId())); this.nbt.setTag("x", new NBTInt(position.getX())); this.nbt.setTag("y", new NBTInt(position.getY())); this.nbt.setTag("z", new NBTInt(position.getZ())); }
@Override public NBTCompound remapTag(ProtocolVersion version, String locale, NetworkItemStack itemstack, NBTCompound tag) { tag.setTag(CommonNBT.MODERN_ENCHANTMENTS, filterEnchantList(version, tag.getTagListOfType(CommonNBT.MODERN_ENCHANTMENTS, NBTType.COMPOUND))); tag.setTag(CommonNBT.BOOK_ENCHANTMENTS, filterEnchantList(version, tag.getTagListOfType(CommonNBT.BOOK_ENCHANTMENTS, NBTType.COMPOUND))); return tag; }
public static NBTCompound getOrCreateDisplayTag(NBTCompound rootTag) { NBTCompound display = rootTag.getTagOfType(DISPLAY, NBTType.COMPOUND); if (display == null) { display = new NBTCompound(); rootTag.setTag(DISPLAY, display); } return display; }
@Override public void accept(TileEntity tile) { tile.getNBT().setTag("id", new NBTString(name)); }
@Override public NBTCompound remapTag(ProtocolVersion version, String locale, NetworkItemStack itemstack, NBTCompound tag) { NBTList<NBTCompound> enchTag = tag.getTagListOfType(CommonNBT.LEGACY_ENCHANTMENTS, NBTType.COMPOUND); if (enchTag != null) { tag.removeTag(CommonNBT.LEGACY_ENCHANTMENTS); tag.setTag(CommonNBT.MODERN_ENCHANTMENTS, remapEnchantList(enchTag)); } NBTList<NBTCompound> bookEnch = tag.getTagListOfType(CommonNBT.BOOK_ENCHANTMENTS, NBTType.COMPOUND); if (bookEnch != null) { tag.setTag(CommonNBT.BOOK_ENCHANTMENTS, remapEnchantList(bookEnch)); } return tag; }
@Override public NBTCompound remapTag(ProtocolVersion version, String locale, NetworkItemStack itemstack, NBTCompound tag) { NBTList<NBTCompound> enchTag = tag.getTagListOfType(CommonNBT.MODERN_ENCHANTMENTS, NBTType.COMPOUND); if (enchTag != null) { tag.removeTag(CommonNBT.MODERN_ENCHANTMENTS); tag.setTag(CommonNBT.LEGACY_ENCHANTMENTS, remapEnchantList(enchTag)); } NBTList<NBTCompound> bookEnch = tag.getTagListOfType(CommonNBT.BOOK_ENCHANTMENTS, NBTType.COMPOUND); if (bookEnch != null) { tag.setTag(CommonNBT.BOOK_ENCHANTMENTS, remapEnchantList(bookEnch)); } return tag; }
@Override public TileEntity apply(Position position) { NBTCompound tag = new NBTCompound(); tag.setTag("color", new NBTInt(color)); return new TileEntity(TileEntityType.BED, position, tag); }
protected void register(List<Entry<Consumer<NBTCompound>>> list, Material skull, int skulltype) { for (BlockData blockdata : MaterialAPI.getBlockDataList(skull)) { byte rotation = getLegacyData(blockdata); list.add(new Entry<>(MaterialAPI.getBlockDataNetworkId(blockdata), nbt -> { nbt.setTag("SkullType", new NBTByte((byte) skulltype)); nbt.setTag("Rot", new NBTByte(rotation)); })); } }
protected void register(List<Entry<Consumer<NBTCompound>>> list, Material banner, int color) { for (BlockData blockdata : MaterialAPI.getBlockDataList(banner)) { list.add(new ArrayMap.Entry<>(MaterialAPI.getBlockDataNetworkId(blockdata), nbt -> nbt.setTag("Base", new NBTInt(color)))); } } @Override
@Override public NBTCompound remapTag(ProtocolVersion version, String locale, NetworkItemStack itemstack, NBTCompound tag) { if (tag.getTagListOfType("pages", NBTType.STRING) == null) { NBTList<NBTString> pages = new NBTList<>(NBTType.STRING); pages.addTag(new NBTString("")); tag.setTag("pages", pages); } return tag; }
@Override public NetworkItemStack remap(ProtocolVersion version, String locale, NetworkItemStack itemstack) { NBTCompound tag = itemstack.getNBT(); if (tag == null) { tag = new NBTCompound(); itemstack.setNBT(tag); } tag.setTag("Damage", new NBTInt(itemstack.getLegacyData())); return itemstack; }
@Override public NetworkItemStack remap(ProtocolVersion version, String locale, NetworkItemStack itemstack) { itemstack.setTypeId(ItemMaterialLookup.getRuntimeId(Material.PLAYER_HEAD)); NBTCompound wrapper = new NBTCompound(); wrapper.setTag("SkullOwner", createTag()); itemstack.setNBT(wrapper); return itemstack; }
@Override public NetworkItemStack remap(ProtocolVersion version, String locale, NetworkItemStack itemstack) { NBTCompound tag = itemstack.getNBT(); if (tag == null) { tag = new NBTCompound(); itemstack.setNBT(tag); } tag.setTag("map", new NBTInt(itemstack.getLegacyData())); return itemstack; }
@Override public NBTCompound remapTag(ProtocolVersion version, String locale, NetworkItemStack itemstack, NBTCompound tag) { NBTCompound displayTag = tag.getTagOfType(CommonNBT.DISPLAY, NBTType.COMPOUND); if (displayTag != null) { NBTString displayNameTag = displayTag.getTagOfType(CommonNBT.DISPLAY_NAME, NBTType.STRING); if (displayNameTag != null) { displayTag.setTag(CommonNBT.DISPLAY_NAME, new NBTString(ChatAPI.fromJSON(displayNameTag.getValue()).toLegacyText(locale))); } } return tag; }
public static void remap(NBTCompound tag, String tagname, String newtagname) { NBTCompound gameprofileTag = tag.getTagOfType(tagname, NBTType.COMPOUND); if (gameprofileTag != null) { GameProfile gameprofile = GameProfileSerializer.deserialize(gameprofileTag); if (gameprofile.getName() != null) { tag.setTag(newtagname, new NBTString(gameprofile.getName())); } else { tag.removeTag(tagname); } } }
@Override public NBTCompound remapTag(ProtocolVersion version, String locale, NetworkItemStack itemstack, NBTCompound tag) { NBTCompound displayTag = tag.getTagOfType(CommonNBT.DISPLAY, NBTType.COMPOUND); if (displayTag != null) { NBTString displayNameTag = displayTag.getTagOfType(CommonNBT.DISPLAY_NAME, NBTType.STRING); if (displayNameTag != null) { displayTag.setTag(CommonNBT.DISPLAY_NAME, new NBTString(ChatAPI.toJSON(new TextComponent(displayNameTag.getValue())))); } } return tag; }
@Override public NBTCompound remapTag(ProtocolVersion version, String locale, NetworkItemStack itemstack, NBTCompound tag) { NBTList<NBTString> pages = tag.getTagListOfType("pages", NBTType.STRING); if (pages != null) { NBTList<NBTString> newPages = new NBTList<>(NBTType.STRING); for (NBTString page : pages.getTags()) { newPages.addTag(new NBTString(ChatAPI.fromJSON(page.getValue()).toLegacyText(locale))); } tag.setTag("pages", newPages); } return tag; }
protected NBTList<NBTCompound> remapEnchantList(NBTList<NBTCompound> oldList) { NBTList<NBTCompound> newList = new NBTList<>(NBTType.COMPOUND); for (NBTCompound enchData : oldList.getTags()) { Enchantment ench = Enchantment.getByKey(NamespacedKeyUtils.fromString(NBTString.getValueOrNull(enchData.getTagOfType("id", NBTType.STRING)))); if (ench != null) { enchData.setTag("id", new NBTShort(LegacyEnchantmentId.getId(ench))); newList.addTag(enchData); } } return newList; }
protected NBTList<NBTCompound> remapEnchantList(NBTList<NBTCompound> oldList) { NBTList<NBTCompound> newList = new NBTList<>(NBTType.COMPOUND); for (NBTCompound enchData : oldList.getTags()) { NBTNumber enchId = enchData.getNumberTag("id"); if (enchId != null) { Enchantment ench = LegacyEnchantmentId.getById(enchId.getAsInt()); if (ench != null) { enchData.setTag("id", new NBTString(ench.getKey().toString())); newList.addTag(enchData); } } } return newList; }
@Override public NetworkItemStack remap(ProtocolVersion version, String locale, NetworkItemStack itemstack) { int data = itemstack.getLegacyData(); String name = LegacyPotionId.fromLegacyId(data); if (!StringUtils.isEmpty(name)) { NBTCompound tag = itemstack.getNBT(); if (tag == null) { tag = new NBTCompound(); itemstack.setNBT(tag); } tag.setTag("Potion", new NBTString(name)); itemstack.setTypeId(ItemMaterialLookup.getRuntimeId(LegacyPotionId.isThrowable(data) ? Material.SPLASH_POTION : Material.POTION)); } return itemstack; }