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