List of usage examples for net.minecraftforge.event LootTableLoadEvent setTable
public void setTable(LootTable table)
From source file:cyano.alt.ALTEventHandler.java
License:Open Source License
@SubscribeEvent(priority = EventPriority.NORMAL) public void onLootLoad(LootTableLoadEvent event) { if (event.getName().getResourceDomain().equals("minecraft") == false) return; // loot table from another mod (too fancy for ALT) String categoryAndEntry = event.getName().getResourcePath(); // e.g. "chests/abandoned_mineshaft" if (categoryAndEntry.contains("/") == false) return; // not valid // category is "chests" or "entities" String category = categoryAndEntry.substring(0, categoryAndEntry.indexOf('/')); // entry is the name of the loot table (e.g. "abandoned_mineshaft") String entry = categoryAndEntry.substring(categoryAndEntry.indexOf('/') + 1, categoryAndEntry.length()); final Map<String, Map<String, List<LootPool>>> additional_loot = AdditionalLootTables .getAdditionalLootTables();// ww w . ja v a 2s. co m if (additional_loot.containsKey(category) && additional_loot.get(category).containsKey(entry)) { List<LootPool> pools = additional_loot.get(category).get(entry); if (pools == null || pools.isEmpty()) return; // nothing to add if (event.getTable() == null) { // table was removed by another mod FMLLog.info("%s: creating new loot table %s", MODID, event.getName()); event.setTable(new LootTable(pools.toArray(new LootPool[pools.size()]))); } else { // table exists, add pools to it FMLLog.info("%s: adding more loot to loot table %s", MODID, event.getName()); for (LootPool pool : pools) { event.getTable().addPool(pool); } } } }