Merge remote-tracking branch 'origin/1.21' into 1.21
This commit is contained in:
commit
0f2da66816
@ -8,6 +8,7 @@ import net.minecraft.world.item.ItemStack
|
|||||||
import net.minecraft.world.level.storage.loot.BuiltInLootTables
|
import net.minecraft.world.level.storage.loot.BuiltInLootTables
|
||||||
import net.minecraft.world.level.storage.loot.LootTable
|
import net.minecraft.world.level.storage.loot.LootTable
|
||||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
|
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
|
||||||
|
import net.neoforged.neoforge.common.loot.AddTableLootModifier
|
||||||
import net.neoforged.neoforge.common.loot.LootTableIdCondition
|
import net.neoforged.neoforge.common.loot.LootTableIdCondition
|
||||||
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
@ -17,6 +18,7 @@ import ru.dbotthepony.mc.otm.data.condition.HasExoPackCondition
|
|||||||
import ru.dbotthepony.mc.otm.data.condition.ItemInInventoryCondition
|
import ru.dbotthepony.mc.otm.data.condition.ItemInInventoryCondition
|
||||||
import ru.dbotthepony.mc.otm.data.condition.KilledByRealPlayerOrIndirectly
|
import ru.dbotthepony.mc.otm.data.condition.KilledByRealPlayerOrIndirectly
|
||||||
import ru.dbotthepony.mc.otm.data.loot.LootPoolAppender
|
import ru.dbotthepony.mc.otm.data.loot.LootPoolAppender
|
||||||
|
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
||||||
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
||||||
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
||||||
import ru.dbotthepony.mc.otm.registry.MItems
|
import ru.dbotthepony.mc.otm.registry.MItems
|
||||||
@ -211,4 +213,29 @@ fun addLootModifiers(it: LootModifiers) {
|
|||||||
),
|
),
|
||||||
ItemStack(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON),
|
ItemStack(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
it.add("trials/matter_dust", AddTableLootModifier(
|
||||||
|
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||||
|
modLootTable("trials/matter_dust")
|
||||||
|
))
|
||||||
|
|
||||||
|
it.add("trials/pill", AddTableLootModifier(
|
||||||
|
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||||
|
modLootTable("trials/pill")
|
||||||
|
))
|
||||||
|
|
||||||
|
it.add("trials/exosuit", AddTableLootModifier(
|
||||||
|
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||||
|
modLootTable("trials/exosuit")
|
||||||
|
))
|
||||||
|
|
||||||
|
it.add("trials/battery", AddTableLootModifier(
|
||||||
|
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||||
|
modLootTable("trials/battery")
|
||||||
|
))
|
||||||
|
|
||||||
|
it.add("trials/zpm_battery", AddTableLootModifier(
|
||||||
|
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD_OMINOUS)),
|
||||||
|
modLootTable("trials/zpm_battery")
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import net.minecraft.advancements.critereon.ItemEnchantmentsPredicate
|
|||||||
import net.minecraft.advancements.critereon.ItemPredicate
|
import net.minecraft.advancements.critereon.ItemPredicate
|
||||||
import net.minecraft.advancements.critereon.ItemSubPredicates
|
import net.minecraft.advancements.critereon.ItemSubPredicates
|
||||||
import net.minecraft.advancements.critereon.MinMaxBounds
|
import net.minecraft.advancements.critereon.MinMaxBounds
|
||||||
|
import net.minecraft.util.valueproviders.UniformInt
|
||||||
import net.minecraft.world.item.Items
|
import net.minecraft.world.item.Items
|
||||||
import net.minecraft.world.item.enchantment.Enchantments
|
import net.minecraft.world.item.enchantment.Enchantments
|
||||||
import net.minecraft.world.level.ItemLike
|
import net.minecraft.world.level.ItemLike
|
||||||
@ -18,7 +19,12 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
|
|||||||
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition
|
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition
|
||||||
import net.minecraft.world.level.storage.loot.predicates.MatchTool
|
import net.minecraft.world.level.storage.loot.predicates.MatchTool
|
||||||
import ru.dbotthepony.mc.otm.core.lookupOrThrow
|
import ru.dbotthepony.mc.otm.core.lookupOrThrow
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
|
import ru.dbotthepony.mc.otm.data.UniformDecimal
|
||||||
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
||||||
|
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
||||||
|
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
||||||
|
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
|
||||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||||
import ru.dbotthepony.mc.otm.registry.MItems
|
import ru.dbotthepony.mc.otm.registry.MItems
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||||
@ -211,4 +217,61 @@ fun addLootTables(lootTables: LootTables) {
|
|||||||
lootTables.tile(MBlocks.BLACK_HOLE_GENERATOR)
|
lootTables.tile(MBlocks.BLACK_HOLE_GENERATOR)
|
||||||
lootTables.tile(MBlocks.ITEM_INPUT_HATCH)
|
lootTables.tile(MBlocks.ITEM_INPUT_HATCH)
|
||||||
lootTables.tile(MBlocks.ITEM_OUTPUT_HATCH)
|
lootTables.tile(MBlocks.ITEM_OUTPUT_HATCH)
|
||||||
|
|
||||||
|
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/matter_dust")) {
|
||||||
|
lootPool { item(MItems.MATTER_DUST) {
|
||||||
|
chanceCondition(0.2)
|
||||||
|
setWeight(4)
|
||||||
|
apply(MatterDustItem.Randomizer(UniformDecimal(Decimal(100), Decimal(2_500))))
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
|
||||||
|
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/pill")) {
|
||||||
|
lootPool { item(MItems.PILL_ANDROID) {
|
||||||
|
chanceCondition(0.1)
|
||||||
|
setWeight(1)
|
||||||
|
} }
|
||||||
|
lootPool { item(MItems.PILL_HEAL) {
|
||||||
|
chanceCondition(0.5)
|
||||||
|
setWeight(2)
|
||||||
|
setCount(2, 5)
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
|
||||||
|
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/exosuit")) {
|
||||||
|
lootPool { item(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) {
|
||||||
|
chanceCondition(0.2)
|
||||||
|
setWeight(2)
|
||||||
|
|
||||||
|
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(1, 9), UniformInt.of(0, 3)))
|
||||||
|
} }
|
||||||
|
|
||||||
|
lootPool { item(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) {
|
||||||
|
chanceCondition(0.1)
|
||||||
|
setWeight(1)
|
||||||
|
|
||||||
|
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(9, 18), UniformInt.of(0, 3)))
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
|
||||||
|
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/battery")) {
|
||||||
|
lootPool { item(MItems.PROCEDURAL_BATTERY) {
|
||||||
|
chanceCondition(0.05)
|
||||||
|
setWeight(1)
|
||||||
|
|
||||||
|
apply(
|
||||||
|
ProceduralBatteryItem.Randomizer(
|
||||||
|
maxBatteryLevel = UniformDecimal(Decimal(10_000_000), Decimal(50_000_000)),
|
||||||
|
batteryLevel = UniformDecimal(Decimal(0), Decimal(25_000_000)),
|
||||||
|
maxInput = UniformDecimal(Decimal(1_000), Decimal(5_000)),
|
||||||
|
))
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
|
||||||
|
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/zpm_battery")) {
|
||||||
|
lootPool { item(MItems.ZPM_BATTERY) {
|
||||||
|
chanceCondition(0.001)
|
||||||
|
setWeight(1)
|
||||||
|
} }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
package ru.dbotthepony.mc.otm.item.matter
|
package ru.dbotthepony.mc.otm.item.matter
|
||||||
|
|
||||||
|
import com.mojang.serialization.MapCodec
|
||||||
|
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||||
import net.minecraft.ChatFormatting
|
import net.minecraft.ChatFormatting
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
|
import net.minecraft.util.valueproviders.ConstantInt
|
||||||
|
import net.minecraft.util.valueproviders.IntProvider
|
||||||
import net.minecraft.world.entity.SlotAccess
|
import net.minecraft.world.entity.SlotAccess
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.inventory.ClickAction
|
import net.minecraft.world.inventory.ClickAction
|
||||||
@ -10,18 +14,47 @@ import net.minecraft.world.item.Item
|
|||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraft.world.item.TooltipFlag
|
import net.minecraft.world.item.TooltipFlag
|
||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
|
import net.minecraft.world.level.storage.loot.LootContext
|
||||||
|
import net.minecraft.world.level.storage.loot.functions.LootItemFunction
|
||||||
|
import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType
|
||||||
import ru.dbotthepony.mc.otm.config.ItemsConfig
|
import ru.dbotthepony.mc.otm.config.ItemsConfig
|
||||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.matter.IMatterItem
|
import ru.dbotthepony.mc.otm.matter.IMatterItem
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||||
|
import ru.dbotthepony.mc.otm.data.DecimalProvider
|
||||||
import ru.dbotthepony.mc.otm.matter.IMatterValue
|
import ru.dbotthepony.mc.otm.matter.IMatterValue
|
||||||
import ru.dbotthepony.mc.otm.matter.MatterValue
|
import ru.dbotthepony.mc.otm.matter.MatterValue
|
||||||
import ru.dbotthepony.mc.otm.registry.MDataComponentTypes
|
import ru.dbotthepony.mc.otm.registry.MDataComponentTypes
|
||||||
|
import ru.dbotthepony.mc.otm.registry.MItemFunctionTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MItems
|
import ru.dbotthepony.mc.otm.registry.MItems
|
||||||
|
|
||||||
class MatterDustItem : Item(Properties().stacksTo(64)), IMatterItem {
|
class MatterDustItem : Item(Properties().stacksTo(64)), IMatterItem {
|
||||||
|
class Randomizer(val matter: DecimalProvider, val luckBias: IntProvider = ConstantInt.ZERO) : LootItemFunction, LootItemFunction.Builder {
|
||||||
|
override fun apply(t: ItemStack, u: LootContext): ItemStack {
|
||||||
|
t[MDataComponentTypes.MATTER_LEVEL] = matter.sample(u.random) + (luckBias.sample(u.random) * u.luck / 1024f).coerceAtLeast(0f)
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getType(): LootItemFunctionType<Randomizer> {
|
||||||
|
return MItemFunctionTypes.MATTER_DUST
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun build(): LootItemFunction {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val CODEC: MapCodec<Randomizer> = RecordCodecBuilder.mapCodec {
|
||||||
|
it.group(
|
||||||
|
DecimalProvider.CODEC.fieldOf("slots").forGetter(Randomizer::matter),
|
||||||
|
IntProvider.CODEC.optionalFieldOf("luck_bias", ConstantInt.ZERO).forGetter(Randomizer::luckBias),
|
||||||
|
).apply(it, ::Randomizer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun matter(stack: ItemStack): Decimal {
|
private fun matter(stack: ItemStack): Decimal {
|
||||||
return stack.getOrDefault(MDataComponentTypes.MATTER_LEVEL, Decimal.ZERO)
|
return stack.getOrDefault(MDataComponentTypes.MATTER_LEVEL, Decimal.ZERO)
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
|||||||
import ru.dbotthepony.mc.otm.data.loot.CopyTileNbtFunction
|
import ru.dbotthepony.mc.otm.data.loot.CopyTileNbtFunction
|
||||||
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
||||||
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
||||||
|
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
|
||||||
|
|
||||||
object MItemFunctionTypes {
|
object MItemFunctionTypes {
|
||||||
private val registry = MDeferredRegister(Registries.LOOT_FUNCTION_TYPE, OverdriveThatMatters.MOD_ID)
|
private val registry = MDeferredRegister(Registries.LOOT_FUNCTION_TYPE, OverdriveThatMatters.MOD_ID)
|
||||||
@ -14,6 +15,7 @@ object MItemFunctionTypes {
|
|||||||
val COPY_TILE_NBT by registry.register("copy_tile_nbt") { LootItemFunctionType(CopyTileNbtFunction.CODEC) }
|
val COPY_TILE_NBT by registry.register("copy_tile_nbt") { LootItemFunctionType(CopyTileNbtFunction.CODEC) }
|
||||||
val PROCEDURAL_BATTERY by registry.register(MNames.PROCEDURAL_BATTERY) { LootItemFunctionType(ProceduralBatteryItem.Randomizer.CODEC) }
|
val PROCEDURAL_BATTERY by registry.register(MNames.PROCEDURAL_BATTERY) { LootItemFunctionType(ProceduralBatteryItem.Randomizer.CODEC) }
|
||||||
val PROCEDURAL_EXOPACK_UPGRADE by registry.register("exopack_upgrade") { LootItemFunctionType(ProceduralExopackSlotUpgradeItem.Randomizer.CODEC) }
|
val PROCEDURAL_EXOPACK_UPGRADE by registry.register("exopack_upgrade") { LootItemFunctionType(ProceduralExopackSlotUpgradeItem.Randomizer.CODEC) }
|
||||||
|
val MATTER_DUST by registry.register("matter_dust") { LootItemFunctionType(MatterDustItem.Randomizer.CODEC) }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
|
Loading…
Reference in New Issue
Block a user