diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt index c79f373f3..77a42d003 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt @@ -4,7 +4,7 @@ import net.minecraft.data.DataGenerator import net.minecraft.world.item.ItemStack import net.minecraft.world.level.storage.loot.predicates.LootItemCondition import net.minecraftforge.common.data.GlobalLootModifierProvider -import ru.dbotthepony.mc.otm.data.LootPoolAppender +import ru.dbotthepony.mc.otm.data.loot.LootPoolAppender import ru.dbotthepony.mc.otm.datagen.DataGen import java.util.Arrays import java.util.stream.Stream diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt index 234dda79b..adcff7df2 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt @@ -9,10 +9,10 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemCondition import net.minecraftforge.common.loot.LootTableIdCondition import ru.dbotthepony.mc.otm.data.condition.ChanceWithPlaytimeCondition import ru.dbotthepony.mc.otm.data.condition.HasExosuitCondition -import ru.dbotthepony.mc.otm.data.IRandomizableItem -import ru.dbotthepony.mc.otm.data.ItemInInventoryCondition +import ru.dbotthepony.mc.otm.data.loot.IRandomizableItem +import ru.dbotthepony.mc.otm.data.condition.ItemInInventoryCondition import ru.dbotthepony.mc.otm.data.condition.KilledByRealPlayerOrIndirectly -import ru.dbotthepony.mc.otm.data.RandomizableItemLootAppender +import ru.dbotthepony.mc.otm.data.loot.RandomizableItemLootAppender import ru.dbotthepony.mc.otm.registry.MItems @Suppress("FunctionName") @@ -39,7 +39,8 @@ fun addLootModifiers(it: LootModifiers) { RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.2), RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.05, rarity = Rarity.UNCOMMON) ) - )) + ) + ) it.add("mineshaft_pill", PlainLootAppender( arrayOf(LootTableIdCondition(BuiltInLootTables.ABANDONED_MINESHAFT)), @@ -54,7 +55,8 @@ fun addLootModifiers(it: LootModifiers) { RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.1), RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.01, rarity = Rarity.UNCOMMON) ) - )) + ) + ) it.add("mineshaft_nutrient_paste", PlainLootAppender( arrayOf(LootTableIdCondition(BuiltInLootTables.ABANDONED_MINESHAFT)), @@ -75,7 +77,8 @@ fun addLootModifiers(it: LootModifiers) { RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.15, rarity = Rarity.UNCOMMON), RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.25, rarity = Rarity.COMMON), ) - )) + ) + ) it.add("jungle_temple_pill", PlainLootAppender( arrayOf(LootTableIdCondition(BuiltInLootTables.JUNGLE_TEMPLE)), @@ -88,7 +91,8 @@ fun addLootModifiers(it: LootModifiers) { RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.15, rarity = Rarity.UNCOMMON), RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.35, rarity = Rarity.RARE) ) - )) + ) + ) it.add("end_city_modifications", PlainLootAppender( arrayOf(LootTableIdCondition(BuiltInLootTables.END_CITY_TREASURE)), @@ -105,7 +109,8 @@ fun addLootModifiers(it: LootModifiers) { RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.2, rarity = Rarity.RARE), RandomizableItemLootAppender.Entry(MItems.ExosuitUpgrades.INVENTORY_UPGRADE_PROCEDURAL as IRandomizableItem, chance = 0.15, rarity = Rarity.EPIC), ) - )) + ) + ) it.add("shipwreck_supply_pill", PlainLootAppender( arrayOf(LootTableIdCondition(BuiltInLootTables.SHIPWRECK_SUPPLY)), diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/ItemInInventoryCondition.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/condition/ItemInInventoryCondition.kt similarity index 98% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/ItemInInventoryCondition.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/condition/ItemInInventoryCondition.kt index 34d214c2b..fbad4de61 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/ItemInInventoryCondition.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/condition/ItemInInventoryCondition.kt @@ -1,4 +1,4 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.condition import com.google.gson.JsonDeserializationContext import com.google.gson.JsonObject diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/IRandomizableItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/IRandomizableItem.kt new file mode 100644 index 000000000..42ba6ca86 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/IRandomizableItem.kt @@ -0,0 +1,11 @@ +package ru.dbotthepony.mc.otm.data.loot + +import net.minecraft.util.RandomSource +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.Rarity +import net.minecraft.world.level.ItemLike + +interface IRandomizableItem : ItemLike { + fun randomize(itemStack: ItemStack, random: RandomSource, ply: Player?, rarity: Rarity = Rarity.COMMON) +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/LootPoolAppender.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/LootPoolAppender.kt similarity index 98% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/LootPoolAppender.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/LootPoolAppender.kt index 27f792704..fea33bfb0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/LootPoolAppender.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/LootPoolAppender.kt @@ -1,4 +1,4 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.loot import com.google.common.collect.ImmutableList import com.google.gson.* diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/RandomizableItemLootAppender.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/RandomizableItemLootAppender.kt similarity index 94% rename from src/main/kotlin/ru/dbotthepony/mc/otm/data/RandomizableItemLootAppender.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/RandomizableItemLootAppender.kt index 7b09b384b..d78cbc834 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/RandomizableItemLootAppender.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/RandomizableItemLootAppender.kt @@ -1,4 +1,4 @@ -package ru.dbotthepony.mc.otm.data +package ru.dbotthepony.mc.otm.data.loot import com.google.common.collect.ImmutableList import com.mojang.datafixers.util.Pair @@ -7,24 +7,18 @@ import com.mojang.serialization.DataResult import com.mojang.serialization.DynamicOps import com.mojang.serialization.codecs.RecordCodecBuilder import it.unimi.dsi.fastutil.objects.ObjectArrayList -import net.minecraft.util.RandomSource import net.minecraft.util.valueproviders.ConstantInt import net.minecraft.util.valueproviders.IntProvider -import net.minecraft.util.valueproviders.UniformInt import net.minecraft.world.entity.player.Player import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Rarity -import net.minecraft.world.level.ItemLike import net.minecraft.world.level.storage.loot.LootContext import net.minecraft.world.level.storage.loot.parameters.LootContextParams import net.minecraft.world.level.storage.loot.predicates.LootItemCondition import net.minecraftforge.common.loot.LootModifier import net.minecraftforge.registries.ForgeRegistries - -interface IRandomizableItem : ItemLike { - fun randomize(itemStack: ItemStack, random: RandomSource, ply: Player?, rarity: Rarity = Rarity.COMMON) -} +import ru.dbotthepony.mc.otm.data.codec class RandomizableItemLootAppender( conditions: Array, @@ -68,7 +62,7 @@ class RandomizableItemLootAppender( IntProvider.CODEC.fieldOf("count").forGetter(Entry::count), Rarity::class.codec().fieldOf("rarity").forGetter(Entry::rarity), Codec.BOOL.fieldOf("distinct").forGetter(Entry::distinct), - ).apply(it, ::Entry) + ).apply(it, RandomizableItemLootAppender::Entry) } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ProceduralExoSuitSlotUpgradeItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ProceduralExoSuitSlotUpgradeItem.kt index ac562f433..d443bc476 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ProceduralExoSuitSlotUpgradeItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ProceduralExoSuitSlotUpgradeItem.kt @@ -11,11 +11,12 @@ import net.minecraft.world.level.Level import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.set import ru.dbotthepony.mc.otm.core.tagNotNull -import ru.dbotthepony.mc.otm.data.IRandomizableItem +import ru.dbotthepony.mc.otm.data.loot.IRandomizableItem import java.util.* @Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") // .tab(null) is a legal statement because tab field itself is nullable -class ProceduralExoSuitSlotUpgradeItem : AbstractExoSuitSlotUpgradeItem(defaultProperties().tab(null)), IRandomizableItem { +class ProceduralExoSuitSlotUpgradeItem : AbstractExoSuitSlotUpgradeItem(defaultProperties().tab(null)), + IRandomizableItem { override fun getRarity(itemStack: ItemStack): Rarity { return when (slotCount(itemStack)) { in 0 .. 9 -> Rarity.COMMON diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt index aa0eb0bb5..4a92c8123 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt @@ -4,8 +4,8 @@ import net.minecraftforge.eventbus.api.IEventBus import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.ForgeRegistries import ru.dbotthepony.mc.otm.OverdriveThatMatters -import ru.dbotthepony.mc.otm.data.LootPoolAppender -import ru.dbotthepony.mc.otm.data.RandomizableItemLootAppender +import ru.dbotthepony.mc.otm.data.loot.LootPoolAppender +import ru.dbotthepony.mc.otm.data.loot.RandomizableItemLootAppender object LootModifiers { private val registry = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, OverdriveThatMatters.MOD_ID) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt index 9bee9fa46..6070f0c7c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MLootItemConditions.kt @@ -7,7 +7,7 @@ import net.minecraftforge.registries.RegisterEvent import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.data.condition.ChanceWithPlaytimeCondition import ru.dbotthepony.mc.otm.data.condition.HasExosuitCondition -import ru.dbotthepony.mc.otm.data.ItemInInventoryCondition +import ru.dbotthepony.mc.otm.data.condition.ItemInInventoryCondition import ru.dbotthepony.mc.otm.data.condition.KilledByRealPlayer import ru.dbotthepony.mc.otm.data.condition.KilledByRealPlayerOrIndirectly import ru.dbotthepony.mc.otm.data.condition.ChanceCondition