This commit is contained in:
DBotThePony 2022-10-16 23:54:14 +07:00
parent ef8738a0f4
commit d26660c917
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 49 additions and 38 deletions

View File

@ -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 : LootPoolSingletonContainer.Builder<*>> T.setCount(count: Int): T {
apply(SetItemCountFunction.setCount(ConstantValue.exactly(count.toFloat())))
fun <T : LootPoolSingletonContainer.Builder<*>> T.setCount(count: Int, configurator: LootItemConditionalFunction.Builder<*>.() -> Unit = {}): T {
apply(SetItemCountFunction.setCount(ConstantValue.exactly(count.toFloat())).also(configurator))
return this
}
fun <T : LootPoolSingletonContainer.Builder<*>> T.setCount(minimal: Int, maximal: Int): T {
apply(SetItemCountFunction.setCount(UniformGenerator.between(minimal.toFloat(), maximal.toFloat())))
fun <T : LootPoolSingletonContainer.Builder<*>> 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 : LootPoolSingletonContainer.Builder<*>> T.setCount(minimal: Float, maximal: Float): T {
apply(SetItemCountFunction.setCount(UniformGenerator.between(minimal.toFloat(), maximal.toFloat())))
fun <T : LootPoolSingletonContainer.Builder<*>> 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 : LootPoolSingletonContainer.Builder<*>> T.condition(condition: LootItemC
return this
}
fun <T : LootItemConditionalFunction.Builder<*>> T.condition(condition: LootItemCondition.Builder): T {
`when`(condition)
return this
}
inline fun <T : LootPoolSingletonContainer.Builder<*>> T.blockStateCondition(block: Block, configurator: StatePropertiesPredicate.Builder.() -> Unit): T {
condition(LootItemBlockStatePropertyCondition.hasBlockStateProperties(block).setProperties(StatePropertiesPredicate.Builder.properties().also(configurator)))
return this
}
inline fun <T : LootItemConditionalFunction.Builder<*>> 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<Int>, value: Int): StatePropertiesPredicate.Builder = hasProperty(property, value)
operator fun StatePropertiesPredicate.Builder.set(property: Property<Boolean>, value: Boolean): StatePropertiesPredicate.Builder = hasProperty(property, value)

View File

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