package tonius.neiintegration.mods.mcforge.dumpers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import net.minecraft.item.Item;
import net.minecraft.util.WeightedRandomChestContent;
import net.minecraftforge.common.ChestGenHooks;
import codechicken.nei.config.DataDumper;
import cpw.mods.fml.relauncher.ReflectionHelper;
public class ChestLootDumper extends DataDumper {
public ChestLootDumper() {
super("tools.dump.neiintegration.chestloot");
}
@Override
public String[] header() {
return new String[] { "Chest Type", "ItemStack", "Item Display Name", "Item ID", "Weight" };
}
@Override
public Iterable<String[]> dump(int mode) {
List<String[]> list = new LinkedList<String[]>();
Map<String, ChestGenHooks> lootTables = ReflectionHelper.getPrivateValue(ChestGenHooks.class, null, "chestInfo");
List<String> names = new ArrayList<String>();
names.addAll(lootTables.keySet());
Collections.sort(names);
for (String name : names) {
List<WeightedRandomChestContent> contents = ReflectionHelper.getPrivateValue(ChestGenHooks.class, lootTables.get(name), "contents");
for (WeightedRandomChestContent w : contents) {
String displayName;
try {
displayName = w.theItemId.getDisplayName();
} catch (Exception ex) {
displayName = "-";
}
list.add(new String[] { name, w.theItemId.toString(), displayName, Item.itemRegistry.getNameForObject(w.theItemId.getItem()), String.valueOf(w.itemWeight) });
}
}
return list;
}
@Override
public int modeCount() {
return 1;
}
}