| package li.cil.occ.util; | |
| import java.util.Map; | |
| import net.minecraft.inventory.IInventory; | |
| import net.minecraft.item.ItemStack; | |
| import com.google.common.collect.Maps; | |
| /* | |
| * Partially copied from: | |
| * https://github.com/OpenMods/OpenPeripheral | |
| * | |
| */ | |
| public class InventoryDescriptionUtils { | |
| public static String getNameForItemStack(ItemStack is) { | |
| String name = "Unknown"; | |
| try { | |
| name = is.getDisplayName(); | |
| } catch (Exception e) { | |
| try { | |
| name = is.getUnlocalizedName(); | |
| } catch (Exception e2) { | |
| } | |
| } | |
| return name; | |
| } | |
| public static String getRawNameForStack(ItemStack is) { | |
| String rawName = "unknown"; | |
| try { | |
| rawName = is.getUnlocalizedName().toLowerCase(); | |
| } catch (Exception e) { | |
| } | |
| try { | |
| if (rawName.length() - rawName.replaceAll("\\.", "").length() == 0) { | |
| String packageName = is.getItem().getClass().getName() | |
| .toLowerCase(); | |
| String[] packageLevels = packageName.split("\\."); | |
| if (!rawName.startsWith(packageLevels[0]) | |
| && packageLevels.length > 1) { | |
| rawName = packageLevels[0] + "." + rawName; | |
| } | |
| } | |
| } catch (Exception e) { | |
| } | |
| return rawName.trim(); | |
| } | |
| public static Map<Integer, Map<String, Object>> invToMap( | |
| IInventory inventory) { | |
| Map<Integer, Map<String, Object>> map = Maps.newHashMap(); | |
| for (int i = 0; i < inventory.getSizeInventory(); i++) { | |
| map.put((i + 1), itemstackToMap(inventory.getStackInSlot(i))); | |
| } | |
| return map; | |
| } | |
| public static Map<String, Object> itemstackToMap(ItemStack itemstack) { | |
| if (itemstack == null) { | |
| return null; | |
| } else { | |
| Map<String, Object> map = Maps.newHashMap(); | |
| map.put("id", itemstack.itemID); | |
| map.put("name", getNameForItemStack(itemstack)); | |
| map.put("rawName", getRawNameForStack(itemstack)); | |
| map.put("qty", itemstack.stackSize); | |
| map.put("dmg", itemstack.getItemDamage()); | |
| map.put("maxdmg", itemstack.getMaxDamage()); | |
| map.put("maxSize", itemstack.getMaxStackSize()); | |
| return map; | |
| } | |
| } | |
| } |