Example usage for net.minecraftforge.event LootTableLoadEvent setTable

List of usage examples for net.minecraftforge.event LootTableLoadEvent setTable

Introduction

In this page you can find the example usage for net.minecraftforge.event LootTableLoadEvent setTable.

Prototype

public void setTable(LootTable table) 

Source Link

Usage

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);
            }
        }
    }
}