Changes

Line 46: Line 46:     
== The actual Class for Lootables ==
 
== The actual Class for Lootables ==
 +
<syntaxhighlight lang="java">
 +
public abstract class BaseLootTableProvider extends LootTableProvider {
 +
 +
    private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
 +
    private static final Logger LOGGER = LogManager.getLogger();
 +
 +
    protected final Map<Block, LootTable.Builder> lootTables = new HashMap<>();
 +
    private final DataGenerator generator;
 +
 +
    public BaseLootTableProvider(DataGenerator dataGeneratorIn) {
 +
        super(dataGeneratorIn);
 +
        this.generator = dataGeneratorIn;
 +
    }
 +
 +
    protected abstract void addTables();
 +
   
 +
    @Override
 +
    public void run(DirectoryCache cache) {
 +
        addTables();
 +
 +
        Map<ResourceLocation, LootTable> tables = new HashMap<>();
 +
        for (Map.Entry<Block, LootTable.Builder> entry : lootTables.entrySet()) {
 +
            tables.put(entry.getKey().getLootTable(), entry.getValue().setParamSet(LootParameterSets.BLOCK).build());
 +
        }
 +
        writeTables(cache, tables);
 +
    }
 +
 +
    private void writeTables(DirectoryCache cache, Map<ResourceLocation, LootTable> tables) {
 +
        Path outputFolder = this.generator.getOutputFolder();
 +
        tables.forEach((key, lootTable) -> {
 +
            Path path = outputFolder.resolve("data/" + key.getNamespace() + "/loot_tables/" + key.getPath() + ".json");
 +
            try {
 +
                IDataProvider.save(GSON, cache, LootTableManager.serialize(lootTable), path);
 +
            } catch (IOException e) {
 +
                LOGGER.error("Couldn't write loot table {}", path, (Object) e);
 +
 +
            }
 +
        });
 +
    }
 +
 +
    @Override
 +
    public String getName() {
 +
        return "MagicScrolls LootTables";
 +
    }
 +
}
 +
</syntaxhighlight>
 
=== Another class (Optional) ===
 
=== Another class (Optional) ===
 
Create a new class that extends from the Class you created in the Section above and override the abstract function in there you can begin to create your Lootables
 
Create a new class that extends from the Class you created in the Section above and override the abstract function in there you can begin to create your Lootables
25

edits