package de.yogularm.minecraft.itemfinder.region; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; public class ItemNames { private static Map<Integer, String> itemNames; private static Map<String, Integer> ordinalsOfIDs; private static ItemNameProvider nameProvider; static { try { itemNames = new HashMap<>(); try (InputStream stream = ItemNames.class .getResourceAsStream("items.tsv")) { BufferedReader reader = new BufferedReader( new InputStreamReader(stream)); while (true) { String line = reader.readLine(); if (line == null || line.equals("")) break; String parts[] = line.split("\\t"); int itemID = Integer.parseInt(parts[0]); int damageValue = Integer.parseInt(parts[1]); String name = parts[2]; itemNames.put(getKey(itemID, damageValue), name); } } ordinalsOfIDs = new HashMap<>(); try (InputStream stream = ItemNames.class .getResourceAsStream("item-ids.tsv")) { BufferedReader reader = new BufferedReader( new InputStreamReader(stream)); while (true) { String line = reader.readLine(); if (line == null || line.equals("")) break; String parts[] = line.split("\\t"); int ordinal = Integer.parseInt(parts[0]); String id = parts[1]; ordinalsOfIDs.put(id, ordinal); } } } catch (IOException e) { e.printStackTrace(); } nameProvider = new ItemNameProvider() { @Override public String getItemName(int itemID, int damageValue) { int key = getKey(itemID, damageValue); if (itemNames.containsKey(key)) return itemNames.get(key); key = getKey(itemID, 0); if (itemNames.containsKey(key)) return itemNames.get(key); return "Item " + itemID; } @Override public boolean hasNameFor(int itemID) { return itemNames.containsKey(getKey(itemID, 0)); } }; } public static ItemNameProvider getNameProvider() { return nameProvider; } public static Integer getOrdinalFromID(String id) { return ordinalsOfIDs.get(id); } private static int getKey(int itemID, int damageValue) { return itemID * 0x10000 + damageValue; } }