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.items.MatteryItemModelProvider
import ru.dbotthepony.mc.otm.datagen.lang.AddEnglishLanguage import ru.dbotthepony.mc.otm.datagen.lang.AddEnglishLanguage
import ru.dbotthepony.mc.otm.datagen.loot.LootTables 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.models.BlockMatteryModelProvider
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider
import ru.dbotthepony.mc.otm.datagen.recipes.has 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.core.registryName
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
import ru.dbotthepony.mc.otm.datagen.loot.addLootModifiers 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.datagen.recipes.addCraftingTableRecipes
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
@ -119,7 +119,7 @@ object DataGen {
private fun decoratives(list: ColoredDecorativeBlock) { private fun decoratives(list: ColoredDecorativeBlock) {
for (block in list.coloredBlocks) { for (block in list.coloredBlocks) {
decorativeCubeAll(block) decorativeCubeAll(block)
lootTableProvider.simpleBlock(block) lootTableProvider.dropsSelf(block)
} }
for (item in list.coloredItems) { for (item in list.coloredItems) {
@ -130,7 +130,7 @@ object DataGen {
private fun decoratives(list: DecorativeBlock) { private fun decoratives(list: DecorativeBlock) {
for (block in list.blocks) { for (block in list.blocks) {
decorativeCubeAll(block) decorativeCubeAll(block)
lootTableProvider.simpleBlock(block) lootTableProvider.dropsSelf(block)
} }
for (item in list.items) { for (item in list.items) {
@ -535,48 +535,7 @@ object DataGen {
} }
} }
val workerTags = arrayOf( addLootTables(lootTableProvider)
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"))
}
recipeProvider.lambda { _, consumer -> addCraftingTableRecipes(consumer) } 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.Consumer
import java.util.function.Supplier import java.util.function.Supplier
typealias LootBuilderCallback = BiConsumer<ResourceLocation, LootTable.Builder> private typealias LootBuilderCallback = BiConsumer<ResourceLocation, LootTable.Builder>
typealias LootBuilderWorker = Consumer<LootBuilderCallback> private typealias LootBuilderWorker = Consumer<LootBuilderCallback>
typealias LootBuilderWorkerSupplier = Supplier<LootBuilderWorker> private typealias LootBuilderWorkerSupplier = Supplier<LootBuilderWorker>
typealias LootTuple = Pair<LootBuilderWorkerSupplier, LootContextParamSet> private typealias LootTuple = Pair<LootBuilderWorkerSupplier, LootContextParamSet>
fun singleLootPool(f: (LootPool.Builder) -> Unit): LootTable.Builder { fun singleLootPool(f: (LootPool.Builder) -> Unit): LootTable.Builder {
return LootTable.lootTable().withPool(LootPool.lootPool().also(f)) 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)) providers.add(Pair(Supplier {provider}, LootContextParamSets.BLOCK))
} }
fun simpleBlock(block: Block) { fun dropsSelf(block: Block) {
block { block {
it.accept(block.lootTable, singleLootPool { it.accept(block.lootTable, singleLootPool {
it.add(LootItem.lootTableItem(block)) it.add(LootItem.lootTableItem(block))
@ -50,12 +50,12 @@ class LootTables(generator: DataGenerator) : LootTableProvider(generator) {
} }
} }
fun simpleBlocks(vararg blocks: Block) { fun dropsSelf(vararg blocks: Block) {
blocks.forEach(this::simpleBlock) blocks.forEach(this::dropsSelf)
} }
fun simpleBlocks(blocks: List<Block>) { fun dropsSelf(blocks: List<Block>) {
blocks.forEach(this::simpleBlock) blocks.forEach(this::dropsSelf)
} }
fun tile(block: Block, f: (CopyNbtFunction.Builder) -> Unit = {}) { 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) { fun tile(block: Block, vararg tags: TileNbtCopy) {
tile(block) { tile(block, *tags.map { NbtCopy(it.source, "BlockEntityTag.${it.source}", it.strategy) }.toTypedArray())
for ((source, strategy) in tags) {
it.copy(source, "BlockEntityTag.$source", strategy)
}
}
} }
} }

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