Update block loottables
This commit is contained in:
parent
aca40e887d
commit
2b3d2e3d75
@ -25,7 +25,6 @@ import ru.dbotthepony.mc.otm.datagen.loot.LootModifiers
|
||||
import ru.dbotthepony.mc.otm.datagen.items.MatteryItemModelProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.AddEnglishLanguage
|
||||
import ru.dbotthepony.mc.otm.datagen.loot.LootTables
|
||||
import ru.dbotthepony.mc.otm.datagen.loot.TileNbtCopy
|
||||
import ru.dbotthepony.mc.otm.datagen.models.BlockMatteryModelProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.recipes.has
|
||||
@ -33,6 +32,7 @@ import ru.dbotthepony.mc.otm.registry.*
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.loot.addLootModifiers
|
||||
import ru.dbotthepony.mc.otm.datagen.loot.addLootTables
|
||||
import ru.dbotthepony.mc.otm.datagen.recipes.addCraftingTableRecipes
|
||||
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
||||
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
|
||||
@ -119,7 +119,7 @@ object DataGen {
|
||||
private fun decoratives(list: ColoredDecorativeBlock) {
|
||||
for (block in list.coloredBlocks) {
|
||||
decorativeCubeAll(block)
|
||||
lootTableProvider.simpleBlock(block)
|
||||
lootTableProvider.dropsSelf(block)
|
||||
}
|
||||
|
||||
for (item in list.coloredItems) {
|
||||
@ -130,7 +130,7 @@ object DataGen {
|
||||
private fun decoratives(list: DecorativeBlock) {
|
||||
for (block in list.blocks) {
|
||||
decorativeCubeAll(block)
|
||||
lootTableProvider.simpleBlock(block)
|
||||
lootTableProvider.dropsSelf(block)
|
||||
}
|
||||
|
||||
for (item in list.items) {
|
||||
@ -535,48 +535,7 @@ object DataGen {
|
||||
}
|
||||
}
|
||||
|
||||
val workerTags = arrayOf(
|
||||
TileNbtCopy("work_ticks"),
|
||||
TileNbtCopy("current_job"),
|
||||
TileNbtCopy("battery_container"),
|
||||
TileNbtCopy("energy"),
|
||||
)
|
||||
|
||||
with(lootTableProvider) {
|
||||
simpleBlocks(MBlocks.CRATE_LIST)
|
||||
|
||||
MRegistry.CARGO_CRATES.blocks.forEach(this::simpleBlock)
|
||||
MRegistry.INDUSTRIAL_GLASS.blocks.forEach(this::simpleBlock)
|
||||
MRegistry.INDUSTRIAL_GLASS_PANE.blocks.forEach(this::simpleBlock)
|
||||
|
||||
simpleBlock(MBlocks.CARBON_FIBRE_BLOCK)
|
||||
simpleBlock(MBlocks.TRITANIUM_RAW_BLOCK)
|
||||
simpleBlock(MBlocks.TRITANIUM_STRIPED_BLOCK)
|
||||
simpleBlock(MBlocks.MATTER_CABLE)
|
||||
simpleBlock(MBlocks.GRAVITATION_STABILIZER)
|
||||
|
||||
tile(MBlocks.ENERGY_COUNTER, TileNbtCopy("passed"), TileNbtCopy("history"), TileNbtCopy("history_tick"))
|
||||
tile(MBlocks.CHEMICAL_GENERATOR, TileNbtCopy("energy"), TileNbtCopy("container"), TileNbtCopy("working_ticks"), TileNbtCopy("working_ticks_total"))
|
||||
|
||||
tile(MBlocks.ANDROID_STATION, TileNbtCopy("energy"), TileNbtCopy("battery_container"))
|
||||
tile(MBlocks.BATTERY_BANK, TileNbtCopy("container"))
|
||||
tile(MBlocks.DRIVE_VIEWER, TileNbtCopy("energy"), TileNbtCopy("container"), TileNbtCopy("battery_container"))
|
||||
|
||||
tile(MBlocks.STORAGE_BUS, TileNbtCopy("energy"), TileNbtCopy("battery_container"))
|
||||
tile(MBlocks.STORAGE_IMPORTER, TileNbtCopy("energy"), TileNbtCopy("battery_container"))
|
||||
tile(MBlocks.STORAGE_POWER_SUPPLIER, TileNbtCopy("energy"), TileNbtCopy("battery_container"), TileNbtCopy("power_supplied"))
|
||||
|
||||
tile(MBlocks.MATTER_DECOMPOSER, TileNbtCopy("container"), TileNbtCopy("matter"), *workerTags)
|
||||
tile(MBlocks.MATTER_REPLICATOR, TileNbtCopy("container"), TileNbtCopy("matter"), *workerTags)
|
||||
tile(MBlocks.MATTER_RECYCLER, TileNbtCopy("container"), TileNbtCopy("matter"), *workerTags)
|
||||
tile(MBlocks.MATTER_SCANNER, TileNbtCopy("container"), *workerTags)
|
||||
tile(MBlocks.PLATE_PRESS, TileNbtCopy("container"), *workerTags)
|
||||
|
||||
tile(MBlocks.MATTER_PANEL, TileNbtCopy("tasks"))
|
||||
tile(MBlocks.PATTERN_STORAGE, TileNbtCopy("patterns"))
|
||||
tile(MBlocks.MATTER_CAPACITOR_BANK, TileNbtCopy("container"))
|
||||
tile(MBlocks.MATTER_BOTTLER, TileNbtCopy("energy"), TileNbtCopy("battery_container"), TileNbtCopy("work_slots"), TileNbtCopy("work_flow"), TileNbtCopy("matter"))
|
||||
}
|
||||
addLootTables(lootTableProvider)
|
||||
|
||||
recipeProvider.lambda { _, consumer -> addCraftingTableRecipes(consumer) }
|
||||
|
||||
|
@ -17,10 +17,10 @@ import java.util.function.BiConsumer
|
||||
import java.util.function.Consumer
|
||||
import java.util.function.Supplier
|
||||
|
||||
typealias LootBuilderCallback = BiConsumer<ResourceLocation, LootTable.Builder>
|
||||
typealias LootBuilderWorker = Consumer<LootBuilderCallback>
|
||||
typealias LootBuilderWorkerSupplier = Supplier<LootBuilderWorker>
|
||||
typealias LootTuple = Pair<LootBuilderWorkerSupplier, LootContextParamSet>
|
||||
private typealias LootBuilderCallback = BiConsumer<ResourceLocation, LootTable.Builder>
|
||||
private typealias LootBuilderWorker = Consumer<LootBuilderCallback>
|
||||
private typealias LootBuilderWorkerSupplier = Supplier<LootBuilderWorker>
|
||||
private typealias LootTuple = Pair<LootBuilderWorkerSupplier, LootContextParamSet>
|
||||
|
||||
fun singleLootPool(f: (LootPool.Builder) -> Unit): LootTable.Builder {
|
||||
return LootTable.lootTable().withPool(LootPool.lootPool().also(f))
|
||||
@ -42,7 +42,7 @@ class LootTables(generator: DataGenerator) : LootTableProvider(generator) {
|
||||
providers.add(Pair(Supplier {provider}, LootContextParamSets.BLOCK))
|
||||
}
|
||||
|
||||
fun simpleBlock(block: Block) {
|
||||
fun dropsSelf(block: Block) {
|
||||
block {
|
||||
it.accept(block.lootTable, singleLootPool {
|
||||
it.add(LootItem.lootTableItem(block))
|
||||
@ -50,12 +50,12 @@ class LootTables(generator: DataGenerator) : LootTableProvider(generator) {
|
||||
}
|
||||
}
|
||||
|
||||
fun simpleBlocks(vararg blocks: Block) {
|
||||
blocks.forEach(this::simpleBlock)
|
||||
fun dropsSelf(vararg blocks: Block) {
|
||||
blocks.forEach(this::dropsSelf)
|
||||
}
|
||||
|
||||
fun simpleBlocks(blocks: List<Block>) {
|
||||
blocks.forEach(this::simpleBlock)
|
||||
fun dropsSelf(blocks: List<Block>) {
|
||||
blocks.forEach(this::dropsSelf)
|
||||
}
|
||||
|
||||
fun tile(block: Block, f: (CopyNbtFunction.Builder) -> Unit = {}) {
|
||||
@ -80,10 +80,6 @@ class LootTables(generator: DataGenerator) : LootTableProvider(generator) {
|
||||
}
|
||||
|
||||
fun tile(block: Block, vararg tags: TileNbtCopy) {
|
||||
tile(block) {
|
||||
for ((source, strategy) in tags) {
|
||||
it.copy(source, "BlockEntityTag.$source", strategy)
|
||||
}
|
||||
}
|
||||
tile(block, *tags.map { NbtCopy(it.source, "BlockEntityTag.${it.source}", it.strategy) }.toTypedArray())
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,53 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
private val workerTags = arrayOf(
|
||||
TileNbtCopy("work_ticks"),
|
||||
TileNbtCopy("current_job"),
|
||||
TileNbtCopy("battery_container"),
|
||||
TileNbtCopy("energy"),
|
||||
)
|
||||
|
||||
fun addLootTables(lootTables: LootTables) {
|
||||
lootTables.dropsSelf(MBlocks.CRATE_LIST)
|
||||
|
||||
lootTables.dropsSelf(MRegistry.CARGO_CRATES.blocks)
|
||||
lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS.blocks)
|
||||
lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS_PANE.blocks)
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_BLOCK.blocks)
|
||||
lootTables.dropsSelf(MRegistry.VENT.blocks)
|
||||
lootTables.dropsSelf(MRegistry.VENT_ALTERNATIVE.blocks)
|
||||
lootTables.dropsSelf(MRegistry.FLOOR_TILES.coloredBlocks)
|
||||
lootTables.dropsSelf(MRegistry.UNREFINED_FLOOR_TILES.coloredBlocks)
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_BLOCK.blocks)
|
||||
|
||||
lootTables.dropsSelf(MBlocks.CARBON_FIBRE_BLOCK)
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_RAW_BLOCK)
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_STRIPED_BLOCK)
|
||||
lootTables.dropsSelf(MBlocks.MATTER_CABLE)
|
||||
lootTables.dropsSelf(MBlocks.GRAVITATION_STABILIZER)
|
||||
|
||||
lootTables.tile(MBlocks.ENERGY_COUNTER, TileNbtCopy("passed"), TileNbtCopy("history"), TileNbtCopy("history_tick"))
|
||||
lootTables.tile(MBlocks.CHEMICAL_GENERATOR, TileNbtCopy("energy"), TileNbtCopy("container"), TileNbtCopy("working_ticks"), TileNbtCopy("working_ticks_total"))
|
||||
|
||||
lootTables.tile(MBlocks.ANDROID_STATION, TileNbtCopy("energy"), TileNbtCopy("battery_container"))
|
||||
lootTables.tile(MBlocks.BATTERY_BANK, TileNbtCopy("container"))
|
||||
lootTables.tile(MBlocks.DRIVE_VIEWER, TileNbtCopy("energy"), TileNbtCopy("container"), TileNbtCopy("battery_container"))
|
||||
|
||||
lootTables.tile(MBlocks.STORAGE_BUS, TileNbtCopy("energy"), TileNbtCopy("battery_container"))
|
||||
lootTables.tile(MBlocks.STORAGE_IMPORTER, TileNbtCopy("energy"), TileNbtCopy("battery_container"))
|
||||
lootTables.tile(MBlocks.STORAGE_POWER_SUPPLIER, TileNbtCopy("energy"), TileNbtCopy("battery_container"), TileNbtCopy("power_supplied"))
|
||||
|
||||
lootTables.tile(MBlocks.MATTER_DECOMPOSER, TileNbtCopy("container"), TileNbtCopy("matter"), *workerTags)
|
||||
lootTables.tile(MBlocks.MATTER_REPLICATOR, TileNbtCopy("container"), TileNbtCopy("matter"), *workerTags)
|
||||
lootTables.tile(MBlocks.MATTER_RECYCLER, TileNbtCopy("container"), TileNbtCopy("matter"), *workerTags)
|
||||
lootTables.tile(MBlocks.MATTER_SCANNER, TileNbtCopy("container"), *workerTags)
|
||||
lootTables.tile(MBlocks.PLATE_PRESS, TileNbtCopy("container"), *workerTags)
|
||||
|
||||
lootTables.tile(MBlocks.MATTER_PANEL, TileNbtCopy("tasks"))
|
||||
lootTables.tile(MBlocks.PATTERN_STORAGE, TileNbtCopy("patterns"))
|
||||
lootTables.tile(MBlocks.MATTER_CAPACITOR_BANK, TileNbtCopy("container"))
|
||||
lootTables.tile(MBlocks.MATTER_BOTTLER, TileNbtCopy("energy"), TileNbtCopy("battery_container"), TileNbtCopy("work_slots"), TileNbtCopy("work_flow"), TileNbtCopy("matter"))
|
||||
}
|
Loading…
Reference in New Issue
Block a user