From d26660c917472a0bda8741c41561ef2424697841 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 16 Oct 2022 23:54:14 +0700 Subject: [PATCH] yippie --- .../mc/otm/datagen/loot/LootTables.kt | 23 +++++-- .../mc/otm/datagen/loot/LootTablesData.kt | 64 +++++++++---------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt index dc7fb94b7..157ee486e 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt @@ -22,6 +22,7 @@ import net.minecraft.world.level.storage.loot.ValidationContext import net.minecraft.world.level.storage.loot.entries.LootItem import net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer import net.minecraft.world.level.storage.loot.functions.CopyNbtFunction +import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets @@ -54,18 +55,18 @@ fun LootPool.Builder.setRolls(count: Float): LootPool.Builder = setRolls(Constan fun LootPool.Builder.setRolls(min: Int, max: Int): LootPool.Builder = setRolls(UniformGenerator.between(min.toFloat(), max.toFloat())) fun LootPool.Builder.setRolls(min: Float, max: Float): LootPool.Builder = setRolls(UniformGenerator.between(min, max)) -fun > T.setCount(count: Int): T { - apply(SetItemCountFunction.setCount(ConstantValue.exactly(count.toFloat()))) +fun > T.setCount(count: Int, configurator: LootItemConditionalFunction.Builder<*>.() -> Unit = {}): T { + apply(SetItemCountFunction.setCount(ConstantValue.exactly(count.toFloat())).also(configurator)) return this } -fun > T.setCount(minimal: Int, maximal: Int): T { - apply(SetItemCountFunction.setCount(UniformGenerator.between(minimal.toFloat(), maximal.toFloat()))) +fun > T.setCount(minimal: Int, maximal: Int, configurator: LootItemConditionalFunction.Builder<*>.() -> Unit = {}): T { + apply(SetItemCountFunction.setCount(UniformGenerator.between(minimal.toFloat(), maximal.toFloat())).also(configurator)) return this } -fun > T.setCount(minimal: Float, maximal: Float): T { - apply(SetItemCountFunction.setCount(UniformGenerator.between(minimal.toFloat(), maximal.toFloat()))) +fun > T.setCount(minimal: Float, maximal: Float, configurator: LootItemConditionalFunction.Builder<*>.() -> Unit = {}): T { + apply(SetItemCountFunction.setCount(UniformGenerator.between(minimal, maximal)).also(configurator)) return this } @@ -74,11 +75,21 @@ fun > T.condition(condition: LootItemC return this } +fun > T.condition(condition: LootItemCondition.Builder): T { + `when`(condition) + return this +} + inline fun > T.blockStateCondition(block: Block, configurator: StatePropertiesPredicate.Builder.() -> Unit): T { condition(LootItemBlockStatePropertyCondition.hasBlockStateProperties(block).setProperties(StatePropertiesPredicate.Builder.properties().also(configurator))) return this } +inline fun > T.blockStateCondition(block: Block, configurator: StatePropertiesPredicate.Builder.() -> Unit): T { + condition(LootItemBlockStatePropertyCondition.hasBlockStateProperties(block).setProperties(StatePropertiesPredicate.Builder.properties().also(configurator))) + return this +} + operator fun StatePropertiesPredicate.Builder.set(property: Property<*>, value: String): StatePropertiesPredicate.Builder = hasProperty(property, value) operator fun StatePropertiesPredicate.Builder.set(property: Property, value: Int): StatePropertiesPredicate.Builder = hasProperty(property, value) operator fun StatePropertiesPredicate.Builder.set(property: Property, value: Boolean): StatePropertiesPredicate.Builder = hasProperty(property, value) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt index caedabcc7..651c175d4 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt @@ -85,41 +85,41 @@ fun addLootTables(lootTables: LootTables) { } lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLocation("tritanium_block3")) { - lootPool { add(LootItem.lootTableItem(Items.WHITE_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.ORANGE_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.MAGENTA_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.LIGHT_BLUE_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.YELLOW_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.LIME_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.PINK_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.GRAY_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.LIGHT_GRAY_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.CYAN_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.PURPLE_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.BLUE_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.BROWN_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.GREEN_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.RED_DYE).setCount(8)) } - lootPool { add(LootItem.lootTableItem(Items.BLACK_DYE).setCount(8)) } + lootPool { item(Items.WHITE_DYE) { setCount(8) } } + lootPool { item(Items.ORANGE_DYE) { setCount(8) } } + lootPool { item(Items.MAGENTA_DYE) { setCount(8) } } + lootPool { item(Items.LIGHT_BLUE_DYE) { setCount(8) } } + lootPool { item(Items.YELLOW_DYE) { setCount(8) } } + lootPool { item(Items.LIME_DYE) { setCount(8) } } + lootPool { item(Items.PINK_DYE) { setCount(8) } } + lootPool { item(Items.GRAY_DYE) { setCount(8) } } + lootPool { item(Items.LIGHT_GRAY_DYE) { setCount(8) } } + lootPool { item(Items.CYAN_DYE) { setCount(8) } } + lootPool { item(Items.PURPLE_DYE) { setCount(8) } } + lootPool { item(Items.BLUE_DYE) { setCount(8) } } + lootPool { item(Items.BROWN_DYE) { setCount(8) } } + lootPool { item(Items.GREEN_DYE) { setCount(8) } } + lootPool { item(Items.RED_DYE) { setCount(8) } } + lootPool { item(Items.BLACK_DYE) { setCount(8) } } } lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLocation("tritanium_block4")) { - lootPool { add(LootItem.lootTableItem(Items.WHITE_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.ORANGE_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.MAGENTA_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.LIGHT_BLUE_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.YELLOW_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.LIME_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.PINK_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.GRAY_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.LIGHT_GRAY_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.CYAN_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.PURPLE_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.BLUE_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.BROWN_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.GREEN_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.RED_DYE).setCount(64)) } - lootPool { add(LootItem.lootTableItem(Items.BLACK_DYE).setCount(64)) } + lootPool { item(Items.WHITE_DYE) { setCount(64) } } + lootPool { item(Items.ORANGE_DYE) { setCount(64) } } + lootPool { item(Items.MAGENTA_DYE) { setCount(64) } } + lootPool { item(Items.LIGHT_BLUE_DYE) { setCount(64) } } + lootPool { item(Items.YELLOW_DYE) { setCount(64) } } + lootPool { item(Items.LIME_DYE) { setCount(64) } } + lootPool { item(Items.PINK_DYE) { setCount(64) } } + lootPool { item(Items.GRAY_DYE) { setCount(64) } } + lootPool { item(Items.LIGHT_GRAY_DYE) { setCount(64) } } + lootPool { item(Items.CYAN_DYE) { setCount(64) } } + lootPool { item(Items.PURPLE_DYE) { setCount(64) } } + lootPool { item(Items.BLUE_DYE) { setCount(64) } } + lootPool { item(Items.BROWN_DYE) { setCount(64) } } + lootPool { item(Items.GREEN_DYE) { setCount(64) } } + lootPool { item(Items.RED_DYE) { setCount(64) } } + lootPool { item(Items.BLACK_DYE) { setCount(64) } } } lootTables.tile(MBlocks.ENERGY_SERVO)