package jk_5.nailed.server.utils; import jk_5.nailed.api.item.ItemStack; import jk_5.nailed.api.item.Material; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; import java.util.List; import java.util.Map; import java.util.Set; public class ItemStackConverter { public static ItemStack toNailed(net.minecraft.item.ItemStack is){ if(is == null){ return null; } ItemStack ret = new ItemStack(Material.getMaterial(Item.itemRegistry.getIDForObject(is.getItem())), is.stackSize, (short) is.getMetadata()); NBTTagCompound tag = is.getTagCompound(); if(tag != null){ //noinspection unchecked for (String t : ((Set<String>) tag.getKeySet())) { if(tag.getTag(t) instanceof NBTTagString){ ret.setTag(t, ((NBTTagString) tag.getTag(t)).getString()); } } if(tag.hasKey("display")){ NBTTagCompound disp = tag.getCompoundTag("display"); if(disp.hasKey("Name")){ ret.setDisplayName(disp.getString("Name")); } if(disp.hasKey("Lore")){ NBTTagList list = disp.getTagList("Lore", 8); for(int i = 0; i < list.tagCount(); i++){ ret.addLore(list.getStringTagAt(i)); } } } } return ret; } public static net.minecraft.item.ItemStack toVanilla(ItemStack is){ if(is == null){ return null; } net.minecraft.item.ItemStack ret = new net.minecraft.item.ItemStack(((Item) Item.itemRegistry.getObjectById(is.getMaterial().getLegacyId())), is.getAmount(), is.getDamage()); if(is.getDisplayName() != null){ NBTUtils.setDisplayName(ret, is.getDisplayName()); } List<String> lore = is.getLore(); NBTUtils.addLore(ret, lore.toArray(new String[lore.size()])); NBTTagCompound nbt = NBTUtils.getItemNBT(ret); for (Map.Entry<String, String> entry : is.getTags().entrySet()) { nbt.setString(entry.getKey(), entry.getValue()); } return ret; } }