Update block loottables

This commit is contained in:
DBotThePony 2022-09-06 08:39:56 +07:00
parent aca40e887d
commit 2b3d2e3d75
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 67 additions and 59 deletions

View File

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

View File

@ -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())
}
}

View File

@ -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"))
}