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.LootTable
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
|
||||
import net.neoforged.neoforge.common.loot.AddTableLootModifier
|
||||
import net.neoforged.neoforge.common.loot.LootTableIdCondition
|
||||
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||
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.KilledByRealPlayerOrIndirectly
|
||||
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.exopack.ProceduralExopackSlotUpgradeItem
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
@ -211,4 +213,29 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
),
|
||||
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.ItemSubPredicates
|
||||
import net.minecraft.advancements.critereon.MinMaxBounds
|
||||
import net.minecraft.util.valueproviders.UniformInt
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.enchantment.Enchantments
|
||||
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.MatchTool
|
||||
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.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.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
@ -211,4 +217,61 @@ fun addLootTables(lootTables: LootTables) {
|
||||
lootTables.tile(MBlocks.BLACK_HOLE_GENERATOR)
|
||||
lootTables.tile(MBlocks.ITEM_INPUT_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
|
||||
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.ChatFormatting
|
||||
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.player.Player
|
||||
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.TooltipFlag
|
||||
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.container.MatteryContainer
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.matter.IMatterItem
|
||||
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.MatterValue
|
||||
import ru.dbotthepony.mc.otm.registry.MDataComponentTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MItemFunctionTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
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 {
|
||||
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.item.ProceduralBatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
||||
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
|
||||
|
||||
object MItemFunctionTypes {
|
||||
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 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 MATTER_DUST by registry.register("matter_dust") { LootItemFunctionType(MatterDustItem.Randomizer.CODEC) }
|
||||
|
||||
fun register(bus: IEventBus) {
|
||||
registry.register(bus)
|
||||
|
Loading…
Reference in New Issue
Block a user