More loottables datagen api
This commit is contained in:
parent
34cd04fb2d
commit
cace26411a
@ -4,7 +4,6 @@ import com.mojang.datafixers.util.Pair
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectFunction
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||
import net.minecraft.advancements.critereon.StatePropertiesPredicate
|
||||
import net.minecraft.data.DataGenerator
|
||||
import net.minecraft.data.loot.LootTableProvider
|
||||
@ -43,6 +42,15 @@ inline fun singleLootPool(f: (LootPool.Builder) -> Unit): LootTable.Builder {
|
||||
}
|
||||
|
||||
inline fun LootTable.Builder.lootPool(configurator: LootPool.Builder.() -> Unit): LootTable.Builder = withPool(LootPool.lootPool().also(configurator))
|
||||
inline fun LootPool.Builder.item(item: ItemLike, configurator: LootPoolSingletonContainer.Builder<*>.() -> Unit) {
|
||||
add(LootItem.lootTableItem(item).also(configurator))
|
||||
}
|
||||
|
||||
fun LootPool.Builder.setRolls(count: Int): LootPool.Builder = setRolls(ConstantValue.exactly(count.toFloat()))
|
||||
fun LootPool.Builder.setRolls(count: Float): LootPool.Builder = setRolls(ConstantValue.exactly(count))
|
||||
|
||||
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())))
|
||||
|
@ -10,11 +10,11 @@ import ru.dbotthepony.mc.otm.registry.MItems
|
||||
fun addChestLootTables(loot: LootTables) {
|
||||
loot.builder(LootContextParamSets.CHEST, modLocation("food_box")) {
|
||||
lootPool {
|
||||
add(LootItem.lootTableItem(Items.PACKED_ICE).setCount(minimal = 1, maximal = 3))
|
||||
add(LootItem.lootTableItem(MItems.NUTRIENT_PASTE).setCount(minimal = 1, maximal = 2))
|
||||
add(LootItem.lootTableItem(Items.SNOWBALL).setCount(minimal = 1, maximal = 5))
|
||||
item(Items.PACKED_ICE) { setCount(minimal = 1, maximal = 3) }
|
||||
item(MItems.NUTRIENT_PASTE) { setCount(minimal = 1, maximal = 2) }
|
||||
item(Items.SNOWBALL) { setCount(minimal = 1, maximal = 5) }
|
||||
|
||||
setRolls(ConstantValue.exactly(3f))
|
||||
setRolls(3)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user