package com.mcf.davidee.nbtedit; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagByte; import net.minecraft.nbt.NBTTagByteArray; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagDouble; import net.minecraft.nbt.NBTTagEnd; import net.minecraft.nbt.NBTTagFloat; import net.minecraft.nbt.NBTTagInt; import net.minecraft.nbt.NBTTagIntArray; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagLong; import net.minecraft.nbt.NBTTagShort; import net.minecraft.nbt.NBTTagString; import com.google.common.base.Strings; import com.mcf.davidee.nbtedit.nbt.NamedNBT; public class NBTStringHelper { public static final char SECTION_SIGN = '\u00A7'; public static String getNBTName(NamedNBT namedNBT){ String name = namedNBT.getName(); NBTBase obj = namedNBT.getNBT(); String s = toString(obj); return Strings.isNullOrEmpty(name) ? "" + s : name + ": " + s; } public static String getNBTNameSpecial(NamedNBT namedNBT){ String name = namedNBT.getName(); NBTBase obj = namedNBT.getNBT(); String s = toString(obj); return Strings.isNullOrEmpty(name) ? "" + s : name + ": " + s + SECTION_SIGN + 'r'; } public static NBTBase newTag(byte type){ switch (type) { case 0: return new NBTTagEnd(); case 1: return new NBTTagByte((byte) 0); case 2: return new NBTTagShort(); case 3: return new NBTTagInt(0); case 4: return new NBTTagLong(0); case 5: return new NBTTagFloat(0); case 6: return new NBTTagDouble(0); case 7: return new NBTTagByteArray(new byte[0]); case 8: return new NBTTagString(""); case 9: return new NBTTagList(); case 10: return new NBTTagCompound(); case 11: return new NBTTagIntArray(new int[0]); default: return null; } } public static String toString(NBTBase base) { switch(base.getId()) { case 1: return "" + ((NBTTagByte)base).func_150290_f(); case 2: return "" + ((NBTTagShort)base).func_150289_e(); case 3: return "" + ((NBTTagInt)base).func_150287_d(); case 4: return "" + ((NBTTagLong)base).func_150291_c(); case 5: return "" + ((NBTTagFloat)base).func_150288_h(); case 6: return "" + ((NBTTagDouble)base).func_150286_g(); case 7: return base.toString(); case 8: return ((NBTTagString)base).func_150285_a_(); case 9: return "(TagList)"; case 10: return "(TagCompound)"; case 11: return base.toString(); default: return "?"; } } public static String getButtonName(byte id){ switch(id){ case 1 : return "Byte"; case 2: return "Short"; case 3: return "Int"; case 4: return "Long"; case 5: return "Float"; case 6: return "Double"; case 7: return "Byte[]"; case 8: return "String"; case 9: return "List"; case 10: return "Compound"; case 11: return "Int[]"; case 12: return "Edit"; case 13: return "Delete"; case 14: return "Copy"; case 15: return "Cut"; case 16: return "Paste"; default: return "Unknown"; } } }