diff --git a/src/api/kotlin/hiiragi283/ragium/api/RagiumAPI.kt b/src/api/kotlin/hiiragi283/ragium/api/RagiumAPI.kt index 158207998..d13e9de07 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/RagiumAPI.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/RagiumAPI.kt @@ -2,10 +2,10 @@ package hiiragi283.ragium.api import com.mojang.logging.LogUtils import com.mojang.serialization.MapCodec +import hiiragi283.ragium.api.data.map.HTEquipAction import hiiragi283.ragium.api.data.map.HTMaterialRecipeData import hiiragi283.ragium.api.data.registry.HTBrewingEffect import hiiragi283.ragium.api.data.registry.HTSolarPower -import hiiragi283.ragium.api.material.HTMaterialPrefix import hiiragi283.ragium.api.registry.toId import net.minecraft.core.Registry import net.minecraft.resources.ResourceKey @@ -15,7 +15,7 @@ import org.slf4j.Logger import java.util.ServiceLoader /** - * @see [mekanism.api.MekanismAPI] + * @see mekanism.api.MekanismAPI */ object RagiumAPI { /** @@ -56,34 +56,38 @@ object RagiumAPI { // Registry // + @JvmStatic + private fun createKey(path: String): ResourceKey> = ResourceKey.createRegistryKey(id(path)) + + @JvmStatic + private fun createRegistry(key: ResourceKey>): Registry = RegistryBuilder(key) + .sync(true) + .create() + + // Builtin @JvmField - val BREWING_EFFECT_KEY: ResourceKey> = ResourceKey.createRegistryKey(id("brewing_effect")) + val EQUIP_ACTION_TYPE_KEY: ResourceKey>> = createKey("equip_action_type") @JvmField - val MATERIAL_PREFIX_KEY: ResourceKey> = ResourceKey.createRegistryKey(id("material_prefix")) + val EQUIP_ACTION_TYPE_REGISTRY: Registry> = createRegistry(EQUIP_ACTION_TYPE_KEY) @JvmField - val MATERIAL_PREFIX_REGISTRY: Registry = RegistryBuilder(MATERIAL_PREFIX_KEY) - .sync(true) - .create() + val MATERIAL_RECIPE_TYPE_KEY: ResourceKey>> = createKey("material_recipe_type") @JvmField - val MATERIAL_RECIPE_TYPE_KEY: ResourceKey>> = ResourceKey.createRegistryKey( - id("material_recipe_type"), - ) + val MATERIAL_RECIPE_TYPE_REGISTRY: Registry> = createRegistry(MATERIAL_RECIPE_TYPE_KEY) + // Dynamic @JvmField - val MATERIAL_RECIPE_TYPE_REGISTRY: Registry> = RegistryBuilder(MATERIAL_RECIPE_TYPE_KEY) - .sync(true) - .create() + val BREWING_EFFECT_KEY: ResourceKey> = createKey("brewing_effect") @JvmField - val SOLAR_POWER_KEY: ResourceKey> = ResourceKey.createRegistryKey(id("solar_power")) + val SOLAR_POWER_KEY: ResourceKey> = createKey("solar_power") // Service // /** - * @see [mekanism.api.MekanismAPI.getService] + * @see mekanism.api.MekanismAPI.getService */ @Suppress("UnstableApiUsage") @JvmStatic diff --git a/src/api/kotlin/hiiragi283/ragium/api/RagiumPlatform.kt b/src/api/kotlin/hiiragi283/ragium/api/RagiumPlatform.kt index c2dc933bf..24412c19a 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/RagiumPlatform.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/RagiumPlatform.kt @@ -4,6 +4,7 @@ import com.google.gson.JsonObject import hiiragi283.ragium.api.addon.RagiumAddon import hiiragi283.ragium.api.material.HTMaterialDefinition import hiiragi283.ragium.api.material.HTMaterialKey +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix import hiiragi283.ragium.api.recipe.manager.HTMaterialRecipeManager import hiiragi283.ragium.api.recipe.manager.HTRecipeCache import hiiragi283.ragium.api.recipe.manager.HTRecipeFinder @@ -13,7 +14,6 @@ import hiiragi283.ragium.api.serialization.value.HTValueInput import hiiragi283.ragium.api.serialization.value.HTValueOutput import hiiragi283.ragium.api.storage.energy.HTEnergyBattery import hiiragi283.ragium.api.storage.item.HTItemHandler -import io.wispforest.accessories.api.AccessoriesCapability import net.minecraft.client.Minecraft import net.minecraft.core.Holder import net.minecraft.core.HolderLookup @@ -23,7 +23,6 @@ import net.minecraft.resources.ResourceKey import net.minecraft.server.MinecraftServer import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerPlayer -import net.minecraft.world.entity.LivingEntity import net.minecraft.world.item.DyeColor import net.minecraft.world.item.ItemStack import net.minecraft.world.item.alchemy.Potion @@ -60,6 +59,8 @@ interface RagiumPlatform { fun getMaterialDefinition(key: HTMaterialKey): HTMaterialDefinition = getMaterialDefinitions()[key] ?: HTMaterialDefinition.Empty + fun getPrefix(name: String): HTMaterialPrefix? + // Recipe // fun getMaterialRecipeManager(): HTMaterialRecipeManager @@ -109,8 +110,4 @@ interface RagiumPlatform { fun createValueInput(lookup: HolderLookup.Provider, compoundTag: CompoundTag): HTValueInput fun createValueOutput(lookup: HolderLookup.Provider, compoundTag: CompoundTag): HTValueOutput - - // Accessory // - - fun getAccessoryCap(entity: LivingEntity): AccessoriesCapability? = AccessoriesCapability.get(entity) } diff --git a/src/api/kotlin/hiiragi283/ragium/api/addon/RagiumAddon.kt b/src/api/kotlin/hiiragi283/ragium/api/addon/RagiumAddon.kt index 5853c97b5..cc6ff88b4 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/addon/RagiumAddon.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/addon/RagiumAddon.kt @@ -1,5 +1,7 @@ package hiiragi283.ragium.api.addon +import hiiragi283.ragium.api.material.prefix.HTPrefixLike +import hiiragi283.ragium.api.network.HTPayloadRegistrar import net.minecraft.core.Holder import net.minecraft.resources.ResourceKey import net.minecraft.world.item.CreativeModeTab @@ -13,6 +15,7 @@ import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent import net.neoforged.fml.event.lifecycle.FMLDedicatedServerSetupEvent import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent +import java.util.function.Consumer /** * Ragiumのアドオン向けのインターフェース @@ -44,8 +47,12 @@ interface RagiumAddon { fun onClientSetup(event: FMLClientSetupEvent) {} + fun registerPayloads(registrar: HTPayloadRegistrar) {} + // Extension // + fun bindMaterialPrefixes(consumer: Consumer) {} + fun modifyComponents(event: ModifyDefaultComponentsEvent) {} fun buildCreativeTabs(helper: CreativeTabHelper) {} diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/map/HTEquipAction.kt b/src/api/kotlin/hiiragi283/ragium/api/data/map/HTEquipAction.kt new file mode 100644 index 000000000..aff0b336d --- /dev/null +++ b/src/api/kotlin/hiiragi283/ragium/api/data/map/HTEquipAction.kt @@ -0,0 +1,23 @@ +package hiiragi283.ragium.api.data.map + +import com.mojang.serialization.Codec +import com.mojang.serialization.MapCodec +import hiiragi283.ragium.api.RagiumAPI +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack +import java.util.function.Function + +interface HTEquipAction { + companion object { + @JvmField + val CODEC: Codec = RagiumAPI.EQUIP_ACTION_TYPE_REGISTRY + .byNameCodec() + .dispatch(HTEquipAction::type, Function.identity()) + } + + fun type(): MapCodec + + fun onEquip(player: Player, stackTo: ItemStack) + + fun onUnequip(player: Player, stackFrom: ItemStack) +} diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/map/HTMaterialRecipeData.kt b/src/api/kotlin/hiiragi283/ragium/api/data/map/HTMaterialRecipeData.kt index 0d6216fed..df502986c 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/map/HTMaterialRecipeData.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/map/HTMaterialRecipeData.kt @@ -9,7 +9,7 @@ import hiiragi283.ragium.api.data.recipe.ingredient.HTFluidIngredientCreator import hiiragi283.ragium.api.data.recipe.ingredient.HTItemIngredientCreator import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import net.minecraft.advancements.Advancement import net.minecraft.advancements.AdvancementHolder import net.minecraft.core.HolderSet @@ -77,7 +77,7 @@ interface HTMaterialRecipeData { ) { fun getAllMaterials(): Set = RagiumPlatform.INSTANCE.getAllMaterials() - fun isPresentTag(prefix: HTMaterialPrefix, material: HTMaterialLike): Boolean = isPresentTag(prefix.itemTagKey(material)) + fun isPresentTag(prefix: HTPrefixLike, material: HTMaterialLike): Boolean = isPresentTag(prefix.itemTagKey(material)) fun isPresentTag(tagKey: TagKey): Boolean { val holderSet: Optional> = access.lookupOrThrow(Registries.ITEM).get(tagKey) diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt b/src/api/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt index e10c24b43..517b155e5 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/map/RagiumDataMaps.kt @@ -7,6 +7,7 @@ import net.minecraft.core.RegistryAccess import net.minecraft.core.registries.Registries import net.minecraft.resources.ResourceLocation import net.minecraft.world.entity.EntityType +import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.enchantment.Enchantment @@ -29,6 +30,12 @@ interface RagiumDataMaps { @JvmField val INSTANCE: RagiumDataMaps = RagiumAPI.getService() + @JvmField + val ENCHANT_FUEL: DataMapType = INSTANCE.enchFuelType + + @JvmField + val MOB_HEAD: DataMapType, HTMobHead> = INSTANCE.mobHeadType + @JvmField val THERMAL_FUEL: DataMapType = INSTANCE.thermalFuelType @@ -39,22 +46,21 @@ interface RagiumDataMaps { val NUCLEAR_FUEL: DataMapType = INSTANCE.nuclearFuelType @JvmField - val ENCHANT_FUEL: DataMapType = INSTANCE.enchFuelType - - @JvmField - val MOB_HEAD: DataMapType, HTMobHead> = INSTANCE.mobHeadType + val ARMOR_EQUIP: DataMapType = INSTANCE.armorEquipType @JvmField val MATERIAL_RECIPE: IdMapDataMap, HTMaterialRecipeData> = INSTANCE.materialRecipeType } + val enchFuelType: DataMapType + + val mobHeadType: DataMapType, HTMobHead> + val thermalFuelType: DataMapType val combustionFuelType: DataMapType val nuclearFuelType: DataMapType - val enchFuelType: DataMapType - - val mobHeadType: DataMapType, HTMobHead> + val armorEquipType: DataMapType val materialRecipeType: IdMapDataMap, HTMaterialRecipeData> diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/map/equip/HTMobEffectEquipAction.kt b/src/api/kotlin/hiiragi283/ragium/api/data/map/equip/HTMobEffectEquipAction.kt new file mode 100644 index 000000000..f86a997f2 --- /dev/null +++ b/src/api/kotlin/hiiragi283/ragium/api/data/map/equip/HTMobEffectEquipAction.kt @@ -0,0 +1,36 @@ +package hiiragi283.ragium.api.data.map.equip + +import com.mojang.serialization.MapCodec +import hiiragi283.ragium.api.data.map.HTEquipAction +import net.minecraft.core.Holder +import net.minecraft.world.effect.MobEffect +import net.minecraft.world.effect.MobEffectInstance +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack + +data class HTMobEffectEquipAction(private val instance: MobEffectInstance) : HTEquipAction { + companion object { + @JvmField + val CODEC: MapCodec = MobEffectInstance.CODEC + .fieldOf("effect") + .xmap(::HTMobEffectEquipAction, HTMobEffectEquipAction::instance) + } + + constructor( + effect: Holder, + duration: Int, + amplifier: Int = 0, + ambient: Boolean = false, + visible: Boolean = true, + ) : this(MobEffectInstance(effect, duration, amplifier, ambient, visible)) + + override fun type(): MapCodec = CODEC + + override fun onEquip(player: Player, stackTo: ItemStack) { + player.addEffect(instance) + } + + override fun onUnequip(player: Player, stackFrom: ItemStack) { + player.removeEffect(instance.effect) + } +} diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTIngredientRecipeBuilder.kt b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTIngredientRecipeBuilder.kt index f678c87c4..0e20377ed 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTIngredientRecipeBuilder.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTIngredientRecipeBuilder.kt @@ -1,7 +1,7 @@ package hiiragi283.ragium.api.data.recipe import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.Ingredient @@ -12,7 +12,7 @@ import net.minecraft.world.level.ItemLike * @param BUILDER [HTRecipeBuilder]を継承したクラス */ interface HTIngredientRecipeBuilder> : HTRecipeBuilder { - fun addIngredient(prefix: HTMaterialPrefix, key: HTMaterialLike): BUILDER = addIngredient(prefix.itemTagKey(key)) + fun addIngredient(prefix: HTPrefixLike, key: HTMaterialLike): BUILDER = addIngredient(prefix.itemTagKey(key)) fun addIngredient(tagKey: TagKey): BUILDER = addIngredient(Ingredient.of(tagKey)) diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeBuilder.kt b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeBuilder.kt index 3ac0c3f9f..f1f46f0eb 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeBuilder.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeBuilder.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.api.data.recipe import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import net.minecraft.advancements.Criterion import net.minecraft.data.recipes.RecipeBuilder import net.minecraft.data.recipes.RecipeOutput @@ -73,7 +73,7 @@ interface HTRecipeBuilder : RecipeBuilder { } } - fun tagCondition(prefix: HTMaterialPrefix, material: HTMaterialLike): Prefixed = tagCondition(prefix.itemTagKey(material)) + fun tagCondition(prefix: HTPrefixLike, material: HTMaterialLike): Prefixed = tagCondition(prefix.itemTagKey(material)) fun tagCondition(tagKey: TagKey): Prefixed = addCondition(NotCondition(TagEmptyCondition(tagKey))) diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTResultHelper.kt b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTResultHelper.kt index 4899fb5e9..d7e12114f 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTResultHelper.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTResultHelper.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.api.data.recipe import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.recipe.result.HTFluidResult import hiiragi283.ragium.api.recipe.result.HTItemResult import hiiragi283.ragium.api.recipe.result.HTRecipeResult @@ -69,7 +69,7 @@ interface HTResultHelper { /** * 指定した引数から[HTItemResult]を返します。 */ - fun item(prefix: HTMaterialPrefix, material: HTMaterialLike, count: Int = 1): HTItemResult = item(prefix.itemTagKey(material), count) + fun item(prefix: HTPrefixLike, material: HTMaterialLike, count: Int = 1): HTItemResult = item(prefix.itemTagKey(material), count) /** * 指定した引数から[HTItemResult]を返します。 diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTFluidIngredientCreator.kt b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTFluidIngredientCreator.kt index b9dca4ce9..bb0798d76 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTFluidIngredientCreator.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTFluidIngredientCreator.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.api.data.recipe.ingredient import hiiragi283.ragium.api.recipe.ingredient.HTFluidIngredient import hiiragi283.ragium.api.registry.HTFluidContent +import net.minecraft.core.HolderSet import net.minecraft.world.level.material.Fluid /** @@ -9,6 +10,8 @@ import net.minecraft.world.level.material.Fluid * @see mekanism.api.recipes.ingredients.creator.IFluidStackIngredientCreator */ interface HTFluidIngredientCreator : HTIngredientCreator { + override fun fromSet(holderSet: HolderSet, amount: Int): HTFluidIngredient = HTFluidIngredient.of(holderSet, amount) + fun fromContent(content: HTFluidContent<*, *, *>, amount: Int): HTFluidIngredient = fromTagKey(content.commonTag, amount) fun water(amount: Int): HTFluidIngredient = fromContent(HTFluidContent.WATER, amount) diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTIngredientCreator.kt b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTIngredientCreator.kt index 209736d64..99136dbaa 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTIngredientCreator.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTIngredientCreator.kt @@ -1,10 +1,8 @@ package hiiragi283.ragium.api.data.recipe.ingredient import hiiragi283.ragium.api.recipe.ingredient.HTIngredient -import hiiragi283.ragium.api.serialization.codec.BiCodec import net.minecraft.core.Holder import net.minecraft.core.HolderSet -import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.tags.TagKey /** @@ -36,7 +34,4 @@ interface HTIngredientCreator> { fun fromTagKeys(vararg tagKeys: TagKey, amount: Int): INGREDIENT = fromTagKeys(tagKeys.toList(), amount) fun fromTagKeys(tagKeys: Iterable>, amount: Int): INGREDIENT - - // Codec - fun codec(): BiCodec } diff --git a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTItemIngredientCreator.kt b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTItemIngredientCreator.kt index ea0cb7a3c..b04da715c 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTItemIngredientCreator.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/data/recipe/ingredient/HTItemIngredientCreator.kt @@ -1,19 +1,35 @@ package hiiragi283.ragium.api.data.recipe.ingredient import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.recipe.ingredient.HTItemIngredient import net.minecraft.core.Holder import net.minecraft.core.HolderSet import net.minecraft.tags.TagKey import net.minecraft.world.item.Item +import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.level.ItemLike +import net.neoforged.neoforge.common.crafting.CompoundIngredient +import net.neoforged.neoforge.common.crafting.ICustomIngredient /** * [HTItemIngredient]を返す[HTIngredientCreator]の拡張インターフェース * @see mekanism.api.recipes.ingredients.creator.IItemStackIngredientCreator */ interface HTItemIngredientCreator : HTIngredientCreator { + override fun fromSet(holderSet: HolderSet, amount: Int): HTItemIngredient = HTItemIngredient.of(holderSet, amount) + + // Vanilla Ingredient + fun fromVanilla(vararg ingredients: Ingredient, count: Int = 1): HTItemIngredient = + fromVanilla(CompoundIngredient.of(*ingredients), count) + + fun fromVanilla(ingredient: ICustomIngredient, count: Int = 1): HTItemIngredient = fromVanilla(ingredient.toVanilla(), count) + + fun fromVanilla(ingredient: Ingredient, count: Int = 1): HTItemIngredient { + require(!ingredient.isEmpty) { "Empty ingredient is not valid for HTItemIngredient" } + return HTItemIngredient.of(ingredient, count) + } + // Default Count fun fromItem(item: ItemLike, count: Int = 1): HTItemIngredient = from(item.asItem(), count) @@ -33,11 +49,11 @@ interface HTItemIngredientCreator : HTIngredientCreator fun fromTagKeys(tagKeys: Iterable>): HTItemIngredient = fromTagKeys(tagKeys, 1) - // material - fun fromTagKey(prefix: HTMaterialPrefix, material: HTMaterialLike, count: Int = 1): HTItemIngredient = + // Material + fun fromTagKey(prefix: HTPrefixLike, material: HTMaterialLike, count: Int = 1): HTItemIngredient = fromTagKey(prefix.itemTagKey(material), count) - fun multiPrefixes(material: HTMaterialLike, vararg prefix: HTMaterialPrefix, count: Int = 1): HTItemIngredient = + fun multiPrefixes(material: HTMaterialLike, vararg prefix: HTPrefixLike, count: Int = 1): HTItemIngredient = fromTagKeys(prefix.map { it.itemTagKey(material) }, count) fun fuelOrDust(material: HTMaterialLike, count: Int = 1): HTItemIngredient diff --git a/src/api/kotlin/hiiragi283/ragium/api/extension/LevelExtensions.kt b/src/api/kotlin/hiiragi283/ragium/api/extension/LevelExtensions.kt index e91274b55..b26e59c7d 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/extension/LevelExtensions.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/extension/LevelExtensions.kt @@ -8,7 +8,7 @@ import net.minecraft.world.phys.Vec3 // Position // -fun Vec3.getRangedAABB(radius: Number): AABB = AABB.ofSize(this, radius.toDouble(), radius.toDouble(), radius.toDouble()) +fun Vec3.getRangedAABB(radius: Number): AABB = AABB(this, this).inflate(radius.toDouble()) // Level // diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerMenu.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerMenu.kt index 42165da6d..d18d43553 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerMenu.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerMenu.kt @@ -113,7 +113,7 @@ abstract class HTContainerMenu(menuType: HTDeferredMenuType<*, *>, containerId: } /** - * @see [AbstractContainerMenu.moveItemStackTo] + * @see AbstractContainerMenu.moveItemStackTo */ protected fun moveItemStackTo(stack: ItemStack, slots: Iterable, reverseDirection: Boolean): Boolean { var flag = false diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerWithContextMenu.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerWithContextMenu.kt index ef39f1e55..fefbfbcf3 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerWithContextMenu.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTContainerWithContextMenu.kt @@ -7,7 +7,7 @@ import net.minecraft.world.entity.player.Player /** * [C]を受け取る[HTContainerMenu]の拡張クラス - * @see [mekanism.common.inventory.container.tile.MekanismTileContainer] + * @see mekanism.common.inventory.container.tile.MekanismTileContainer */ abstract class HTContainerWithContextMenu( menuType: HTDeferredMenuType.WithContext<*, C>, diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerContext.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerContext.kt index ce5855382..e2a88ff5b 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerContext.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerContext.kt @@ -2,23 +2,23 @@ package hiiragi283.ragium.api.inventory.container import hiiragi283.ragium.api.serialization.codec.BiCodec import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs +import hiiragi283.ragium.api.stack.ImmutableItemStack import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.world.InteractionHand -import net.minecraft.world.item.ItemStack import java.util.Optional @JvmRecord -data class HTItemContainerContext(val hand: Optional, val stack: ItemStack) { +data class HTItemContainerContext(val hand: Optional, val stack: ImmutableItemStack) { companion object { @JvmField val CODEC: BiCodec = BiCodec.composite( VanillaBiCodecs.HAND.toOptional().fieldOf("hand"), HTItemContainerContext::hand, - VanillaBiCodecs.ITEM_STACK.fieldOf("stack"), + ImmutableItemStack.CODEC.fieldOf("stack"), HTItemContainerContext::stack, ::HTItemContainerContext, ) } - constructor(hand: InteractionHand?, stack: ItemStack) : this(Optional.ofNullable(hand), stack) + constructor(hand: InteractionHand?, stack: ImmutableItemStack) : this(Optional.ofNullable(hand), stack) } diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerMenu.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerMenu.kt index ed8fa101f..b24e56c9b 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerMenu.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/HTItemContainerMenu.kt @@ -1,16 +1,16 @@ package hiiragi283.ragium.api.inventory.container -import hiiragi283.ragium.api.RagiumPlatform import hiiragi283.ragium.api.registry.impl.HTDeferredMenuType +import hiiragi283.ragium.api.stack.ImmutableItemStack +import hiiragi283.ragium.api.tag.RagiumModTags import net.minecraft.world.InteractionHand import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player -import net.minecraft.world.item.ItemStack import java.util.Optional /** - * [InteractionHand]と[ItemStack]を受け取る[HTContainerMenu]の拡張クラス - * @see [mekanism.common.inventory.container.item.MekanismItemContainer] + * [InteractionHand]と[ImmutableItemStack]を受け取る[HTContainerMenu]の拡張クラス + * @see mekanism.common.inventory.container.item.MekanismItemContainer */ abstract class HTItemContainerMenu( menuType: HTDeferredMenuType.OnHand<*>, @@ -23,15 +23,12 @@ abstract class HTItemContainerMenu( inventory, ) { protected val hand: Optional = context.hand - protected val stack: ItemStack = context.stack + protected val stack: ImmutableItemStack = context.stack - override fun stillValid(player: Player): Boolean { - if (stack.isEmpty) return false - return hand - .map { interactionHand: InteractionHand -> - player.getItemInHand(interactionHand).`is`(stack.item) - }.orElseGet { - RagiumPlatform.INSTANCE.getAccessoryCap(player)?.getFirstEquipped(stack.item) != null - } - } + override fun stillValid(player: Player): Boolean = hand + .map { interactionHand: InteractionHand -> + stack.isOf(player.getItemInHand(interactionHand).item) + }.orElseGet { + stack.isOf(RagiumModTags.Items.BYPASS_MENU_VALIDATION) + } } diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemContainerFactory.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemContainerFactory.kt index bf6737b5b..80b337d85 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemContainerFactory.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemContainerFactory.kt @@ -1,15 +1,15 @@ package hiiragi283.ragium.api.inventory.container.type import hiiragi283.ragium.api.inventory.container.HTItemContainerContext +import hiiragi283.ragium.api.stack.ImmutableItemStack import net.minecraft.world.InteractionHand import net.minecraft.world.entity.player.Inventory import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.MenuConstructor -import net.minecraft.world.item.ItemStack import net.neoforged.api.distmarker.Dist /** - * [InteractionHand]と[ItemStack]を引数にとる[MenuConstructor]の代替インターフェース + * [InteractionHand]と[ImmutableItemStack]を引数にとる[MenuConstructor]の代替インターフェース * @see mekanism.common.inventory.container.type.MekanismItemContainerType.IMekanismItemContainerFactory */ fun interface HTItemContainerFactory { @@ -24,7 +24,7 @@ fun interface HTItemContainerFactory { containerId: Int, inventory: Inventory, hand: InteractionHand?, - stack: ItemStack, + stack: ImmutableItemStack, isClientSide: Dist, ): MENU = create(containerId, inventory, HTItemContainerContext(hand, stack), isClientSide) } diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemMenuType.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemMenuType.kt index 0b2ca874d..4cf875bda 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemMenuType.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTItemMenuType.kt @@ -1,11 +1,11 @@ package hiiragi283.ragium.api.inventory.container.type +import hiiragi283.ragium.api.stack.ImmutableItemStack import net.minecraft.world.InteractionHand import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.MenuConstructor -import net.minecraft.world.item.ItemStack import net.neoforged.api.distmarker.Dist import net.neoforged.neoforge.network.IContainerFactory @@ -17,12 +17,12 @@ class HTItemMenuType(factory: HTItemContainerFacto HTMenuType>(factory, constructor) { /** * 指定された[hand]と[stack]から[MenuConstructor]を返します。 - * @return [ItemStack.isEmpty]が`true`の場合は`null` + * @return [ImmutableItemStack]が`null`の場合は`null` */ - fun create(hand: InteractionHand?, stack: ItemStack): MenuConstructor? = when { - !stack.isEmpty -> MenuConstructor { containerId: Int, inventory: Inventory, _: Player -> + fun create(hand: InteractionHand?, stack: ImmutableItemStack?): MenuConstructor? { + if (stack == null) return null + return MenuConstructor { containerId: Int, inventory: Inventory, _: Player -> factory.create(containerId, inventory, hand, stack, Dist.DEDICATED_SERVER) } - else -> null } } diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuType.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuType.kt index b7c809c1f..1ecd2d3e4 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuType.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuType.kt @@ -7,7 +7,7 @@ import net.neoforged.neoforge.network.IContainerFactory /** * Ragiumで使用する[MenuType]の拡張クラス - * @see [mekanism.common.inventory.container.type.BaseMekanismContainerType] + * @see mekanism.common.inventory.container.type.BaseMekanismContainerType */ abstract class HTMenuType(protected val factory: FACTORY, constructor: IContainerFactory) : MenuType(constructor, FeatureFlags.VANILLA_SET) diff --git a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuTypeWithContext.kt b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuTypeWithContext.kt index f9efb0e03..d4220f954 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuTypeWithContext.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/inventory/container/type/HTMenuTypeWithContext.kt @@ -8,7 +8,7 @@ import net.neoforged.neoforge.network.IContainerFactory /** * [HTContainerFactory]を受け取る[HTMenuType]の拡張クラス - * @see [mekanism.common.inventory.container.type.MekanismContainerType] + * @see mekanism.common.inventory.container.type.MekanismContainerType */ class HTMenuTypeWithContext( private val clazz: Class, diff --git a/src/api/kotlin/hiiragi283/ragium/api/item/HTBlockItem.kt b/src/api/kotlin/hiiragi283/ragium/api/item/HTBlockItem.kt index 828f98887..5c8dea5d0 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/item/HTBlockItem.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/item/HTBlockItem.kt @@ -8,7 +8,7 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.level.block.Block /** - * @see [mekanism.common.item.block.ItemBlockMekanism] + * @see mekanism.common.item.block.ItemBlockMekanism */ open class HTBlockItem(block: BLOCK, properties: Properties) : BlockItem(block, properties) { @Suppress("UNCHECKED_CAST") diff --git a/src/api/kotlin/hiiragi283/ragium/api/item/component/HTDamageResistant.kt b/src/api/kotlin/hiiragi283/ragium/api/item/component/HTDamageResistant.kt index 0a19741d9..65dc41774 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/item/component/HTDamageResistant.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/item/component/HTDamageResistant.kt @@ -1,18 +1,18 @@ package hiiragi283.ragium.api.item.component +import hiiragi283.ragium.api.registry.HTKeyOrTagEntry +import hiiragi283.ragium.api.registry.HTKeyOrTagHelper import hiiragi283.ragium.api.serialization.codec.BiCodec -import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs import io.netty.buffer.ByteBuf import net.minecraft.core.registries.Registries -import net.minecraft.tags.TagKey import net.minecraft.world.damagesource.DamageType @JvmInline -value class HTDamageResistant(val types: TagKey) { +value class HTDamageResistant(val entry: HTKeyOrTagEntry) { companion object { @JvmField - val CODEC: BiCodec = VanillaBiCodecs - .tagKey(Registries.DAMAGE_TYPE) - .xmap(::HTDamageResistant, HTDamageResistant::types) + val CODEC: BiCodec = HTKeyOrTagHelper.INSTANCE + .codec(Registries.DAMAGE_TYPE) + .xmap(::HTDamageResistant, HTDamageResistant::entry) } } diff --git a/src/api/kotlin/hiiragi283/ragium/api/material/HTMaterialDefinitions.kt b/src/api/kotlin/hiiragi283/ragium/api/material/HTMaterialDefinitions.kt index 7af17ea47..2bb3ae463 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/material/HTMaterialDefinitions.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/material/HTMaterialDefinitions.kt @@ -3,14 +3,16 @@ package hiiragi283.ragium.api.material import hiiragi283.ragium.api.material.attribute.HTDefaultPrefixMaterialAttribute import hiiragi283.ragium.api.material.attribute.HTLangNameMaterialAttribute import hiiragi283.ragium.api.material.attribute.HTMaterialAttribute +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike inline fun HTMaterialDefinition.get(): T? = get(T::class.java) fun HTMaterialDefinition.getDefaultPrefix(): HTMaterialPrefix? = get()?.prefix // Builder -fun HTMaterialDefinition.Builder.addDefaultPrefix(prefix: HTMaterialPrefix) { - add(HTDefaultPrefixMaterialAttribute(prefix)) +fun HTMaterialDefinition.Builder.addDefaultPrefix(prefix: HTPrefixLike) { + add(HTDefaultPrefixMaterialAttribute(prefix.asMaterialPrefix())) } fun HTMaterialDefinition.Builder.addName(enName: String, jaName: String) { diff --git a/src/api/kotlin/hiiragi283/ragium/api/material/attribute/HTDefaultPrefixMaterialAttribute.kt b/src/api/kotlin/hiiragi283/ragium/api/material/attribute/HTDefaultPrefixMaterialAttribute.kt index 5227cee7d..650fb5750 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/material/attribute/HTDefaultPrefixMaterialAttribute.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/material/attribute/HTDefaultPrefixMaterialAttribute.kt @@ -1,6 +1,6 @@ package hiiragi283.ragium.api.material.attribute -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix /** * 素材のデフォルトのプレフィックスを保持する属性のクラス diff --git a/src/api/kotlin/hiiragi283/ragium/api/material/prefix/HTMaterialPrefix.kt b/src/api/kotlin/hiiragi283/ragium/api/material/prefix/HTMaterialPrefix.kt new file mode 100644 index 000000000..9939b9f3d --- /dev/null +++ b/src/api/kotlin/hiiragi283/ragium/api/material/prefix/HTMaterialPrefix.kt @@ -0,0 +1,49 @@ +package hiiragi283.ragium.api.material.prefix + +import hiiragi283.ragium.api.RagiumConst +import hiiragi283.ragium.api.RagiumPlatform +import hiiragi283.ragium.api.addon.RagiumAddon +import hiiragi283.ragium.api.registry.RegistryKey +import hiiragi283.ragium.api.serialization.codec.BiCodec +import hiiragi283.ragium.api.tag.createTagKey +import io.netty.buffer.ByteBuf +import net.minecraft.resources.ResourceLocation +import net.minecraft.tags.TagKey + +/** + * タグのプレフィックスを表すクラス + * + * [RagiumAddon.bindMaterialPrefixes]を通して登録する必要があります。 + */ +@JvmRecord +data class HTMaterialPrefix( + val name: String, + private val commonTagPath: String = "${RagiumConst.COMMON}:${name}s", + private val tagPath: String = "$commonTagPath/%s", +) : HTPrefixLike { + companion object { + @JvmField + val DIRECT_CODEC: BiCodec = BiCodec.composite( + BiCodec.STRING.fieldOf("common_tag_path"), + HTMaterialPrefix::commonTagPath, + BiCodec.STRING.fieldOf("tag_path"), + HTMaterialPrefix::tagPath, + ::HTMaterialPrefix, + ) + + @JvmField + val CODEC: BiCodec = BiCodec.STRING.flatXmap( + { name: String -> + checkNotNull(RagiumPlatform.INSTANCE.getPrefix(name)) { "Unknown material prefix: $name" } + }, + HTMaterialPrefix::name, + ) + } + + override fun asMaterialPrefix(): HTMaterialPrefix = this + + override fun createCommonTagKey(key: RegistryKey): TagKey = key.createTagKey(ResourceLocation.parse(commonTagPath)) + + override fun createTagKey(key: RegistryKey, name: String): TagKey = + key.createTagKey(ResourceLocation.parse(tagPath.replace("%s", name))) +} diff --git a/src/api/kotlin/hiiragi283/ragium/api/material/HTMaterialPrefix.kt b/src/api/kotlin/hiiragi283/ragium/api/material/prefix/HTPrefixLike.kt similarity index 52% rename from src/api/kotlin/hiiragi283/ragium/api/material/HTMaterialPrefix.kt rename to src/api/kotlin/hiiragi283/ragium/api/material/prefix/HTPrefixLike.kt index 7fbe6f45b..665c7daf4 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/material/HTMaterialPrefix.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/material/prefix/HTPrefixLike.kt @@ -1,36 +1,23 @@ -package hiiragi283.ragium.api.material +package hiiragi283.ragium.api.material.prefix -import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.material.HTMaterialLike import hiiragi283.ragium.api.registry.RegistryKey -import hiiragi283.ragium.api.serialization.codec.BiCodec -import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs -import hiiragi283.ragium.api.tag.createTagKey import net.minecraft.core.registries.Registries -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.resources.ResourceLocation import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.level.block.Block -/** - * タグのプレフィックスを表すクラス - */ -data class HTMaterialPrefix(val name: String, private val commonTagPath: String, private val tagPath: String) { - companion object { - @JvmField - val CODEC: BiCodec = VanillaBiCodecs.registryBased(RagiumAPI.MATERIAL_PREFIX_REGISTRY) - } +fun interface HTPrefixLike { + fun asMaterialPrefix(): HTMaterialPrefix - fun createCommonTagKey(key: RegistryKey): TagKey = key.createTagKey(ResourceLocation.parse(commonTagPath)) + fun asPrefixName(): String = asMaterialPrefix().name - fun createTagKey(key: RegistryKey, material: HTMaterialLike): TagKey = createTagKey(key, material.asMaterialName()) + fun createCommonTagKey(key: RegistryKey): TagKey = asMaterialPrefix().createCommonTagKey(key) - fun createTagKey(key: RegistryKey, name: String): TagKey = - key.createTagKey(ResourceLocation.parse(tagPath.replace("%s", name))) + fun createTagKey(key: RegistryKey, material: HTMaterialLike): TagKey = createTagKey(key, material.asMaterialName()) - val blockCommonTag: TagKey = createCommonTagKey(Registries.BLOCK) - val itemCommonTag: TagKey = createCommonTagKey(Registries.ITEM) + fun createTagKey(key: RegistryKey, name: String): TagKey = asMaterialPrefix().createTagKey(key, name) fun blockTagKey(material: HTMaterialLike): TagKey = createTagKey(Registries.BLOCK, material) diff --git a/src/api/kotlin/hiiragi283/ragium/api/math/HTBounds.kt b/src/api/kotlin/hiiragi283/ragium/api/math/HTBounds.kt index a61b98bba..cb07dcfcb 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/math/HTBounds.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/math/HTBounds.kt @@ -6,7 +6,7 @@ package hiiragi283.ragium.api.math * @param y y座標 * @param width x軸方向の範囲 * @param height y軸方向の範囲 - * @see [dev.emi.emi.api.widget.Bounds] + * @see dev.emi.emi.api.widget.Bounds */ data class HTBounds( val x: Int, diff --git a/src/api/kotlin/hiiragi283/ragium/api/network/HTPayloadRegister.kt b/src/api/kotlin/hiiragi283/ragium/api/network/HTPayloadRegistrar.kt similarity index 96% rename from src/api/kotlin/hiiragi283/ragium/api/network/HTPayloadRegister.kt rename to src/api/kotlin/hiiragi283/ragium/api/network/HTPayloadRegistrar.kt index 37049f064..03ee39670 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/network/HTPayloadRegister.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/network/HTPayloadRegistrar.kt @@ -10,7 +10,7 @@ import net.minecraft.server.level.ServerPlayer import net.neoforged.neoforge.network.handling.IPayloadContext import net.neoforged.neoforge.network.registration.PayloadRegistrar -class HTPayloadRegister(private val registrar: PayloadRegistrar) { +class HTPayloadRegistrar(private val registrar: PayloadRegistrar) { fun registerS2C(type: CustomPacketPayload.Type, streamCodec: StreamCodec) { registrar.playToClient(type, streamCodec) { payload: T, context: IPayloadContext -> context diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/HTFluidTransformRecipe.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/HTFluidTransformRecipe.kt index e70b07c1e..e45910c8b 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/HTFluidTransformRecipe.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/HTFluidTransformRecipe.kt @@ -8,6 +8,6 @@ import net.minecraft.world.item.crafting.RecipeType interface HTFluidTransformRecipe : HTFluidRecipe, HTItemIngredient.CountGetter, - HTFluidIngredient.CountGetter { + HTFluidIngredient.AmountGetter { override fun getType(): RecipeType<*> = RagiumRecipeTypes.FLUID_TRANSFORM.get() } diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/HTMultiItemToObjRecipe.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/HTMultiItemToObjRecipe.kt index 6ffbf4a0c..07226b6d2 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/HTMultiItemToObjRecipe.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/HTMultiItemToObjRecipe.kt @@ -10,8 +10,8 @@ import net.minecraft.world.item.ItemStack /** * 複数の[ItemStack]から[ItemStack]を生成するレシピのインターフェース - * @see [HTCombineItemToItemRecipe] - * @see [HTItemWithCatalystToItemRecipe] + * @see HTCombineItemToItemRecipe + * @see HTItemWithCatalystToItemRecipe */ interface HTMultiItemToObjRecipe : HTRecipe { companion object { diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/HTRecipe.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/HTRecipe.kt index 4bb2cee7c..9564eafab 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/HTRecipe.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/HTRecipe.kt @@ -14,7 +14,7 @@ import kotlin.jvm.optionals.getOrNull /** * Ragiumで使用する[Recipe]の拡張インターフェース - * @see [mekanism.api.recipes.MekanismRecipe] + * @see mekanism.api.recipes.MekanismRecipe */ interface HTRecipe : Recipe, diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/base/HTItemWithFluidToChancedItemRecipe.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/base/HTItemWithFluidToChancedItemRecipe.kt index 6921e8721..89a6d9cd0 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/base/HTItemWithFluidToChancedItemRecipe.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/base/HTItemWithFluidToChancedItemRecipe.kt @@ -9,4 +9,4 @@ import hiiragi283.ragium.api.recipe.input.HTItemWithFluidRecipeInput */ interface HTItemWithFluidToChancedItemRecipe : HTChancedItemRecipe, - HTFluidIngredient.CountGetter + HTFluidIngredient.AmountGetter diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTEntityTypeIngredient.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTEntityTypeIngredient.kt new file mode 100644 index 000000000..709ccbe60 --- /dev/null +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTEntityTypeIngredient.kt @@ -0,0 +1,75 @@ +package hiiragi283.ragium.api.recipe.ingredient + +import com.enderio.base.api.soul.Soul +import com.enderio.base.common.init.EIODataComponents +import com.enderio.base.common.init.EIOItems +import hiiragi283.ragium.api.RagiumConst +import hiiragi283.ragium.api.item.createItemStack +import hiiragi283.ragium.api.serialization.codec.MapBiCodec +import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs +import net.minecraft.core.Holder +import net.minecraft.core.HolderSet +import net.minecraft.core.registries.Registries +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.world.entity.EntityType +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.SpawnEggItem +import net.minecraft.world.item.crafting.Ingredient +import net.neoforged.fml.ModList +import net.neoforged.neoforge.common.crafting.ICustomIngredient +import net.neoforged.neoforge.common.crafting.IngredientType +import java.util.stream.Stream + +@ConsistentCopyVisibility +data class HTEntityTypeIngredient private constructor(private val holderSet: HolderSet>) : ICustomIngredient { + companion object { + @JvmField + val CODEC: MapBiCodec = VanillaBiCodecs + .holderSet(Registries.ENTITY_TYPE) + .fieldOf("entities") + .xmap(::HTEntityTypeIngredient, HTEntityTypeIngredient::holderSet) + + @JvmField + val TYPE: IngredientType = IngredientType(CODEC.codec, CODEC.streamCodec) + + @Suppress("DEPRECATION") + @JvmStatic + fun of(vararg entityTypes: EntityType<*>): Ingredient = of(HolderSet.direct(EntityType<*>::builtInRegistryHolder, *entityTypes)) + + @JvmStatic + fun of(holderSet: HolderSet>): Ingredient = HTEntityTypeIngredient(holderSet).toVanilla() + } + + override fun test(stack: ItemStack): Boolean { + for (holder: Holder> in holderSet) { + val egg: SpawnEggItem = SpawnEggItem.byId(holder.value()) ?: continue + if (stack.`is`(egg)) { + return true + } + } + if (ModList.get().isLoaded(RagiumConst.EIO_BASE)) { + val matchSoul: Boolean? = stack.get(EIODataComponents.SOUL)?.entityType()?.`is`(holderSet) + if (matchSoul == true) { + return true + } + } + + return false + } + + override fun getItems(): Stream = buildList { + for (holder: Holder> in holderSet) { + val entityType: EntityType<*> = holder.value() + // Spawn Egg + SpawnEggItem.byId(entityType)?.let(::ItemStack)?.let(this::add) + // Soul vial if Ender IO loaded + if (ModList.get().isLoaded(RagiumConst.EIO_BASE)) { + add(createItemStack(EIOItems.SOUL_VIAL, EIODataComponents.SOUL, Soul.of(entityType))) + } + } + }.stream() + + override fun isSimple(): Boolean = false + + override fun getType(): IngredientType<*> = TYPE +} diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTFluidIngredient.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTFluidIngredient.kt index 3e197fd7d..01a1c50f7 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTFluidIngredient.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTFluidIngredient.kt @@ -1,19 +1,101 @@ package hiiragi283.ragium.api.recipe.ingredient +import com.mojang.datafixers.util.Either +import hiiragi283.ragium.api.serialization.codec.BiCodec +import hiiragi283.ragium.api.serialization.codec.BiCodecs +import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs +import hiiragi283.ragium.api.serialization.codec.VanillaMapBiCodecs import hiiragi283.ragium.api.stack.ImmutableFluidStack import hiiragi283.ragium.api.stack.toImmutable +import net.minecraft.core.Holder +import net.minecraft.core.HolderSet +import net.minecraft.core.registries.Registries +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.tags.TagKey import net.minecraft.world.level.material.Fluid import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.fluids.crafting.FluidIngredient +import kotlin.to /** - * [FluidStack]向けの[HTIngredient]の拡張インターフェース + * [ImmutableFluidStack]向けの[HTIngredient]の拡張インターフェース */ -interface HTFluidIngredient : HTIngredient { +sealed class HTFluidIngredient(protected val amount: Int) : HTIngredient { + fun interface AmountGetter { + fun getRequiredAmount(stack: ImmutableFluidStack): Int + } + + companion object { + @JvmField + val CODEC: BiCodec = BiCodecs + .xor(HolderBased.CODEC, IngredientBased.CODEC) + .xmap(Either::unwrap) { ingredient: HTFluidIngredient -> + when (ingredient) { + is HolderBased -> Either.left(ingredient) + is IngredientBased -> Either.right(ingredient) + } + } + + @JvmStatic + fun of(holderSet: HolderSet, amount: Int): HTFluidIngredient = HolderBased(holderSet, amount) + + @JvmStatic + fun of(ingredient: FluidIngredient, amount: Int): HTFluidIngredient = IngredientBased(ingredient, amount) + } + fun test(stack: FluidStack): Boolean = stack.toImmutable()?.let(this::test) ?: false fun testOnlyType(stack: FluidStack): Boolean = stack.toImmutable()?.let(this::testOnlyType) ?: false - fun interface CountGetter { - fun getRequiredAmount(stack: ImmutableFluidStack): Int + override fun test(stack: ImmutableFluidStack): Boolean = testOnlyType(stack) && stack.amount() >= this.amount + + final override fun getRequiredAmount(stack: ImmutableFluidStack): Int = if (test(stack)) this.amount else 0 + + // HolderBased // + + private class HolderBased(private val holderSet: HolderSet, amount: Int) : HTFluidIngredient(amount) { + companion object { + @JvmField + val CODEC: BiCodec = BiCodec.composite( + VanillaBiCodecs.holderSet(Registries.FLUID).fieldOf("fluids"), + HolderBased::holderSet, + BiCodecs.POSITIVE_INT.fieldOf("amount"), + HolderBased::amount, + ::HolderBased, + ) + } + + override fun testOnlyType(stack: ImmutableFluidStack): Boolean = stack.isOf(holderSet) + + override fun hasNoMatchingStacks(): Boolean = holderSet.none() + + override fun unwrap(): Either, Int>, List> = holderSet.unwrap().map( + { Either.left(it to amount) }, + { holders: List> -> + Either.right(holders.map { holder: Holder -> ImmutableFluidStack.of(holder.value(), amount) }) + }, + ) + } + + // IngredientBased // + + private class IngredientBased(private val ingredient: FluidIngredient, amount: Int) : HTFluidIngredient(amount) { + companion object { + @JvmField + val CODEC: BiCodec = BiCodec.composite( + VanillaMapBiCodecs.FLUID_INGREDIENT, + IngredientBased::ingredient, + BiCodecs.POSITIVE_INT.fieldOf("amount"), + IngredientBased::amount, + ::IngredientBased, + ) + } + + override fun testOnlyType(stack: ImmutableFluidStack): Boolean = ingredient.test(stack.unwrap()) + + override fun hasNoMatchingStacks(): Boolean = ingredient.hasNoFluids() + + override fun unwrap(): Either, Int>, List> = + Either.right(ingredient.stacks.mapNotNull(FluidStack::toImmutable)) } } diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTIngredient.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTIngredient.kt index b7b2189c2..1bc0f81a9 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTIngredient.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTIngredient.kt @@ -8,9 +8,9 @@ import java.util.function.Predicate /** * [STACK]を判定するインターフェース * @param STACK 判定の対象となるクラス - * @see [HTItemIngredient] - * @see [HTFluidIngredient] - * @see [mekanism.api.recipes.ingredients.InputIngredient] + * @see HTItemIngredient + * @see HTFluidIngredient + * @see mekanism.api.recipes.ingredients.InputIngredient */ interface HTIngredient> : Predicate { /** diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTItemIngredient.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTItemIngredient.kt index 1727b6bc4..67e77c431 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTItemIngredient.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/ingredient/HTItemIngredient.kt @@ -1,19 +1,134 @@ package hiiragi283.ragium.api.recipe.ingredient +import com.mojang.datafixers.util.Either +import hiiragi283.ragium.api.serialization.codec.BiCodec +import hiiragi283.ragium.api.serialization.codec.BiCodecs +import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs +import hiiragi283.ragium.api.serialization.codec.VanillaMapBiCodecs import hiiragi283.ragium.api.stack.ImmutableItemStack import hiiragi283.ragium.api.stack.toImmutable +import net.minecraft.core.Holder +import net.minecraft.core.HolderSet +import net.minecraft.core.registries.Registries +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.crafting.Ingredient /** - * [ItemStack]向けの[HTIngredient]の拡張インターフェース + * [ImmutableItemStack]向けの[HTIngredient]の拡張インターフェース */ -interface HTItemIngredient : HTIngredient { +sealed class HTItemIngredient(protected val count: Int) : HTIngredient { + fun interface CountGetter { + fun getRequiredCount(stack: ImmutableItemStack): Int + } + + companion object { + @JvmField + val CODEC: BiCodec = BiCodecs + .xor(HolderBased.CODEC, IngredientBased.CODEC) + .xmap(Either::unwrap) { ingredient: HTItemIngredient -> + when (ingredient) { + is HolderBased -> Either.left(ingredient) + is IngredientBased -> Either.right(ingredient) + } + } + + @JvmStatic + fun of(holderSet: HolderSet, count: Int = 1): HTItemIngredient = HolderBased(holderSet, count) + + @JvmStatic + fun of(ingredient: Ingredient, count: Int = 1): HTItemIngredient = IngredientBased(ingredient, count) + } + fun test(stack: ItemStack): Boolean = stack.toImmutable()?.let(this::test) ?: false fun testOnlyType(stack: ItemStack): Boolean = stack.toImmutable()?.let(this::testOnlyType) ?: false - fun interface CountGetter { - fun getRequiredCount(stack: ImmutableItemStack): Int + final override fun test(stack: ImmutableItemStack): Boolean = testOnlyType(stack) && stack.amount() >= this.count + + final override fun getRequiredAmount(stack: ImmutableItemStack): Int = if (test(stack)) this.count else 0 + + // HolderBased // + + private class HolderBased(private val holderSet: HolderSet, count: Int) : HTItemIngredient(count) { + companion object { + @JvmStatic + private val ENTRY_CODEC: BiCodec> = VanillaBiCodecs.holderSet(Registries.ITEM) + + @JvmStatic + private val FLAT_CODEC: BiCodec = + ENTRY_CODEC.xmap(::HolderBased, HolderBased::holderSet) + + @JvmStatic + private val CODEC_WITH_COUNT: BiCodec = BiCodec.composite( + VanillaBiCodecs.holderSet(Registries.ITEM).fieldOf("items"), + HolderBased::holderSet, + BiCodecs.POSITIVE_INT.optionalFieldOf("count", 1), + HolderBased::count, + ::HolderBased, + ) + + @JvmField + val CODEC: BiCodec = BiCodecs + .xor(FLAT_CODEC, CODEC_WITH_COUNT) + .xmap(Either::unwrap) { ingredient: HolderBased -> + when (ingredient.count) { + 1 -> Either.left(ingredient) + else -> Either.right(ingredient) + } + } + } + private constructor(holderSet: HolderSet) : this(holderSet, 1) + + override fun testOnlyType(stack: ImmutableItemStack): Boolean = stack.isOf(holderSet) + + override fun hasNoMatchingStacks(): Boolean = holderSet.none() + + override fun unwrap(): Either, Int>, List> = holderSet.unwrap().map( + { Either.left(it to count) }, + { holders: List> -> + Either.right(holders.map { holder: Holder -> ImmutableItemStack.of(holder.value(), count) }) + }, + ) + } + + // IngredientBased // + + private class IngredientBased(private val ingredient: Ingredient, count: Int) : HTItemIngredient(count) { + companion object { + @JvmStatic + private val FLAT_CODEC: BiCodec = VanillaBiCodecs + .ingredient(false) + .xmap(::IngredientBased, IngredientBased::ingredient) + + @JvmStatic + private val CODEC_WITH_COUNT: BiCodec = BiCodec.composite( + VanillaMapBiCodecs.INGREDIENT, + IngredientBased::ingredient, + BiCodecs.POSITIVE_INT.optionalFieldOf("count", 1), + IngredientBased::count, + ::IngredientBased, + ) + + @JvmField + val CODEC: BiCodec = BiCodecs + .either(FLAT_CODEC, CODEC_WITH_COUNT) + .xmap(Either::unwrap) { ingredient: IngredientBased -> + when (ingredient.count) { + 1 -> Either.left(ingredient) + else -> Either.right(ingredient) + } + } + } + private constructor(ingredient: Ingredient) : this(ingredient, 1) + + override fun testOnlyType(stack: ImmutableItemStack): Boolean = ingredient.test(stack.unwrap()) + + override fun hasNoMatchingStacks(): Boolean = ingredient.isEmpty + + override fun unwrap(): Either, Int>, List> = + Either.right(ingredient.items.mapNotNull(ItemStack::toImmutable)) } } diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTChancedItemResult.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTChancedItemResult.kt index 0ba9c5384..545f14719 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTChancedItemResult.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTChancedItemResult.kt @@ -2,7 +2,10 @@ package hiiragi283.ragium.api.recipe.result import hiiragi283.ragium.api.data.recipe.HTResultHelper import hiiragi283.ragium.api.serialization.codec.BiCodec +import hiiragi283.ragium.api.stack.ImmutableItemStack +import net.minecraft.core.HolderLookup import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.util.RandomSource /** * 確率付きの完成品を表すクラス @@ -23,5 +26,10 @@ data class HTChancedItemResult(val base: HTItemResult, val chance: Float) : HTIt constructor(base: HTItemResult) : this(base, 1f) + fun getStackOrNull(provider: HolderLookup.Provider?, random: RandomSource): ImmutableItemStack? = when { + chance > random.nextFloat() -> base.getStackOrNull(provider) + else -> null + } + override fun copyWithCount(count: Int): HTChancedItemResult = HTChancedItemResult(base.copyWithCount(count), chance) } diff --git a/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTRecipeResult.kt b/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTRecipeResult.kt index 3788c8642..890ce8bcd 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTRecipeResult.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/recipe/result/HTRecipeResult.kt @@ -7,8 +7,8 @@ import net.minecraft.resources.ResourceLocation /** * レシピの完成品を表すインターフェース * @param STACK 完成品のクラス - * @see [HTItemResult] - * @see [HTFluidResult] + * @see HTItemResult + * @see HTFluidResult */ interface HTRecipeResult> { /** diff --git a/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredItemRegister.kt b/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredItemRegister.kt index 79f7b62fe..2af144575 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredItemRegister.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredItemRegister.kt @@ -14,7 +14,7 @@ import java.util.function.Supplier import java.util.function.UnaryOperator /** - * @see [Items] + * @see net.neoforged.neoforge.registries.DeferredRegister.Items */ class HTDeferredItemRegister(namespace: String) : HTDeferredRegister(Registries.ITEM, namespace) { fun registerItem( diff --git a/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredMaterialPrefixRegister.kt b/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredMaterialPrefixRegister.kt deleted file mode 100644 index 1ac6b841f..000000000 --- a/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredMaterialPrefixRegister.kt +++ /dev/null @@ -1,17 +0,0 @@ -package hiiragi283.ragium.api.registry.impl - -import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.material.HTMaterialPrefix -import hiiragi283.ragium.api.registry.HTDeferredRegister - -class HTDeferredMaterialPrefixRegister(namespace: String) : - HTDeferredRegister( - RagiumAPI.MATERIAL_PREFIX_KEY, - namespace, - ) { - fun register(name: String, commonTagPath: String = "c:${name}s", tagPath: String = "$commonTagPath/%s"): HTMaterialPrefix { - val prefix = HTMaterialPrefix(name, commonTagPath, tagPath) - register(prefix.name) { _ -> prefix } - return prefix - } -} diff --git a/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredMenuType.kt b/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredMenuType.kt index 82bf1857b..08322e051 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredMenuType.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/registry/impl/HTDeferredMenuType.kt @@ -6,6 +6,8 @@ import hiiragi283.ragium.api.inventory.container.type.HTItemContainerFactory import hiiragi283.ragium.api.inventory.container.type.HTItemMenuType import hiiragi283.ragium.api.inventory.container.type.HTMenuTypeWithContext import hiiragi283.ragium.api.registry.HTDeferredHolder +import hiiragi283.ragium.api.stack.ImmutableItemStack +import hiiragi283.ragium.api.stack.toImmutable import net.minecraft.core.registries.Registries import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.network.chat.Component @@ -93,22 +95,27 @@ sealed class HTDeferredMenuType InteractionResult.SUCCESS else -> { val provider: MenuProvider = getProvider(hand, stack) ?: return InteractionResult.FAIL diff --git a/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodec.kt b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodec.kt index b9089ddb0..2bc1d7ffa 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodec.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodec.kt @@ -19,8 +19,6 @@ import java.util.function.UnaryOperator /** * [Codec]と[StreamCodec]を束ねたデータクラス - * @see [BiCodecs] - * @see [MapBiCodec] */ @ConsistentCopyVisibility @JvmRecord diff --git a/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodecs.kt b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodecs.kt index 3a8d0efa5..5648b6bc7 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodecs.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/BiCodecs.kt @@ -28,7 +28,7 @@ object BiCodecs { /** * `0`以上の値を対象とする[Long]の[BiCodec] - * @see [mekanism.api.SerializerHelper.POSITIVE_LONG_CODEC] + * @see mekanism.api.SerializerHelper.POSITIVE_LONG_CODEC */ @JvmField val NON_NEGATIVE_LONG: BiCodec = BiCodec.LONG.ranged(0..Long.MAX_VALUE) @@ -41,7 +41,7 @@ object BiCodecs { /** * `1`以上の値を対象とする[Long]の[BiCodec] - * @see [mekanism.api.SerializerHelper.POSITIVE_NONZERO_LONG_CODEC] + * @see mekanism.api.SerializerHelper.POSITIVE_NONZERO_LONG_CODEC */ @JvmField val POSITIVE_LONG: BiCodec = BiCodec.LONG.ranged(1..Long.MAX_VALUE) diff --git a/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/MapBiCodec.kt b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/MapBiCodec.kt index a36cdfe4a..fa8a1af6d 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/MapBiCodec.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/MapBiCodec.kt @@ -12,8 +12,6 @@ import java.util.function.UnaryOperator /** * [MapCodec]と[StreamCodec]を束ねたデータクラス - * @see [BiCodec] - * @see [BiCodecs] */ @ConsistentCopyVisibility @JvmRecord diff --git a/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/VanillaMapBiCodecs.kt b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/VanillaMapBiCodecs.kt new file mode 100644 index 000000000..66db347fd --- /dev/null +++ b/src/api/kotlin/hiiragi283/ragium/api/serialization/codec/VanillaMapBiCodecs.kt @@ -0,0 +1,19 @@ +package hiiragi283.ragium.api.serialization.codec + +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.world.item.crafting.Ingredient +import net.neoforged.neoforge.fluids.crafting.FluidIngredient + +object VanillaMapBiCodecs { + @JvmField + val INGREDIENT: MapBiCodec = MapBiCodec.of( + Ingredient.MAP_CODEC_NONEMPTY, + Ingredient.CONTENTS_STREAM_CODEC, + ) + + @JvmField + val FLUID_INGREDIENT: MapBiCodec = MapBiCodec.of( + FluidIngredient.MAP_CODEC_NONEMPTY, + FluidIngredient.STREAM_CODEC, + ) +} diff --git a/src/api/kotlin/hiiragi283/ragium/api/tag/RagiumModTags.kt b/src/api/kotlin/hiiragi283/ragium/api/tag/RagiumModTags.kt index 01944f10b..ea3a1341a 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/tag/RagiumModTags.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/tag/RagiumModTags.kt @@ -65,6 +65,9 @@ object RagiumModTags { // Items // object Items { + @JvmField + val BYPASS_MENU_VALIDATION: TagKey = create("bypass_menu_validation") + @JvmField val ELDRITCH_PEARL_BINDER: TagKey = create("eldritch_pearl_binder") diff --git a/src/api/kotlin/hiiragi283/ragium/api/tier/HTBaseTier.kt b/src/api/kotlin/hiiragi283/ragium/api/tier/HTBaseTier.kt index 08f3ed5ba..3a8d3a9cf 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/tier/HTBaseTier.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/tier/HTBaseTier.kt @@ -10,7 +10,7 @@ import net.minecraft.util.StringRepresentable /** * Ragiumで使用する基本のティア - * @see [mekanism.api.tier.BaseTier] + * @see mekanism.api.tier.BaseTier */ enum class HTBaseTier(val color: ChatFormatting, private val enName: String, private val jpName: String) : StringRepresentable, diff --git a/src/api/kotlin/hiiragi283/ragium/api/util/HTContentListener.kt b/src/api/kotlin/hiiragi283/ragium/api/util/HTContentListener.kt index 4a29a61e9..336e045c5 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/util/HTContentListener.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/util/HTContentListener.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.api.util /** * 変化が起きた時に呼び出されるインターフェース - * @see [mekanism.api.IContentsListener] + * @see mekanism.api.IContentsListener */ fun interface HTContentListener : Runnable { fun onContentsChanged() diff --git a/src/api/kotlin/hiiragi283/ragium/api/util/HTRelativeDirection.kt b/src/api/kotlin/hiiragi283/ragium/api/util/HTRelativeDirection.kt index e97cdb241..e875f6c72 100644 --- a/src/api/kotlin/hiiragi283/ragium/api/util/HTRelativeDirection.kt +++ b/src/api/kotlin/hiiragi283/ragium/api/util/HTRelativeDirection.kt @@ -5,7 +5,7 @@ import net.minecraft.util.StringRepresentable /** * 相対的な方角を管理するクラス - * @see [Direction] + * @see Direction */ enum class HTRelativeDirection : StringRepresentable { DOWN, diff --git a/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementGenerator.kt b/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementGenerator.kt index f19de032b..56b2b7792 100644 --- a/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementGenerator.kt +++ b/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementGenerator.kt @@ -1,8 +1,8 @@ package hiiragi283.ragium.api.data.advancement import hiiragi283.ragium.api.material.HTMaterialKey -import hiiragi283.ragium.api.material.HTMaterialPrefix import hiiragi283.ragium.api.registry.HTItemHolderLike +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.tags.TagKey @@ -32,7 +32,7 @@ abstract class HTAdvancementGenerator { protected inline fun createSimple( key: HTAdvancementKey, parent: HTAdvancementKey, - prefix: HTMaterialPrefix, + prefix: CommonMaterialPrefixes, material: HTMaterialKey, builderAction: HTDisplayInfoBuilder.() -> Unit = {}, ) { diff --git a/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementProvider.kt b/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementProvider.kt index 0fb2dc24d..7aebd1750 100644 --- a/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/api/data/advancement/HTAdvancementProvider.kt @@ -17,7 +17,7 @@ import java.nio.file.Path import java.util.concurrent.CompletableFuture /** - * @see [AdvancementProvider] + * @see AdvancementProvider */ open class HTAdvancementProvider( output: PackOutput, diff --git a/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTLanguageProvider.kt b/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTLanguageProvider.kt index e169edc8a..680872840 100644 --- a/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTLanguageProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTLanguageProvider.kt @@ -9,7 +9,7 @@ import hiiragi283.ragium.api.data.advancement.descKey import hiiragi283.ragium.api.data.advancement.titleKey import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.HTHolderLike import hiiragi283.ragium.api.registry.impl.HTDeferredBlock @@ -23,7 +23,6 @@ import hiiragi283.ragium.common.integration.RagiumReplicationAddon import hiiragi283.ragium.common.integration.food.RagiumDelightAddon import hiiragi283.ragium.common.integration.food.RagiumKaleidoCookeryAddon import hiiragi283.ragium.common.material.RagiumEssenceType -import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.RagiumMoltenCrystalData import hiiragi283.ragium.common.tier.HTCrateTier import hiiragi283.ragium.common.tier.HTDrumTier @@ -59,8 +58,7 @@ abstract class HTLanguageProvider(output: PackOutput, val type: HTLanguageType) fromMapWithRow(HTSimpleLangPattern("%s Coil", "%sコイル"), RagiumItems.COILS) fromMapWithRow(HTSimpleLangPattern("%s Component", "%s構造体"), RagiumItems.COMPONENTS) - fromMapWithColumn(RagiumMaterialKeys.AZURE_STEEL, RagiumItems.AZURE_ARMORS) - fromMapWithColumn(RagiumMaterialKeys.DEEP_STEEL, RagiumItems.DEEP_ARMORS) + fromVariantTable(RagiumItems.ARMORS) fromVariantTable(RagiumItems.TOOLS) addTranslations(HTCrateTier.entries, HTCrateTier::getBlock) @@ -101,11 +99,6 @@ abstract class HTLanguageProvider(output: PackOutput, val type: HTLanguageType) } } - private fun fromMapWithColumn(material: HTMaterialLike, map: Map) { - val langName: HTLangName = HTMaterialTranslations.getLangName(material) ?: return - fromMapWithColumn(langName, map) - } - private fun fromMapWithColumn(translatedName: HTLangName, map: Map) { for ((variant: HTVariantKey, translationKey: HTHasTranslationKey) in map) { add(translationKey, variant.translate(type, translatedName)) @@ -119,8 +112,8 @@ abstract class HTLanguageProvider(output: PackOutput, val type: HTLanguageType) } } - private fun fromMaterialTable(table: ImmutableTable) { - table.forEach { (prefix: HTMaterialPrefix, key: HTMaterialKey, translationKey: HTHasTranslationKey) -> + private fun fromMaterialTable(table: ImmutableTable) { + table.forEach { (prefix: HTPrefixLike, key: HTMaterialKey, translationKey: HTHasTranslationKey) -> val translatedName: String = HTMaterialTranslations.translate(type, prefix, key) ?: return@forEach add(translationKey, translatedName) } diff --git a/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTMaterialTranslations.kt b/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTMaterialTranslations.kt index d0516e5a6..1c8681c01 100644 --- a/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTMaterialTranslations.kt +++ b/src/data/kotlin/hiiragi283/ragium/api/data/lang/HTMaterialTranslations.kt @@ -5,47 +5,61 @@ import hiiragi283.ragium.api.collection.ImmutableTable import hiiragi283.ragium.api.collection.buildTable import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix import hiiragi283.ragium.api.material.attribute.HTLangNameMaterialAttribute import hiiragi283.ragium.api.material.get +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike +import hiiragi283.ragium.common.material.CommonMaterialPrefixes +import hiiragi283.ragium.common.material.MekanismMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys -import hiiragi283.ragium.setup.CommonMaterialPrefixes -import hiiragi283.ragium.setup.MekanismMaterialPrefixes object HTMaterialTranslations { @JvmField val PREFIX_MAP: Map = buildMap { + fun register(prefix: HTPrefixLike, enPattern: String, jaPattern: String) { + this[prefix.asMaterialPrefix()] = HTSimpleLangPattern(enPattern, jaPattern) + } + // Block - this[CommonMaterialPrefixes.GLASS_BLOCK] = HTSimpleLangPattern("%s Glass", "%sガラス") - this[CommonMaterialPrefixes.GLASS_BLOCK_TINTED] = HTSimpleLangPattern("Tinted %s Glass", "遮光%sガラス") - this[CommonMaterialPrefixes.STORAGE_BLOCK] = HTSimpleLangPattern("Block of %s", "%sブロック") - this[CommonMaterialPrefixes.RAW_STORAGE_BLOCK] = HTSimpleLangPattern("Block of Raw %s", "%sの原石ブロック") + register(CommonMaterialPrefixes.GLASS_BLOCK, "%s Glass", "%sガラス") + register(CommonMaterialPrefixes.GLASS_BLOCK_TINTED, "Tinted %s Glass", "遮光%sガラス") + register(CommonMaterialPrefixes.STORAGE_BLOCK, "Block of %s", "%sブロック") + register(CommonMaterialPrefixes.RAW_STORAGE_BLOCK, "Block of Raw %s", "%sの原石ブロック") // Item - this[CommonMaterialPrefixes.DUST] = HTSimpleLangPattern("%s Dust", "%sの粉") - this[CommonMaterialPrefixes.GEM] = HTSimpleLangPattern("%s", "%s") - this[CommonMaterialPrefixes.GEAR] = HTSimpleLangPattern("%s Gear", "%sの歯車") - this[CommonMaterialPrefixes.INGOT] = HTSimpleLangPattern("%s Ingot", "%sインゴット") - this[CommonMaterialPrefixes.NUGGET] = HTSimpleLangPattern("%s Nugget", "%sナゲット") - this[CommonMaterialPrefixes.PLATE] = HTSimpleLangPattern("%s Plate", "%s板") - this[CommonMaterialPrefixes.RAW_MATERIAL] = HTSimpleLangPattern("Raw %s", "%sの原石") - this[CommonMaterialPrefixes.ROD] = HTSimpleLangPattern("%s Rod", "%s棒") + register(CommonMaterialPrefixes.DUST, "%s Dust", "%sの粉") + register(CommonMaterialPrefixes.GEM, "%s", "%s") + register(CommonMaterialPrefixes.GEAR, "%s Gear", "%sの歯車") + register(CommonMaterialPrefixes.INGOT, "%s Ingot", "%sインゴット") + register(CommonMaterialPrefixes.NUGGET, "%s Nugget", "%sナゲット") + register(CommonMaterialPrefixes.PLATE, "%s Plate", "%s板") + register(CommonMaterialPrefixes.RAW_MATERIAL, "Raw %s", "%sの原石") + register(CommonMaterialPrefixes.ROD, "%s Rod", "%s棒") - this[CommonMaterialPrefixes.FUEL] = HTSimpleLangPattern("%s", "%s") - this[CommonMaterialPrefixes.SCRAP] = HTSimpleLangPattern("%s Scrap", "%sの欠片") + register(CommonMaterialPrefixes.FUEL, "%s", "%s") + register(CommonMaterialPrefixes.SCRAP, "%s Scrap", "%sの欠片") - this[MekanismMaterialPrefixes.DIRTY_DUST] = HTSimpleLangPattern("Dirty %s Dust", "汚れた%sの粉") - this[MekanismMaterialPrefixes.CLUMP] = HTSimpleLangPattern("%s Clump", "%sの塊") - this[MekanismMaterialPrefixes.SHARD] = HTSimpleLangPattern("%s Shard", "%sの欠片") - this[MekanismMaterialPrefixes.CRYSTAL] = HTSimpleLangPattern("%s Crystal", "%sの結晶") - this[MekanismMaterialPrefixes.PELLET] = HTSimpleLangPattern("%s Pellet", "%sペレット") - this[MekanismMaterialPrefixes.ENRICHED] = HTSimpleLangPattern("Enriched %s", "濃縮%s") + register(MekanismMaterialPrefixes.DIRTY_DUST, "Dirty %s Dust", "汚れた%sの粉") + register(MekanismMaterialPrefixes.CLUMP, "%s Clump", "%sの塊") + register(MekanismMaterialPrefixes.SHARD, "%s Shard", "%sの欠片") + register(MekanismMaterialPrefixes.CRYSTAL, "%s Crystal", "%sの結晶") + register(MekanismMaterialPrefixes.PELLET, "%s Pellet", "%sペレット") + register(MekanismMaterialPrefixes.ENRICHED, "Enriched %s", "濃縮%s") } @JvmStatic val MATERIAL_MAP: ImmutableTable = buildTable { - this[CommonMaterialPrefixes.DUST, VanillaMaterialKeys.WOOD] = HTSimpleLangName("Sawdust", "おがくず") - this[CommonMaterialPrefixes.DUST, RagiumMaterialKeys.MEAT] = HTSimpleLangName("Minced Meat", "ひき肉") + fun register( + prefix: HTPrefixLike, + material: HTMaterialLike, + enName: String, + jaName: String, + ) { + this[prefix.asMaterialPrefix(), material.asMaterialKey()] = HTSimpleLangName(enName, jaName) + } + + register(CommonMaterialPrefixes.DUST, VanillaMaterialKeys.WOOD, "Sawdust", "おがくず") + register(CommonMaterialPrefixes.DUST, RagiumMaterialKeys.MEAT, "Minced Meat", "ひき肉") } fun getLangName(material: HTMaterialLike): HTLangName? = (material as? HTLangName) @@ -53,8 +67,8 @@ object HTMaterialTranslations { .getMaterialDefinition(material.asMaterialKey()) .get() - fun translate(type: HTLanguageType, prefix: HTMaterialPrefix, key: HTMaterialKey): String? { - val customName: HTLangName? = MATERIAL_MAP[prefix, key] + fun translate(type: HTLanguageType, prefix: HTPrefixLike, key: HTMaterialKey): String? { + val customName: HTLangName? = MATERIAL_MAP[prefix.asMaterialPrefix(), key] if (customName != null) { return customName.getTranslatedName(type) } else { diff --git a/src/data/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeProvider.kt index fc5882ceb..052c4e71a 100644 --- a/src/data/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/api/data/recipe/HTRecipeProvider.kt @@ -5,7 +5,7 @@ import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.ingredient.HTFluidIngredientCreator import hiiragi283.ragium.api.data.recipe.ingredient.HTItemIngredientCreator import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.recipe.ingredient.HTFluidIngredient import hiiragi283.ragium.api.recipe.ingredient.HTItemIngredient import hiiragi283.ragium.api.recipe.result.HTFluidResult @@ -13,6 +13,7 @@ import hiiragi283.ragium.api.recipe.result.HTItemResult import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.HTItemHolderLike import hiiragi283.ragium.api.registry.toId +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.common.recipe.HTClearComponentRecipe import hiiragi283.ragium.common.tier.HTComponentTier @@ -23,7 +24,6 @@ import hiiragi283.ragium.impl.data.recipe.HTSingleItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTSmithingRecipeBuilder import hiiragi283.ragium.impl.data.recipe.ingredient.HTFluidIngredientCreatorImpl import hiiragi283.ragium.impl.data.recipe.ingredient.HTItemIngredientCreatorImpl -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumItems import net.minecraft.advancements.Advancement import net.minecraft.advancements.AdvancementHolder @@ -143,7 +143,7 @@ sealed class HTRecipeProvider { protected fun ingotOrRod(material: HTMaterialLike): Ingredient = multiVariants(material, CommonMaterialPrefixes.INGOT, CommonMaterialPrefixes.ROD) - protected fun multiVariants(material: HTMaterialLike, vararg prefixes: HTMaterialPrefix): Ingredient = prefixes + protected fun multiVariants(material: HTMaterialLike, vararg prefixes: HTPrefixLike): Ingredient = prefixes .map { it.itemTagKey(material) } .map(Ingredient::TagValue) .stream() diff --git a/src/data/kotlin/hiiragi283/ragium/data/client/RagiumBlockStateProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/client/RagiumBlockStateProvider.kt index b4c9e5b06..5793d6f19 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/client/RagiumBlockStateProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/client/RagiumBlockStateProvider.kt @@ -14,9 +14,9 @@ import hiiragi283.ragium.api.registry.toId import hiiragi283.ragium.api.registry.vanillaId import hiiragi283.ragium.common.block.HTCropBlock import hiiragi283.ragium.common.integration.food.RagiumDelightAddon +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.variant.HTDecorationVariant import hiiragi283.ragium.common.variant.HTOreVariant -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumFluidContents import net.minecraft.core.Direction @@ -58,7 +58,7 @@ class RagiumBlockStateProvider(context: HTDataGenContext) : BlockStateProvider(c add(RagiumBlocks.CEU) addAll(RagiumBlocks.DECORATION_MAP.values) - addAll(RagiumBlocks.MATERIALS.rowValues(CommonMaterialPrefixes.STORAGE_BLOCK)) + addAll(RagiumBlocks.getMaterialMap(CommonMaterialPrefixes.STORAGE_BLOCK).values) add(RagiumBlocks.DEVICE_CASING) }.forEach(::simpleBlockAndItem) @@ -82,8 +82,8 @@ class RagiumBlockStateProvider(context: HTDataGenContext) : BlockStateProvider(c itemModels().withExistingParent(block.getPath(), RagiumAPI.id("block", "led_block")) } - RagiumBlocks.MATERIALS.rowValues(CommonMaterialPrefixes.GLASS_BLOCK).forEach(::cutoutSimpleBlock) - RagiumBlocks.MATERIALS.rowValues(CommonMaterialPrefixes.GLASS_BLOCK_TINTED).forEach(::translucentSimpleBlock) + RagiumBlocks.getMaterialMap(CommonMaterialPrefixes.GLASS_BLOCK).values.forEach(::cutoutSimpleBlock) + RagiumBlocks.getMaterialMap(CommonMaterialPrefixes.GLASS_BLOCK_TINTED).values.forEach(::translucentSimpleBlock) RagiumBlocks.COILS.values.forEach(::cubeColumn) diff --git a/src/data/kotlin/hiiragi283/ragium/data/client/RagiumEnglishProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/client/RagiumEnglishProvider.kt index 81aec24c1..31173b75a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/client/RagiumEnglishProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/client/RagiumEnglishProvider.kt @@ -295,7 +295,6 @@ class RagiumEnglishProvider(output: PackOutput) : HTLanguageProvider.English(out private fun keyMapping() { add(RagiumTranslation.KEY_CATEGORY, "Ragium") - add(RagiumKeyMappings.OPEN_POTION_BUNDLE, "Open Potion Bundle") add(RagiumKeyMappings.OPEN_UNIVERSAL_BUNDLE, "Open Universal Bundle") } diff --git a/src/data/kotlin/hiiragi283/ragium/data/client/RagiumJapaneseProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/client/RagiumJapaneseProvider.kt index 0fdd7745d..11c1afe86 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/client/RagiumJapaneseProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/client/RagiumJapaneseProvider.kt @@ -301,7 +301,6 @@ class RagiumJapaneseProvider(output: PackOutput) : HTLanguageProvider.Japanese(o private fun keyMapping() { add(RagiumTranslation.KEY_CATEGORY, "Ragium") - add(RagiumKeyMappings.OPEN_POTION_BUNDLE, "ポーションバンドルを開く") add(RagiumKeyMappings.OPEN_UNIVERSAL_BUNDLE, "共有バンドルを開く") } diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/RagiumDataMapProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/RagiumDataMapProvider.kt index f37aa0399..6b8bc1aeb 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/RagiumDataMapProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/RagiumDataMapProvider.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.data.server +import com.enderio.base.common.init.EIOBlocks import de.ellpeck.actuallyadditions.mod.fluids.InitFluids import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConst @@ -8,8 +9,9 @@ import hiiragi283.ragium.api.data.map.HTFluidFuelData import hiiragi283.ragium.api.data.map.HTMobHead import hiiragi283.ragium.api.data.map.MapDataMapValueRemover import hiiragi283.ragium.api.data.map.RagiumDataMaps +import hiiragi283.ragium.api.data.map.equip.HTMobEffectEquipAction import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.HTHolderLike @@ -17,10 +19,10 @@ import hiiragi283.ragium.api.registry.toHolderLike import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.api.tag.createCommonTag +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.impl.data.map.HTCrushingMaterialRecipeData import hiiragi283.ragium.impl.data.map.HTRawSmeltingMaterialRecipeData -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems import net.minecraft.core.Holder @@ -28,17 +30,18 @@ import net.minecraft.core.HolderLookup import net.minecraft.core.registries.Registries import net.minecraft.resources.ResourceLocation import net.minecraft.tags.EnchantmentTags +import net.minecraft.world.effect.MobEffects import net.minecraft.world.entity.EntityType import net.minecraft.world.item.Item import net.minecraft.world.item.Items import net.minecraft.world.item.enchantment.LevelBasedValue import net.minecraft.world.level.material.Fluid +import net.neoforged.neoforge.common.conditions.ICondition import net.neoforged.neoforge.common.conditions.ModLoadedCondition import net.neoforged.neoforge.common.data.DataMapProvider import net.neoforged.neoforge.registries.datamaps.builtin.Compostable import net.neoforged.neoforge.registries.datamaps.builtin.FurnaceFuel import net.neoforged.neoforge.registries.datamaps.builtin.NeoForgeDataMaps -import java.util.function.Supplier @Suppress("DEPRECATION") class RagiumDataMapProvider(context: HTDataGenContext) : DataMapProvider(context.output, context.registries) { @@ -50,12 +53,15 @@ class RagiumDataMapProvider(context: HTDataGenContext) : DataMapProvider(context compostables() furnaceFuels() + enchFactories() + + mobHead() + thermalFuels() combustionFuels() nuclearFuels() - enchFactories() - mobHead() + armorEquip() materialRecipe() } @@ -80,63 +86,66 @@ class RagiumDataMapProvider(context: HTDataGenContext) : DataMapProvider(context // Ragium // + private fun enchFactories() { + builder(RagiumDataMaps.ENCHANT_FUEL) + .add(EnchantmentTags.TREASURE, LevelBasedValue.perLevel(3f), false) + .add(EnchantmentTags.CURSE, LevelBasedValue.perLevel(-1f), false) + } + + private fun mobHead() { + builder(RagiumDataMaps.MOB_HEAD) + .add(EntityType.SKELETON, HTMobHead(Items.SKELETON_SKULL)) + .add(EntityType.WITHER_SKELETON, HTMobHead(Items.WITHER_SKELETON_SKULL)) + .add(EntityType.ZOMBIE, HTMobHead(Items.ZOMBIE_HEAD)) + .add(EntityType.CREEPER, HTMobHead(Items.CREEPER_HEAD)) + .add(EntityType.ENDER_DRAGON, HTMobHead(Items.DRAGON_HEAD)) + .add(EntityType.PIGLIN, HTMobHead(Items.PIGLIN_HEAD)) + // EIO Integration + .add(EntityType.ENDERMAN, HTMobHead(EIOBlocks.ENDERMAN_HEAD), ModLoadedCondition(RagiumConst.EIO_BASE)) + } + private fun thermalFuels() { builder(RagiumDataMaps.THERMAL_FUEL) - .add("steam", 100) - .add(HTFluidContent.LAVA, 10) - .add("blaze_blood", 5) + .add("steam", HTFluidFuelData(100)) + .add(HTFluidContent.LAVA, HTFluidFuelData(10)) + .add("blaze_blood", HTFluidFuelData(5)) } private fun combustionFuels() { builder(RagiumDataMaps.COMBUSTION_FUEL) // lowest - .add(RagiumFluidContents.CRUDE_OIL, 100) - .add("oil", 100) - .add("creosote", 100) + .add(RagiumFluidContents.CRUDE_OIL, HTFluidFuelData(100)) + .add("oil", HTFluidFuelData(100)) + .add("creosote", HTFluidFuelData(100)) // low - .add(InitFluids.CANOLA_OIL, HTFluidFuelData(50)) + .add(InitFluids.CANOLA_OIL.get(), HTFluidFuelData(50), ModLoadedCondition(RagiumConst.ACTUALLY)) // medium - .add(RagiumFluidContents.NATURAL_GAS, 20) - .add("ethanol", 20) - .add("bioethanol", 20) - .add("lpg", 20) - .add(InitFluids.REFINED_CANOLA_OIL, HTFluidFuelData(20)) + .add(RagiumFluidContents.NATURAL_GAS, HTFluidFuelData(20)) + .add("ethanol", HTFluidFuelData(20)) + .add("bioethanol", HTFluidFuelData(20)) + .add("lpg", HTFluidFuelData(20)) + .add(InitFluids.REFINED_CANOLA_OIL.get(), HTFluidFuelData(20), ModLoadedCondition(RagiumConst.ACTUALLY)) // high - .add(RagiumFluidContents.FUEL, 10) - .add("diesel", 10) - .add("biodiesel", 10) - .add(InitFluids.CRYSTALLIZED_OIL, HTFluidFuelData(10)) + .add(RagiumFluidContents.FUEL, HTFluidFuelData(10)) + .add("diesel", HTFluidFuelData(10)) + .add("biodiesel", HTFluidFuelData(10)) + .add(InitFluids.CRYSTALLIZED_OIL.get(), HTFluidFuelData(10), ModLoadedCondition(RagiumConst.ACTUALLY)) // highest - .add(RagiumFluidContents.CRIMSON_FUEL, 5) - .add("high_power_biodiesel", 5) - .add(InitFluids.EMPOWERED_OIL, HTFluidFuelData(5)) + .add(RagiumFluidContents.CRIMSON_FUEL, HTFluidFuelData(5)) + .add("high_power_biodiesel", HTFluidFuelData(5)) + .add(InitFluids.EMPOWERED_OIL.get(), HTFluidFuelData(5), ModLoadedCondition(RagiumConst.ACTUALLY)) } private fun nuclearFuels() { builder(RagiumDataMaps.NUCLEAR_FUEL) - .add(RagiumFluidContents.GREEN_FUEL, 5) + .add(RagiumFluidContents.GREEN_FUEL, HTFluidFuelData(5)) } - private fun enchFactories() { - builder(RagiumDataMaps.ENCHANT_FUEL) - .add(EnchantmentTags.TREASURE, LevelBasedValue.perLevel(3f), false) - .add(EnchantmentTags.CURSE, LevelBasedValue.perLevel(-1f), false) + private fun armorEquip() { + builder(RagiumDataMaps.ARMOR_EQUIP) + .addHolder(RagiumItems.NIGHT_VISION_GOGGLES, HTMobEffectEquipAction(MobEffects.NIGHT_VISION, -1, ambient = true)) } - // Mob Head // - - private fun mobHead() { - builder(RagiumDataMaps.MOB_HEAD) - .add(EntityType.SKELETON, HTMobHead(Items.SKELETON_SKULL)) - .add(EntityType.WITHER_SKELETON, HTMobHead(Items.WITHER_SKELETON_SKULL)) - .add(EntityType.ZOMBIE, HTMobHead(Items.ZOMBIE_HEAD)) - .add(EntityType.CREEPER, HTMobHead(Items.CREEPER_HEAD)) - .add(EntityType.ENDER_DRAGON, HTMobHead(Items.DRAGON_HEAD)) - .add(EntityType.PIGLIN, HTMobHead(Items.PIGLIN_HEAD)) - } - - // Material Recipe // - private fun materialRecipe() { MapDataMapBuilder(builder(RagiumDataMaps.MATERIAL_RECIPE)) .getOrCreateMap(RagiumRecipeTypes.ALLOYING) { @@ -211,33 +220,29 @@ class RagiumDataMapProvider(context: HTDataGenContext) : DataMapProvider(context // Extensions // - private fun Builder.add(holder: HTHolderLike, value: T): Builder { - val id: ResourceLocation = holder.getId() - val conditions: Array = id.namespace - .takeUnless(RagiumConst.BUILTIN_IDS::contains) - ?.let(::ModLoadedCondition) - .let(::listOfNotNull) - .toTypedArray() - return add(id, value, false, *conditions) - } + private fun Builder.addHolder(holder: HTHolderLike, value: T, vararg conditions: ICondition): Builder = + add(holder.getId(), value, false, *conditions) // Item - private fun Builder.add(prefix: HTMaterialPrefix, key: HTMaterialLike, value: T): Builder = + private fun Builder.add(prefix: HTPrefixLike, key: HTMaterialLike, value: T): Builder = add(prefix.itemTagKey(key), value, false) // Fluid - private fun Builder.add(fluid: Supplier, value: T): Builder = - add(fluid.get().toHolderLike(), value) + private fun Builder.add(fluid: Fluid, value: T, vararg conditions: ICondition): Builder = + addHolder(fluid.toHolderLike(), value, *conditions) - private fun Builder.add(content: HTFluidContent<*, *, *>, amount: Int): Builder = - add(content.commonTag, HTFluidFuelData(amount), false) + private fun Builder.add(content: HTFluidContent<*, *, *>, value: T): Builder = + add(content.commonTag, value, false) - private fun Builder.add(path: String, amount: Int): Builder = - add(Registries.FLUID.createCommonTag(path), HTFluidFuelData(amount), false) + private fun Builder.add(path: String, value: T): Builder = + add(Registries.FLUID.createCommonTag(path), value, false) // Entity Type - private fun Builder>.add(type: EntityType<*>, value: T): Builder> = - add(type.toHolderLike(), value) + private fun Builder>.add( + type: EntityType<*>, + value: T, + vararg conditions: ICondition, + ): Builder> = addHolder(type.toHolderLike(), value, *conditions) private class MapDataMapBuilder( private val builder: AdvancedBuilder, R, MapDataMapValueRemover>, diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/advancement/RagiumAdvancementGenerator.kt b/src/data/kotlin/hiiragi283/ragium/data/server/advancement/RagiumAdvancementGenerator.kt index 1571ee7ad..c07978762 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/advancement/RagiumAdvancementGenerator.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/advancement/RagiumAdvancementGenerator.kt @@ -6,11 +6,11 @@ import hiiragi283.ragium.api.data.advancement.HTAdvancementBuilder import hiiragi283.ragium.api.data.advancement.HTAdvancementGenerator import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.common.integration.food.RagiumDelightAddon +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.tier.HTComponentTier import hiiragi283.ragium.common.variant.HTHammerToolVariant import hiiragi283.ragium.common.variant.HTVanillaToolVariant -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumItems import net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumEnchantmentProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumEnchantmentProvider.kt index a0b6b4520..28676492f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumEnchantmentProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumEnchantmentProvider.kt @@ -27,7 +27,7 @@ import net.minecraft.world.level.storage.loot.predicates.DamageSourceCondition import net.minecraft.world.level.storage.loot.predicates.LootItemEntityPropertyCondition /** - * @see [net.minecraft.world.item.enchantment.Enchantments] + * @see net.minecraft.world.item.enchantment.Enchantments */ object RagiumEnchantmentProvider : RegistrySetBuilder.RegistryBootstrap { override fun run(context: BootstrapContext) { @@ -126,7 +126,7 @@ object RagiumEnchantmentProvider : RegistrySetBuilder.RegistryBootstrap, - prefix: HTMaterialPrefix, + prefix: HTPrefixLike, material: HTMaterialLike, power: Float, builderAction: LocationPredicate.Builder.() -> Unit = {}, diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumWorldGenData.kt b/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumWorldGenData.kt index bce091f0c..2970c52df 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumWorldGenData.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/bootstrap/RagiumWorldGenData.kt @@ -6,19 +6,19 @@ import net.minecraft.data.worldgen.placement.OrePlacements object RagiumWorldGenData { /** - * @see [OrePlacements.ORE_REDSTONE] + * @see OrePlacements.ORE_REDSTONE */ @JvmField val ORE_RAGINITE: HTWorldGenData = HTWorldGenData("ore_${RagiumConst.RAGINITE}") /** - * @see [OrePlacements.ORE_REDSTONE_LOWER] + * @see OrePlacements.ORE_REDSTONE_LOWER */ @JvmField val ORE_RAGINITE_LOWER: HTWorldGenData = HTWorldGenData(ORE_RAGINITE, "ore_${RagiumConst.RAGINITE}_lower") /** - * @see [OrePlacements.ORE_ANCIENT_DEBRIS_SMALL] + * @see OrePlacements.ORE_ANCIENT_DEBRIS_SMALL */ @JvmField val ORE_RESONANT_DEBRIS: HTWorldGenData = HTWorldGenData("ore_resonant_debris") diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/loot/RagiumCustomLootProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/loot/RagiumCustomLootProvider.kt index e74d5459d..810521c3f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/loot/RagiumCustomLootProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/loot/RagiumCustomLootProvider.kt @@ -68,7 +68,7 @@ sealed class RagiumCustomLootProvider(protected val provider: HolderLookup.Provi class Block(provider: HolderLookup.Provider) : RagiumCustomLootProvider(provider) { /** - * @see [net.minecraft.data.loot.packs.VanillaBlockLoot.createOakLeavesDrops] + * @see net.minecraft.data.loot.packs.VanillaBlockLoot.createOakLeavesDrops */ override fun generate(output: BiConsumer, LootTable.Builder>) { // Drops Ragi-Cherry from Cherry Leaves diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCompressingRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCompressingRecipeProvider.kt index c7a4aeb2b..e14e19a08 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCompressingRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCompressingRecipeProvider.kt @@ -1,9 +1,9 @@ package hiiragi283.ragium.data.server.recipe import hiiragi283.ragium.api.data.recipe.HTRecipeProvider +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumItems import net.minecraft.world.item.Items import net.neoforged.neoforge.common.Tags diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCrushingRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCrushingRecipeProvider.kt index ce7f82f2d..e4f5361c1 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCrushingRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumCrushingRecipeProvider.kt @@ -3,10 +3,10 @@ package hiiragi283.ragium.data.server.recipe import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTItemToChancedItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumItems import net.minecraft.tags.ItemTags diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumDecorationRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumDecorationRecipeProvider.kt index 823024246..e80945ce0 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumDecorationRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumDecorationRecipeProvider.kt @@ -6,6 +6,7 @@ import hiiragi283.ragium.api.registry.impl.HTDeferredBlock import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.common.variant.HTDecorationVariant @@ -13,7 +14,6 @@ import hiiragi283.ragium.impl.data.HTVanillaWoodType import hiiragi283.ragium.impl.data.recipe.HTCombineItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTSingleItemRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import net.minecraft.tags.ItemTags import net.minecraft.world.item.Items diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumEngineeringRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumEngineeringRecipeProvider.kt index ef841be1b..66f708242 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumEngineeringRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumEngineeringRecipeProvider.kt @@ -6,6 +6,7 @@ import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.registry.impl.HTSimpleDeferredItem import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.HTColorMaterial import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys @@ -16,7 +17,6 @@ import hiiragi283.ragium.impl.data.recipe.HTCombineItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapelessRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumDataComponents import hiiragi283.ragium.setup.RagiumItems diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumExtractingRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumExtractingRecipeProvider.kt index 206786fd0..8fb0f417f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumExtractingRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumExtractingRecipeProvider.kt @@ -2,9 +2,9 @@ package hiiragi283.ragium.data.server.recipe import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeItem import net.minecraft.world.item.Items diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFluidRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFluidRecipeProvider.kt index 5dc773fa7..bfb6da1b9 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFluidRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFluidRecipeProvider.kt @@ -7,6 +7,7 @@ import hiiragi283.ragium.api.registry.toHolderLike import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.RagiumMoltenCrystalData import hiiragi283.ragium.common.material.VanillaMaterialKeys @@ -15,7 +16,6 @@ import hiiragi283.ragium.impl.data.recipe.HTFluidTransformRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems import net.minecraft.tags.ItemTags diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFoodRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFoodRecipeProvider.kt index d5ffe7ffc..44b531320 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFoodRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumFoodRecipeProvider.kt @@ -5,6 +5,7 @@ import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.registry.toHolderLike import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.api.tag.RagiumModTags +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.common.recipe.HTIceCreamSodaRecipe @@ -16,7 +17,6 @@ import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapelessRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMachineRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMachineRecipeProvider.kt index ce2ee9d1d..58d485c8c 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMachineRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMachineRecipeProvider.kt @@ -2,8 +2,8 @@ package hiiragi283.ragium.data.server.recipe import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialKey -import hiiragi283.ragium.api.material.HTMaterialPrefix import hiiragi283.ragium.api.registry.HTItemHolderLike +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.common.tier.HTCircuitTier @@ -12,7 +12,6 @@ import hiiragi283.ragium.common.tier.HTCrateTier import hiiragi283.ragium.common.tier.HTDrumTier import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapelessRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumDataComponents import hiiragi283.ragium.setup.RagiumItems @@ -250,7 +249,7 @@ object RagiumMachineRecipeProvider : HTRecipeProvider.Direct() { for ((tier: HTCrateTier, crate: HTItemHolderLike) in RagiumBlocks.CRATES) { resetComponent(crate) - val pair: Pair = when (tier) { + val pair: Pair = when (tier) { HTCrateTier.SMALL -> CommonMaterialPrefixes.INGOT to VanillaMaterialKeys.IRON HTCrateTier.MEDIUM -> CommonMaterialPrefixes.INGOT to VanillaMaterialKeys.GOLD HTCrateTier.LARGE -> CommonMaterialPrefixes.GEM to VanillaMaterialKeys.DIAMOND @@ -277,7 +276,7 @@ object RagiumMachineRecipeProvider : HTRecipeProvider.Direct() { for ((tier: HTDrumTier, drum: HTItemHolderLike) in RagiumBlocks.DRUMS) { resetComponent(drum, RagiumDataComponents.FLUID_CONTENT) - val pair: Pair = when (tier) { + val pair: Pair = when (tier) { HTDrumTier.SMALL -> CommonMaterialPrefixes.INGOT to VanillaMaterialKeys.COPPER HTDrumTier.MEDIUM -> CommonMaterialPrefixes.INGOT to VanillaMaterialKeys.GOLD HTDrumTier.LARGE -> CommonMaterialPrefixes.GEM to VanillaMaterialKeys.DIAMOND @@ -317,7 +316,7 @@ object RagiumMachineRecipeProvider : HTRecipeProvider.Direct() { HTDrumTier.HUGE -> RagiumItems.HUGE_DRUM_UPGRADE else -> continue } - val pair: Pair = when (tier) { + val pair: Pair = when (tier) { HTDrumTier.MEDIUM -> CommonMaterialPrefixes.INGOT to VanillaMaterialKeys.GOLD HTDrumTier.LARGE -> CommonMaterialPrefixes.GEM to VanillaMaterialKeys.DIAMOND HTDrumTier.HUGE -> CommonMaterialPrefixes.INGOT to VanillaMaterialKeys.NETHERITE diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMaterialRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMaterialRecipeProvider.kt index 402d2cbc8..ae479976a 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMaterialRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumMaterialRecipeProvider.kt @@ -4,12 +4,15 @@ import hiiragi283.ragium.api.RagiumPlatform import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix import hiiragi283.ragium.api.material.getDefaultPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix import hiiragi283.ragium.api.registry.HTFluidContent +import hiiragi283.ragium.api.registry.impl.HTSimpleDeferredBlock +import hiiragi283.ragium.api.registry.impl.HTSimpleDeferredItem import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.ModMaterialKeys import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys @@ -20,7 +23,6 @@ import hiiragi283.ragium.impl.data.recipe.HTItemToChancedItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapelessRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems @@ -224,6 +226,9 @@ object RagiumMaterialRecipeProvider : HTRecipeProvider.Direct() { @JvmStatic private fun material() { + val blockMap: Map = RagiumBlocks.getMaterialMap(CommonMaterialPrefixes.STORAGE_BLOCK) + val nuggetMap: Map = RagiumItems.getMaterialMap(CommonMaterialPrefixes.NUGGET) + for (key: HTMaterialKey in RagiumItems.MATERIALS.columnKeys) { val basePrefix: HTMaterialPrefix = RagiumPlatform.INSTANCE .getMaterialDefinition(key) @@ -231,7 +236,7 @@ object RagiumMaterialRecipeProvider : HTRecipeProvider.Direct() { ?: continue val base: ItemLike = RagiumItems.MATERIALS[basePrefix, key] ?: continue - RagiumBlocks.MATERIALS[CommonMaterialPrefixes.STORAGE_BLOCK, key]?.let { storage: ItemLike -> + blockMap[key]?.let { storage: ItemLike -> // Block -> Base HTShapelessRecipeBuilder .misc(base, 9) @@ -246,7 +251,7 @@ object RagiumMaterialRecipeProvider : HTRecipeProvider.Direct() { .saveSuffixed(output, "_from_base") } - RagiumItems.MATERIALS[CommonMaterialPrefixes.NUGGET, key]?.let { nugget: ItemLike -> + nuggetMap[key]?.let { nugget: ItemLike -> // Base -> Nugget HTShapelessRecipeBuilder .misc(nugget, 9) diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumSimulatingRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumSimulatingRecipeProvider.kt index 1795c4012..d478a903d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumSimulatingRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumSimulatingRecipeProvider.kt @@ -1,18 +1,26 @@ package hiiragi283.ragium.data.server.recipe import hiiragi283.ragium.api.data.recipe.HTRecipeProvider +import hiiragi283.ragium.api.recipe.ingredient.HTEntityTypeIngredient +import hiiragi283.ragium.api.tag.RagiumModTags +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTItemWithCatalystToItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumItems +import net.minecraft.core.HolderGetter +import net.minecraft.core.registries.Registries import net.minecraft.tags.ItemTags +import net.minecraft.world.entity.EntityType import net.minecraft.world.item.Items +import net.minecraft.world.item.crafting.Ingredient import net.neoforged.neoforge.common.Tags object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { + private val entityLookup: HolderGetter> by lazy { provider.lookupOrThrow(Registries.ENTITY_TYPE) } + override fun buildRecipeInternal() { // Amethyst HTItemWithCatalystToItemRecipeBuilder @@ -38,7 +46,7 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( null, - itemCreator.fromItem(Items.ARMADILLO_SPAWN_EGG), + itemCreator.fromVanilla(HTEntityTypeIngredient.of(EntityType.ARMADILLO)), resultHelper.item(Items.ARMADILLO_SCUTE), ).save(output) @@ -61,7 +69,7 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( itemCreator.fromTagKey(Tags.Items.SEEDS), - itemCreator.fromItem(Items.CHICKEN_SPAWN_EGG), + itemCreator.fromVanilla(HTEntityTypeIngredient.of(EntityType.CHICKEN)), resultHelper.item(Items.EGG), ).save(output) @@ -69,15 +77,19 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( itemCreator.fromItem(RagiumItems.ELDER_HEART), - itemCreator.fromItem(Items.ELDER_GUARDIAN_SPAWN_EGG), + itemCreator.fromVanilla(HTEntityTypeIngredient.of(EntityType.ELDER_GUARDIAN)), resultHelper.item(Items.HEART_OF_THE_SEA), ).save(output) // Dragon Breath + HTItemWithCatalystToItemRecipeBuilder .simulating( itemCreator.fromItem(Items.GLASS_BOTTLE), - itemCreator.fromItem(Items.DRAGON_HEAD), + itemCreator.fromVanilla( + Ingredient.of(Items.DRAGON_HEAD), + HTEntityTypeIngredient.of(EntityType.ENDER_DRAGON), + ), resultHelper.item(Items.DRAGON_BREATH), ).save(output) @@ -85,7 +97,7 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( itemCreator.fromTagKey(Tags.Items.FERTILIZERS), - itemCreator.fromItem(Items.IRON_GOLEM_SPAWN_EGG), + itemCreator.fromVanilla(HTEntityTypeIngredient.of(EntityType.IRON_GOLEM)), resultHelper.item(Items.POPPY), ).save(output) @@ -93,7 +105,7 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( itemCreator.fromItem(Items.NETHER_BRICKS, 64), - itemCreator.fromItem(Items.PIGLIN_BRUTE_SPAWN_EGG), + itemCreator.fromVanilla(HTEntityTypeIngredient.of(EntityType.PIGLIN_BRUTE)), resultHelper.item(Items.ANCIENT_DEBRIS), ).save(output) @@ -101,7 +113,7 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( null, - itemCreator.fromItem(Items.SHEEP_SPAWN_EGG), + itemCreator.fromVanilla(HTEntityTypeIngredient.of(EntityType.SHEEP)), resultHelper.item(Items.WHITE_WOOL), ).save(output) @@ -109,7 +121,7 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( itemCreator.fromItem(Items.SEAGRASS, 8), - itemCreator.fromItem(Items.TURTLE_SPAWN_EGG), + itemCreator.fromVanilla(HTEntityTypeIngredient.of(EntityType.TURTLE)), resultHelper.item(Items.TURTLE_SCUTE), ).save(output) @@ -117,7 +129,9 @@ object RagiumSimulatingRecipeProvider : HTRecipeProvider.Direct() { HTItemWithCatalystToItemRecipeBuilder .simulating( itemCreator.fromItem(Items.DEEPSLATE, 8), - itemCreator.fromItem(Items.WARDEN_SPAWN_EGG), + itemCreator.fromVanilla( + HTEntityTypeIngredient.of(entityLookup.getOrThrow(RagiumModTags.EntityTypes.GENERATE_RESONANT_DEBRIS)), + ), resultHelper.item(RagiumBlocks.RESONANT_DEBRIS), ).save(output) diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumToolRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumToolRecipeProvider.kt index b237b5b5f..e9bab2705 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumToolRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumToolRecipeProvider.kt @@ -3,13 +3,14 @@ package hiiragi283.ragium.data.server.recipe import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.impl.HTDeferredItem import hiiragi283.ragium.api.stack.ImmutableItemStack import hiiragi283.ragium.api.stack.toImmutable import hiiragi283.ragium.api.variant.HTToolVariant import hiiragi283.ragium.common.integration.food.RagiumDelightAddon import hiiragi283.ragium.common.item.HTUniversalBundleItem +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.HTColorMaterial import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys @@ -24,7 +25,6 @@ import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapelessRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTSingleItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTSmithingRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumDataComponents import hiiragi283.ragium.setup.RagiumItems import net.minecraft.tags.ItemTags @@ -143,7 +143,6 @@ object RagiumToolRecipeProvider : HTRecipeProvider.Direct() { @JvmStatic private fun azureAndDeepSteel() { addEquipments( - RagiumItems.AZURE_ARMORS, RagiumMaterialKeys.AZURE_STEEL, VanillaMaterialKeys.IRON, RagiumItems.AZURE_STEEL_UPGRADE_SMITHING_TEMPLATE, @@ -151,7 +150,6 @@ object RagiumToolRecipeProvider : HTRecipeProvider.Direct() { ) addEquipments( - RagiumItems.DEEP_ARMORS, RagiumMaterialKeys.DEEP_STEEL, VanillaMaterialKeys.DIAMOND, RagiumItems.DEEP_STEEL_UPGRADE_SMITHING_TEMPLATE, @@ -161,7 +159,6 @@ object RagiumToolRecipeProvider : HTRecipeProvider.Direct() { @JvmStatic private fun addEquipments( - armors: Map>, material: HTMaterialLike, beforeMaterial: HTMaterialLike, upgrade: HTDeferredItem<*>, @@ -171,12 +168,12 @@ object RagiumToolRecipeProvider : HTRecipeProvider.Direct() { addTemplate(upgrade, material) // Armor val beforeKey: HTMaterialKey = beforeMaterial.asMaterialKey() - for ((variant: HTArmorVariant, armor: HTDeferredItem<*>) in armors) { + for ((variant: HTArmorVariant, armor: HTDeferredItem<*>) in RagiumItems.getArmorMap(material)) { val beforeArmor: ItemLike = VanillaMaterialKeys.ARMOR_TABLE[variant, beforeKey] ?: continue upgradeFactory(armor, beforeArmor) } // Tool - for ((variant: HTToolVariant, tool: HTDeferredItem<*>) in RagiumItems.TOOLS.column(material.asMaterialKey())) { + for ((variant: HTToolVariant, tool: HTDeferredItem<*>) in RagiumItems.getToolMap(material)) { val beforeTool: ItemLike = when (variant) { is HTVanillaToolVariant -> VanillaMaterialKeys.TOOL_TABLE[variant, beforeKey] is HTHammerToolVariant -> RagiumItems.TOOLS[variant, beforeKey] @@ -240,7 +237,7 @@ object RagiumToolRecipeProvider : HTRecipeProvider.Direct() { private fun forgeHammers() { fun hammer(key: HTMaterialLike): ItemLike = RagiumItems.getTool(HTHammerToolVariant, key) - fun crafting(prefix: HTMaterialPrefix, key: HTMaterialLike) { + fun crafting(prefix: HTPrefixLike, key: HTMaterialLike) { HTShapedRecipeBuilder .equipment(hammer(key)) .pattern( diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumWashingRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumWashingRecipeProvider.kt index 25cab552c..b51ad2d58 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumWashingRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/RagiumWashingRecipeProvider.kt @@ -5,6 +5,7 @@ import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.toHolderLike import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.HTColorMaterial import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys @@ -12,7 +13,6 @@ import hiiragi283.ragium.common.variant.HTColoredVariant import hiiragi283.ragium.impl.data.recipe.HTCombineItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumFluidContents import net.minecraft.world.item.Items diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumAE2RecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumAE2RecipeProvider.kt index 1ac2f4088..58f81995b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumAE2RecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumAE2RecipeProvider.kt @@ -7,13 +7,13 @@ import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.recipe.ingredient.HTItemIngredient import hiiragi283.ragium.api.recipe.result.HTItemResult +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.ModMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTCombineItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithCatalystToItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumFluidContents object RagiumAE2RecipeProvider : HTRecipeProvider.Integration(RagiumConst.AE2) { diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumDelightRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumDelightRecipeProvider.kt index d4c21ef0d..97741730f 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumDelightRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumDelightRecipeProvider.kt @@ -7,13 +7,13 @@ import hiiragi283.ragium.api.registry.toHolderLike import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.common.integration.food.RagiumDelightAddon import hiiragi283.ragium.common.integration.food.RagiumFoodAddon +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.tier.HTComponentTier import hiiragi283.ragium.impl.data.recipe.HTCuttingBoardRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToChancedItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumEIORecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumEIORecipeProvider.kt index b978fb961..f52d7b885 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumEIORecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumEIORecipeProvider.kt @@ -4,10 +4,10 @@ import com.enderio.base.common.tag.EIOTags import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.ModMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTCombineItemToObjRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import net.minecraft.tags.ItemTags import net.neoforged.neoforge.common.Tags diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumImmersiveRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumImmersiveRecipeProvider.kt index b1798e2fe..54a507461 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumImmersiveRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumImmersiveRecipeProvider.kt @@ -9,23 +9,23 @@ import blusunrize.immersiveengineering.data.recipes.builder.SqueezerRecipeBuilde import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.tag.RagiumModTags +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.RagiumMoltenCrystalData import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTArcFurnaceRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTFluidTransformRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumFluidContents import net.minecraft.tags.ItemTags import net.minecraft.tags.TagKey import net.minecraft.world.item.Item /** - * @see [blusunrize.immersiveengineering.data.recipes.MultiblockRecipes] + * @see blusunrize.immersiveengineering.data.recipes.MultiblockRecipes */ object RagiumImmersiveRecipeProvider : HTRecipeProvider.Integration(RagiumConst.IMMERSIVE) { override fun buildRecipeInternal() { @@ -148,7 +148,7 @@ object RagiumImmersiveRecipeProvider : HTRecipeProvider.Integration(RagiumConst. @JvmStatic private fun BottlingMachineRecipeBuilder.output( - prefix: HTMaterialPrefix, + prefix: HTPrefixLike, material: HTMaterialLike, count: Int = 1, ): BottlingMachineRecipeBuilder = output(prefix.itemTagKey(material), count) diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumKaleidoRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumKaleidoRecipeProvider.kt index e1b448d34..2b225dcca 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumKaleidoRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumKaleidoRecipeProvider.kt @@ -5,11 +5,11 @@ import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.common.integration.food.RagiumFoodAddon import hiiragi283.ragium.common.integration.food.RagiumKaleidoCookeryAddon +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.tier.HTComponentTier import hiiragi283.ragium.impl.data.recipe.HTChoppingBoardRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTShapedRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumItems import net.neoforged.neoforge.common.Tags diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumMekanismRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumMekanismRecipeProvider.kt index 5fd65c4ab..491bb0059 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumMekanismRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumMekanismRecipeProvider.kt @@ -1,20 +1,19 @@ package hiiragi283.ragium.data.server.recipe.compat -import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.common.integration.RagiumMekanismAddon +import hiiragi283.ragium.common.material.CommonMaterialPrefixes +import hiiragi283.ragium.common.material.MekanismMaterialPrefixes import hiiragi283.ragium.common.material.RagiumEssenceType import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.RagiumMoltenCrystalData import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes -import hiiragi283.ragium.setup.MekanismMaterialPrefixes import hiiragi283.ragium.setup.RagiumItems import mekanism.api.IMekanismAccess import mekanism.api.chemical.ChemicalStack @@ -31,7 +30,6 @@ import mekanism.api.recipes.ingredients.creator.IFluidStackIngredientCreator import mekanism.api.recipes.ingredients.creator.IItemStackIngredientCreator import mekanism.common.registries.MekanismItems import mekanism.common.tags.MekanismTags -import net.minecraft.resources.ResourceLocation object RagiumMekanismRecipeProvider : HTRecipeProvider.Integration(RagiumConst.MEKANISM) { override fun buildRecipeInternal() { @@ -48,13 +46,12 @@ object RagiumMekanismRecipeProvider : HTRecipeProvider.Integration(RagiumConst.M fun toChemical(factory: (ItemStackIngredient, ChemicalStack) -> ItemStackToChemicalRecipeBuilder, prefix: String) { for (essenceType: RagiumEssenceType in RagiumEssenceType.entries) { val name: String = essenceType.asMaterialName() - val tagPrefix: HTMaterialPrefix = essenceType.basePrefix - val id: ResourceLocation = RagiumAPI.MATERIAL_PREFIX_REGISTRY.getKeyOrNull(tagPrefix) ?: continue + val tagPrefix: CommonMaterialPrefixes = essenceType.basePrefix // Base -> Chemical factory( itemHelper.from(tagPrefix, essenceType.parent), essenceType.asStack(10), - ).build(output, id("$prefix/$name/from_${id.path}")) + ).build(output, id("$prefix/$name/from_${tagPrefix.asPrefixName()}")) // Enriched -> Chemical factory( itemHelper.from(MekanismMaterialPrefixes.ENRICHED, essenceType), @@ -235,7 +232,7 @@ object RagiumMekanismRecipeProvider : HTRecipeProvider.Integration(RagiumConst.M private fun HTMaterialLike.asStack(size: Long): ChemicalStack = RagiumMekanismAddon.getChemical(this).asStack(size) @JvmStatic - private fun IItemStackIngredientCreator.from(prefix: HTMaterialPrefix, material: HTMaterialLike, count: Int = 1): ItemStackIngredient = + private fun IItemStackIngredientCreator.from(prefix: HTPrefixLike, material: HTMaterialLike, count: Int = 1): ItemStackIngredient = from(prefix.itemTagKey(material), count) @JvmStatic diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumOritechRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumOritechRecipeProvider.kt index 5b6f571eb..35d03ee50 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumOritechRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumOritechRecipeProvider.kt @@ -3,14 +3,15 @@ package hiiragi283.ragium.data.server.recipe.compat import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.HTItemHolderLike +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems +import net.minecraft.data.recipes.RecipeOutput import net.minecraft.world.item.Items import rearth.oritech.api.recipe.AtomicForgeRecipeBuilder import rearth.oritech.api.recipe.CentrifugeRecipeBuilder @@ -37,7 +38,7 @@ object RagiumOritechRecipeProvider : HTRecipeProvider.Integration(RagiumConst.OR .input(CommonMaterialPrefixes.DUST, RagiumMaterialKeys.RAGINITE) .result(RagiumItems.getGem(RagiumMaterialKeys.RAGI_CRYSTAL)) .time(20) - .export(output, RagiumConst.RAGI_CRYSTAL) + .export(output, RagiumMaterialKeys.RAGI_CRYSTAL) } @JvmStatic @@ -46,7 +47,6 @@ object RagiumOritechRecipeProvider : HTRecipeProvider.Integration(RagiumConst.OR .build() .input(gemOrDust(RagiumMaterialKeys.ELDRITCH_PEARL)) .fluidOutput(RagiumFluidContents.ELDRITCH_FLUX) - // .export(output, "eldritch_flux") } @JvmStatic @@ -56,14 +56,14 @@ object RagiumOritechRecipeProvider : HTRecipeProvider.Integration(RagiumConst.OR .input(CommonMaterialPrefixes.DUST, RagiumMaterialKeys.RAGINITE) .input(ingotOrDust(VanillaMaterialKeys.COPPER)) .result(RagiumItems.getIngot(RagiumMaterialKeys.RAGI_ALLOY)) - .export(output, RagiumConst.RAGI_ALLOY) + .export(output, RagiumMaterialKeys.RAGI_ALLOY) FoundryRecipeBuilder .build() .input(CommonMaterialPrefixes.DUST, RagiumMaterialKeys.RAGINITE) .input(ingotOrDust(VanillaMaterialKeys.GOLD)) .result(RagiumItems.getIngot(RagiumMaterialKeys.ADVANCED_RAGI_ALLOY)) - .export(output, RagiumConst.ADVANCED_RAGI_ALLOY) + .export(output, RagiumMaterialKeys.ADVANCED_RAGI_ALLOY) FoundryRecipeBuilder .build() @@ -77,14 +77,14 @@ object RagiumOritechRecipeProvider : HTRecipeProvider.Integration(RagiumConst.OR .input(gemOrDust(RagiumMaterialKeys.AZURE)) .input(ingotOrDust(VanillaMaterialKeys.IRON)) .result(RagiumItems.getIngot(RagiumMaterialKeys.AZURE_STEEL)) - .export(output, RagiumConst.AZURE_STEEL) + .export(output, RagiumMaterialKeys.AZURE_STEEL) FoundryRecipeBuilder .build() .input(CommonMaterialPrefixes.SCRAP, RagiumMaterialKeys.DEEP_STEEL) .input(ingotOrDust(RagiumMaterialKeys.AZURE_STEEL)) .result(RagiumItems.getIngot(RagiumMaterialKeys.DEEP_STEEL)) - .export(output, RagiumConst.DEEP_STEEL) + .export(output, RagiumMaterialKeys.DEEP_STEEL) } @JvmStatic @@ -93,7 +93,7 @@ object RagiumOritechRecipeProvider : HTRecipeProvider.Integration(RagiumConst.OR .build() .input(CommonMaterialPrefixes.ORE, VanillaMaterialKeys.REDSTONE) .result(RagiumItems.getDust(RagiumMaterialKeys.RAGINITE)) - .export(output, "raginite") + .export(output, RagiumMaterialKeys.RAGINITE) } @JvmStatic @@ -109,7 +109,7 @@ object RagiumOritechRecipeProvider : HTRecipeProvider.Integration(RagiumConst.OR // Extension // - fun OritechRecipeBuilder.input(prefix: HTMaterialPrefix, material: HTMaterialLike): OritechRecipeBuilder = + fun OritechRecipeBuilder.input(prefix: HTPrefixLike, material: HTMaterialLike): OritechRecipeBuilder = input(prefix.itemTagKey(material)) fun OritechRecipeBuilder.result(item: HTItemHolderLike, count: Int = 1): OritechRecipeBuilder = result(item.toStack(count)) @@ -117,4 +117,8 @@ object RagiumOritechRecipeProvider : HTRecipeProvider.Integration(RagiumConst.OR fun OritechRecipeBuilder.fluidInput(content: HTFluidContent<*, *, *>): OritechRecipeBuilder = fluidInput(content.commonTag) fun OritechRecipeBuilder.fluidOutput(content: HTFluidContent<*, *, *>): OritechRecipeBuilder = fluidOutput(content.get()) + + fun OritechRecipeBuilder.export(output: RecipeOutput, material: HTMaterialLike) { + export(output, material.asMaterialName()) + } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumReplicationRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumReplicationRecipeProvider.kt index ce40c4473..9f0792f05 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumReplicationRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/recipe/compat/RagiumReplicationRecipeProvider.kt @@ -5,12 +5,12 @@ import com.buuz135.replication.recipe.MatterValueRecipe import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.HTRecipeProvider import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.common.integration.RagiumReplicationAddon +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumEssenceType import hiiragi283.ragium.common.material.RagiumMaterialKeys -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.DefaultMatterTypes import net.minecraft.resources.ResourceLocation import net.minecraft.tags.TagKey @@ -104,7 +104,7 @@ object RagiumReplicationRecipeProvider : HTRecipeProvider.Integration(RagiumCons } @JvmStatic - private fun register(prefix: HTMaterialPrefix, material: HTMaterialLike, vararg instances: MatterValue) { + private fun register(prefix: HTPrefixLike, material: HTMaterialLike, vararg instances: MatterValue) { register(prefix.itemTagKey(material), *instances) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumBlockTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumBlockTagsProvider.kt index 5185a4bc0..9bbbdb1ac 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumBlockTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumBlockTagsProvider.kt @@ -5,17 +5,18 @@ import hiiragi283.ragium.api.data.tag.HTTagBuilder import hiiragi283.ragium.api.data.tag.HTTagsProvider import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTHolderLike import hiiragi283.ragium.api.registry.toHolderLike import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.common.integration.food.RagiumDelightAddon +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.common.variant.HTDecorationVariant import hiiragi283.ragium.common.variant.HTOreVariant -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import net.minecraft.core.registries.Registries import net.minecraft.tags.BlockTags @@ -159,8 +160,8 @@ class RagiumBlockTagsProvider(context: HTDataGenContext) : HTTagsProvider // Material RagiumBlocks.MATERIALS.forEach { (prefix: HTMaterialPrefix, key: HTMaterialKey, block: HTHolderLike) -> builder.addMaterial(prefix, key, block) - when (prefix) { - CommonMaterialPrefixes.STORAGE_BLOCK -> builder.add(BlockTags.BEACON_BASE_BLOCKS, block) + if (prefix == CommonMaterialPrefixes.STORAGE_BLOCK.asMaterialPrefix()) { + builder.add(BlockTags.BEACON_BASE_BLOCKS, block) } } @@ -204,8 +205,8 @@ class RagiumBlockTagsProvider(context: HTDataGenContext) : HTTagsProvider add(child, block) } - private fun HTTagBuilder.addMaterial(prefix: HTMaterialPrefix, material: HTMaterialLike, block: HTHolderLike) { - val blockCommonTag: TagKey = prefix.blockCommonTag + private fun HTTagBuilder.addMaterial(prefix: HTPrefixLike, material: HTMaterialLike, block: HTHolderLike) { + val blockCommonTag: TagKey = prefix.createCommonTagKey(Registries.BLOCK) val tagKey: TagKey = prefix.blockTagKey(material) add(blockCommonTag, tagKey, block) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumItemTagsProvider.kt index bf42b8d97..a6f0101f9 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/server/tag/RagiumItemTagsProvider.kt @@ -1,24 +1,25 @@ package hiiragi283.ragium.data.server.tag -import hiiragi283.ragium.api.collection.buildMultiMap import hiiragi283.ragium.api.data.HTDataGenContext import hiiragi283.ragium.api.data.tag.HTTagBuilder import hiiragi283.ragium.api.data.tag.HTTagsProvider import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.HTHolderLike +import hiiragi283.ragium.api.registry.impl.HTDeferredItem import hiiragi283.ragium.api.registry.toHolderLike import hiiragi283.ragium.api.tag.RagiumCommonTags import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.api.variant.HTToolVariant -import hiiragi283.ragium.common.accessory.HTAccessorySlot import hiiragi283.ragium.common.integration.RagiumMekanismAddon import hiiragi283.ragium.common.integration.food.RagiumDelightAddon import hiiragi283.ragium.common.integration.food.RagiumFoodAddon import hiiragi283.ragium.common.integration.food.RagiumKaleidoCookeryAddon import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.HTColorMaterial import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys @@ -27,10 +28,10 @@ import hiiragi283.ragium.common.variant.HTArmorVariant import hiiragi283.ragium.common.variant.HTKitchenKnifeToolVariant import hiiragi283.ragium.common.variant.HTKnifeToolVariant import hiiragi283.ragium.common.variant.HTVanillaToolVariant -import hiiragi283.ragium.setup.CommonMaterialPrefixes import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems +import io.wispforest.accessories.api.data.AccessoriesTags import me.desht.pneumaticcraft.api.data.PneumaticCraftTags import mekanism.common.registries.MekanismItems import net.minecraft.core.HolderLookup @@ -95,11 +96,11 @@ class RagiumItemTagsProvider(private val blockTags: CompletableFuture = CommonMaterialPrefixes.FUEL.itemTagKey(CommonMaterialKeys.COAL_COKE) - builder.addTag(CommonMaterialPrefixes.FUEL.itemCommonTag, coalCoke) + builder.addTag(CommonMaterialPrefixes.FUEL.createCommonTagKey(Registries.ITEM), coalCoke) builder.addTag(coalCoke, RagiumCommonTags.Items.COAL_COKE, HTTagBuilder.DependType.OPTIONAL) builder.addMaterial(CommonMaterialPrefixes.GEM, VanillaMaterialKeys.ECHO, Items.ECHO_SHARD.toHolderLike()) @@ -138,11 +139,11 @@ class RagiumItemTagsProvider(private val blockTags: CompletableFuture prefix.asMaterialPrefix() } } - private fun fromTriples(builder: HTTagBuilder, triples: Iterable>) { - triples.forEach { (prefix: HTMaterialPrefix, key: HTMaterialLike, item: HTHolderLike) -> + private fun fromTriples(builder: HTTagBuilder, triples: Iterable>) { + triples.forEach { (prefix: HTPrefixLike, key: HTMaterialLike, item: HTHolderLike) -> builder.addMaterial(prefix, key, item) val customTag: TagKey = MATERIAL_TAG[prefix] ?: return@forEach builder.addTag(customTag, prefix.itemTagKey(key)) @@ -231,10 +232,9 @@ class RagiumItemTagsProvider(private val blockTags: CompletableFuture builder.add(variant.tagKey, armor) } + RagiumItems.ARMORS.forEach { (variant: HTArmorVariant, _, item: HTDeferredItem<*>) -> + builder.add(variant.tagKey, item) + } // Tools RagiumItems.TOOLS.forEach { (variant: HTToolVariant, _, item: HTHolderLike) -> for (tagKey: TagKey in variant.tagKeys) { @@ -320,13 +320,14 @@ class RagiumItemTagsProvider(private val blockTags: CompletableFuture) { - builder.addAccessory(HTAccessorySlot.BACK, RagiumItems.ECHO_STAR) - // builder.addAccessory(HTAccessorySlot.BELT, RagiumItems.POTION_BUNDLE) - builder.addAccessory(HTAccessorySlot.BELT, RagiumItems.UNIVERSAL_BUNDLE) - builder.addAccessory(HTAccessorySlot.CHARM, RagiumItems.ADVANCED_MAGNET) - builder.addAccessory(HTAccessorySlot.CHARM, RagiumItems.DYNAMIC_LANTERN) - builder.addAccessory(HTAccessorySlot.CHARM, RagiumItems.MAGNET) - builder.addAccessory(HTAccessorySlot.FACE, RagiumItems.NIGHT_VISION_GOGGLES) + builder.add(AccessoriesTags.BACK_TAG, RagiumItems.ECHO_STAR) + builder.add(AccessoriesTags.BELT_TAG, RagiumItems.UNIVERSAL_BUNDLE) + builder.add(AccessoriesTags.CHARM_TAG, RagiumItems.ADVANCED_MAGNET) + builder.add(AccessoriesTags.CHARM_TAG, RagiumItems.DYNAMIC_LANTERN) + builder.add(AccessoriesTags.CHARM_TAG, RagiumItems.MAGNET) + builder.add(AccessoriesTags.FACE_TAG, RagiumItems.NIGHT_VISION_GOGGLES) + + builder.add(RagiumModTags.Items.BYPASS_MENU_VALIDATION, RagiumItems.UNIVERSAL_BUNDLE) } private fun pneumatic(builder: HTTagBuilder) { @@ -335,11 +336,11 @@ class RagiumItemTagsProvider(private val blockTags: CompletableFuture.add(parent: TagKey, child: TagKey, holder: HTHolderLike) = + private fun HTTagBuilder.add(parent: TagKey, child: TagKey, holder: HTHolderLike): HTTagBuilder = this.addTag(parent, child).add(child, holder) - private fun HTTagBuilder.addMaterial(prefix: HTMaterialPrefix, key: HTMaterialLike, holder: HTHolderLike): HTTagBuilder { - val itemCommonTag: TagKey = prefix.itemCommonTag + private fun HTTagBuilder.addMaterial(prefix: HTPrefixLike, key: HTMaterialLike, holder: HTHolderLike): HTTagBuilder { + val itemCommonTag: TagKey = prefix.createCommonTagKey(Registries.ITEM) val tagKey: TagKey = prefix.itemTagKey(key) return this.add(itemCommonTag, tagKey, holder) } @@ -352,9 +353,6 @@ class RagiumItemTagsProvider(private val blockTags: CompletableFuture.addAccessory(slot: HTAccessorySlot, holder: HTHolderLike): HTTagBuilder = - this.add(slot.slotTag, holder) - override fun createContentsProvider(): CompletableFuture = super .createContentsProvider() .thenCombine(blockTags) { provider: HolderLookup.Provider, lookup: TagLookup -> diff --git a/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTArcFurnaceRecipeBuilder.kt b/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTArcFurnaceRecipeBuilder.kt index 0d726d367..df8f4df57 100644 --- a/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTArcFurnaceRecipeBuilder.kt +++ b/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTArcFurnaceRecipeBuilder.kt @@ -7,7 +7,7 @@ import blusunrize.immersiveengineering.data.recipes.builder.ArcFurnaceRecipeBuil import blusunrize.immersiveengineering.data.recipes.builder.BaseHelpers import blusunrize.immersiveengineering.data.recipes.builder.IERecipeBuilder import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import net.minecraft.data.recipes.RecipeOutput import net.minecraft.resources.ResourceLocation @@ -24,10 +24,10 @@ class HTArcFurnaceRecipeBuilder private constructor() : private val builder: AlloyRecipeBuilder = AlloyRecipeBuilder.builder() private val builder1: ArcFurnaceRecipeBuilder = ArcFurnaceRecipeBuilder.builder() - fun input(prefix: HTMaterialPrefix, material: HTMaterialLike, count: Int = 1): HTArcFurnaceRecipeBuilder = + fun input(prefix: HTPrefixLike, material: HTMaterialLike, count: Int = 1): HTArcFurnaceRecipeBuilder = input(prefix.itemTagKey(material), count) - fun output(prefix: HTMaterialPrefix, material: HTMaterialLike, count: Int = 1): HTArcFurnaceRecipeBuilder = + fun output(prefix: HTPrefixLike, material: HTMaterialLike, count: Int = 1): HTArcFurnaceRecipeBuilder = output(prefix.itemTagKey(material), count) // BaseHelpers // diff --git a/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTCuttingBoardRecipeBuilder.kt b/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTCuttingBoardRecipeBuilder.kt index e44acddf9..8c0aa2028 100644 --- a/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTCuttingBoardRecipeBuilder.kt +++ b/src/data/kotlin/hiiragi283/ragium/impl/data/recipe/HTCuttingBoardRecipeBuilder.kt @@ -13,7 +13,7 @@ import vectorwing.farmersdelight.common.crafting.CuttingBoardRecipe import vectorwing.farmersdelight.common.crafting.ingredient.ChanceResult /** - * @see [vectorwing.farmersdelight.data.builder.CuttingBoardRecipeBuilder] + * @see vectorwing.farmersdelight.data.builder.CuttingBoardRecipeBuilder */ class HTCuttingBoardRecipeBuilder(stack: ImmutableItemStack, chance: Float) : HTStackRecipeBuilder("cutting", stack), diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 0b40f3cb7..36b445254 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -1,7 +1,7 @@ { "access.ragium.both": "Mode: Both", + "access.ragium.disabled": "Mode: Disabled", "access.ragium.input_only": "Mode: Input", - "access.ragium.none": "Mode: None", "access.ragium.output_only": "Mode: Output", "advancements.ragium.advanced_ragi_alloy.desc": "Get Advanced Ragi-Alloy Ingot", "advancements.ragium.advanced_ragi_alloy.title": "This is red, not orange!", @@ -427,7 +427,6 @@ "itemGroup.ragium.ingredients": "Ragium - Ingredients", "itemGroup.ragium.items": "Ragium - Items", "key.ragium.category": "Ragium", - "key.ragium.open_potion_bundle.desc": "Open Potion Bundle", "key.ragium.open_universal_bundle.desc": "Open Universal Bundle", "recipe_type.ragium.alloying": "Alloying", "recipe_type.ragium.compressing": "Compressing", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index d6ea53436..a0add7f98 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -1,7 +1,7 @@ { "access.ragium.both": "モード:双方", + "access.ragium.disabled": "モード:無効", "access.ragium.input_only": "モード:搬入", - "access.ragium.none": "モード:なし", "access.ragium.output_only": "モード:搬出", "advancements.ragium.advanced_ragi_alloy.desc": "発展ラギ合金インゴットを手に入れる", "advancements.ragium.advanced_ragi_alloy.title": "赤色です。", @@ -427,7 +427,6 @@ "itemGroup.ragium.ingredients": "Ragium - 素材", "itemGroup.ragium.items": "Ragium - アイテム", "key.ragium.category": "Ragium", - "key.ragium.open_potion_bundle.desc": "ポーションバンドルを開く", "key.ragium.open_universal_bundle.desc": "共有バンドルを開く", "recipe_type.ragium.alloying": "合金", "recipe_type.ragium.compressing": "圧縮", diff --git a/src/generated/resources/data/ragium/data_maps/entity_type/mob_head.json b/src/generated/resources/data/ragium/data_maps/entity_type/mob_head.json index 5782ffa7f..338f5bc90 100644 --- a/src/generated/resources/data/ragium/data_maps/entity_type/mob_head.json +++ b/src/generated/resources/data/ragium/data_maps/entity_type/mob_head.json @@ -6,6 +6,15 @@ "minecraft:ender_dragon": { "head": "minecraft:dragon_head" }, + "minecraft:enderman": { + "neoforge:conditions": [ + { + "type": "neoforge:mod_loaded", + "modid": "enderio_base" + } + ], + "head": "enderio:enderman_head" + }, "minecraft:piglin": { "head": "minecraft:piglin_head" }, diff --git a/src/generated/resources/data/ragium/data_maps/item/armor_equip.json b/src/generated/resources/data/ragium/data_maps/item/armor_equip.json new file mode 100644 index 000000000..8176a2d24 --- /dev/null +++ b/src/generated/resources/data/ragium/data_maps/item/armor_equip.json @@ -0,0 +1,17 @@ +{ + "values": { + "ragium:night_vision_goggles": { + "type": "ragium:mob_effect", + "effect": { + "ambient": true, + "duration": -1, + "id": "minecraft:night_vision", + "neoforge:cures": [ + "milk", + "protected_by_totem" + ], + "show_icon": true + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/data_maps/recipe_type/material_recipe.json b/src/generated/resources/data/ragium/data_maps/recipe_type/material_recipe.json index 46fae9daa..47f3305ce 100644 --- a/src/generated/resources/data/ragium/data_maps/recipe_type/material_recipe.json +++ b/src/generated/resources/data/ragium/data_maps/recipe_type/material_recipe.json @@ -7,7 +7,7 @@ "flux_count": 6, "input_count": 1, "output_count": 18, - "prefix": "c:raw_storage_block" + "prefix": "raw_storage_block" }, "ragium:raw_block_to_ingot_with_basic": { "type": "ragium:raw_smelting", @@ -15,7 +15,7 @@ "flux_count": 6, "input_count": 2, "output_count": 27, - "prefix": "c:raw_storage_block" + "prefix": "raw_storage_block" }, "ragium:raw_to_ingot_with_advanced": { "type": "ragium:raw_smelting", @@ -23,7 +23,7 @@ "flux_count": 1, "input_count": 1, "output_count": 2, - "prefix": "c:raw_material" + "prefix": "raw_material" }, "ragium:raw_to_ingot_with_basic": { "type": "ragium:raw_smelting", @@ -31,36 +31,36 @@ "flux_count": 1, "input_count": 2, "output_count": 3, - "prefix": "c:raw_material" + "prefix": "raw_material" } }, "ragium:crushing": { "ragium:fuel_to_dust": { "type": "ragium:crushing", - "prefix": "c:fuel" + "prefix": "fuel" }, "ragium:gem_to_dust": { "type": "ragium:crushing", - "prefix": "c:gem" + "prefix": "gem" }, "ragium:ingot_to_dust": { "type": "ragium:crushing", - "prefix": "c:ingot" + "prefix": "ingot" }, "ragium:plate_to_dust": { "type": "ragium:crushing", - "prefix": "c:plate" + "prefix": "plate" }, "ragium:raw_to_dust": { "type": "ragium:crushing", "input_count": 3, "output_count": 4, - "prefix": "c:raw_material" + "prefix": "raw_material" }, "ragium:rod_to_dust": { "type": "ragium:crushing", "input_count": 2, - "prefix": "c:rod" + "prefix": "rod" } } } diff --git a/src/generated/resources/data/ragium/enchantment/sonic_protection.json b/src/generated/resources/data/ragium/enchantment/sonic_protection.json index f04063048..45ca4e816 100644 --- a/src/generated/resources/data/ragium/enchantment/sonic_protection.json +++ b/src/generated/resources/data/ragium/enchantment/sonic_protection.json @@ -37,7 +37,7 @@ }, "primary_items": "#minecraft:enchantable/chest_armor", "slots": [ - "chest" + "any" ], "supported_items": "#minecraft:enchantable/armor", "weight": 2 diff --git a/src/generated/resources/data/ragium/recipe/simulating/ancient_debris.json b/src/generated/resources/data/ragium/recipe/simulating/ancient_debris.json index 397b5bae8..081535077 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/ancient_debris.json +++ b/src/generated/resources/data/ragium/recipe/simulating/ancient_debris.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:piglin_brute_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "minecraft:piglin_brute" + }, "ingredient": { "count": 64, "items": "minecraft:nether_bricks" diff --git a/src/generated/resources/data/ragium/recipe/simulating/armadillo_scute.json b/src/generated/resources/data/ragium/recipe/simulating/armadillo_scute.json index 26961329a..75e59c2cc 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/armadillo_scute.json +++ b/src/generated/resources/data/ragium/recipe/simulating/armadillo_scute.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:armadillo_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "minecraft:armadillo" + }, "result": { "count": 1, "id": "minecraft:armadillo_scute" diff --git a/src/generated/resources/data/ragium/recipe/simulating/dragon_breath.json b/src/generated/resources/data/ragium/recipe/simulating/dragon_breath.json index beec65035..c3c7b2920 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/dragon_breath.json +++ b/src/generated/resources/data/ragium/recipe/simulating/dragon_breath.json @@ -1,6 +1,14 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:dragon_head", + "catalyst": [ + { + "item": "minecraft:dragon_head" + }, + { + "type": "ragium:entity_type", + "entities": "minecraft:ender_dragon" + } + ], "ingredient": "minecraft:glass_bottle", "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/simulating/egg.json b/src/generated/resources/data/ragium/recipe/simulating/egg.json index 7e6db9bb7..4f8e2f3c7 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/egg.json +++ b/src/generated/resources/data/ragium/recipe/simulating/egg.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:chicken_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "minecraft:chicken" + }, "ingredient": "#c:seeds", "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/simulating/heart_of_the_sea.json b/src/generated/resources/data/ragium/recipe/simulating/heart_of_the_sea.json index efd0be38f..a35034a8e 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/heart_of_the_sea.json +++ b/src/generated/resources/data/ragium/recipe/simulating/heart_of_the_sea.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:elder_guardian_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "minecraft:elder_guardian" + }, "ingredient": "ragium:elder_heart", "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/simulating/poppy.json b/src/generated/resources/data/ragium/recipe/simulating/poppy.json index 81ccf9095..07e9894d6 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/poppy.json +++ b/src/generated/resources/data/ragium/recipe/simulating/poppy.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:iron_golem_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "minecraft:iron_golem" + }, "ingredient": "#c:fertilizers", "result": { "count": 1, diff --git a/src/generated/resources/data/ragium/recipe/simulating/resonant_debris.json b/src/generated/resources/data/ragium/recipe/simulating/resonant_debris.json index e8aa9c15f..10175a82d 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/resonant_debris.json +++ b/src/generated/resources/data/ragium/recipe/simulating/resonant_debris.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:warden_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "#ragium:generate_resonant_debris" + }, "ingredient": { "count": 8, "items": "minecraft:deepslate" diff --git a/src/generated/resources/data/ragium/recipe/simulating/turtle_scute.json b/src/generated/resources/data/ragium/recipe/simulating/turtle_scute.json index 234c74a5f..c8d615b62 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/turtle_scute.json +++ b/src/generated/resources/data/ragium/recipe/simulating/turtle_scute.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:turtle_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "minecraft:turtle" + }, "ingredient": { "count": 8, "items": "minecraft:seagrass" diff --git a/src/generated/resources/data/ragium/recipe/simulating/white_wool.json b/src/generated/resources/data/ragium/recipe/simulating/white_wool.json index 76fd694c4..43628795d 100644 --- a/src/generated/resources/data/ragium/recipe/simulating/white_wool.json +++ b/src/generated/resources/data/ragium/recipe/simulating/white_wool.json @@ -1,6 +1,9 @@ { "type": "ragium:simulating", - "catalyst": "minecraft:sheep_spawn_egg", + "catalyst": { + "type": "ragium:entity_type", + "entities": "minecraft:sheep" + }, "result": { "count": 1, "id": "minecraft:white_wool" diff --git a/src/generated/resources/data/ragium/tags/item/bypass_menu_validation.json b/src/generated/resources/data/ragium/tags/item/bypass_menu_validation.json new file mode 100644 index 000000000..a4be04a5e --- /dev/null +++ b/src/generated/resources/data/ragium/tags/item/bypass_menu_validation.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:universal_bundle" + ] +} \ No newline at end of file diff --git a/src/main/kotlin/hiiragi283/ragium/client/accessory/HTBackAccessoryRenderer.kt b/src/integration/kotlin/hiiragi283/ragium/client/accessory/HTBackAccessoryRenderer.kt similarity index 100% rename from src/main/kotlin/hiiragi283/ragium/client/accessory/HTBackAccessoryRenderer.kt rename to src/integration/kotlin/hiiragi283/ragium/client/accessory/HTBackAccessoryRenderer.kt diff --git a/src/main/kotlin/hiiragi283/ragium/client/accessory/HTBundleAccessoryRenderer.kt b/src/integration/kotlin/hiiragi283/ragium/client/accessory/HTBundleAccessoryRenderer.kt similarity index 100% rename from src/main/kotlin/hiiragi283/ragium/client/accessory/HTBundleAccessoryRenderer.kt rename to src/integration/kotlin/hiiragi283/ragium/client/accessory/HTBundleAccessoryRenderer.kt diff --git a/src/main/kotlin/hiiragi283/ragium/client/accessory/HTGogglesAccessoryRenderer.kt b/src/integration/kotlin/hiiragi283/ragium/client/accessory/HTGogglesAccessoryRenderer.kt similarity index 100% rename from src/main/kotlin/hiiragi283/ragium/client/accessory/HTGogglesAccessoryRenderer.kt rename to src/integration/kotlin/hiiragi283/ragium/client/accessory/HTGogglesAccessoryRenderer.kt diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/HTEmiRecipeCategory.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/HTEmiRecipeCategory.kt index 3ce3b85e4..cda4681ed 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/HTEmiRecipeCategory.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/HTEmiRecipeCategory.kt @@ -12,7 +12,7 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.ItemStack /** - * @see [mekanism.client.recipe_viewer.emi.MekanismEmiRecipeCategory] + * @see mekanism.client.recipe_viewer.emi.MekanismEmiRecipeCategory */ class HTEmiRecipeCategory private constructor( val bounds: HTBounds, diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/RagiumEmiPlugin.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/RagiumEmiPlugin.kt index 580f818a0..7f8ceba6b 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/RagiumEmiPlugin.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/RagiumEmiPlugin.kt @@ -269,7 +269,7 @@ class RagiumEmiPlugin : EmiPlugin { } /** - * @see [mekanism.client.recipe_viewer.emi.MekanismEmi.addCategoryAndRecipes] + * @see mekanism.client.recipe_viewer.emi.MekanismEmi.addCategoryAndRecipes */ private inline fun , reified RECIPE : BASE, EMI_RECIPE : EmiRecipe> addCategoryAndRecipes( registry: EmiRegistry, @@ -290,7 +290,7 @@ class RagiumEmiPlugin : EmiPlugin { * @param RECIPE [recipes]で渡す一覧のクラス * @param EMI_RECIPE [factory]で返すレシピのクラス * @return 渡された[category] - * @see [mekanism.client.recipe_viewer.emi.MekanismEmi.addCategoryAndRecipes] + * @see mekanism.client.recipe_viewer.emi.MekanismEmi.addCategoryAndRecipes */ private fun addCategoryAndRecipes( registry: EmiRegistry, diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiHolderRecipe.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiHolderRecipe.kt index 4cb83ed88..4171d0dd6 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiHolderRecipe.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiHolderRecipe.kt @@ -8,7 +8,7 @@ import net.minecraft.world.item.crafting.Recipe import net.minecraft.world.item.crafting.RecipeHolder /** - * @see [mekanism.client.recipe_viewer.emi.recipe.MekanismEmiHolderRecipe] + * @see mekanism.client.recipe_viewer.emi.recipe.MekanismEmiHolderRecipe */ abstract class HTEmiHolderRecipe> : HTEmiRecipe { private val holder: RecipeHolder diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiRecipe.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiRecipe.kt index 1d063ef97..846ce2561 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiRecipe.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/HTEmiRecipe.kt @@ -27,7 +27,7 @@ import net.minecraft.world.item.crafting.RecipeHolder import net.minecraft.world.level.material.Fluid /** - * @see [mekanism.client.recipe_viewer.emi.recipe.MekanismEmiRecipe] + * @see mekanism.client.recipe_viewer.emi.recipe.MekanismEmiRecipe */ abstract class HTEmiRecipe( private val category: EmiRecipeCategory, diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTCuttingEmiRecipe.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTCuttingEmiRecipe.kt index 63aa37158..421d54cb1 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTCuttingEmiRecipe.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTCuttingEmiRecipe.kt @@ -1,40 +1,18 @@ package hiiragi283.ragium.client.integration.emi.recipe.processor -import com.mojang.datafixers.util.Either import dev.emi.emi.api.widget.WidgetHolder import hiiragi283.ragium.api.data.recipe.HTResultHelper import hiiragi283.ragium.api.recipe.ingredient.HTItemIngredient -import hiiragi283.ragium.api.stack.ImmutableItemStack -import hiiragi283.ragium.api.stack.toImmutable import hiiragi283.ragium.client.integration.emi.HTEmiRecipeCategory import hiiragi283.ragium.client.integration.emi.RagiumEmiPlugin import hiiragi283.ragium.client.integration.emi.recipe.base.HTMultiOutputEmiRecipe -import net.minecraft.tags.TagKey -import net.minecraft.world.item.Item -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.item.crafting.RecipeHolder import net.minecraft.world.item.crafting.SingleItemRecipe class HTCuttingEmiRecipe(category: HTEmiRecipeCategory, holder: RecipeHolder) : HTMultiOutputEmiRecipe(category, holder) { init { - val ingredient: Ingredient = recipe.ingredients[0] - addInput( - object : HTItemIngredient { - override fun unwrap(): Either, Int>, List> = - Either.right(ingredient.items.mapNotNull(ItemStack::toImmutable)) - - override fun test(stack: ImmutableItemStack): Boolean = ingredient.test(stack.unwrap()) - - override fun testOnlyType(stack: ImmutableItemStack): Boolean = ingredient.test(stack.unwrap()) - - override fun getRequiredAmount(stack: ImmutableItemStack): Int = if (test(stack)) 1 else 0 - - override fun hasNoMatchingStacks(): Boolean = ingredient.hasNoItems() - }, - ) - + addInput(HTItemIngredient.of(recipe.ingredients[0])) addOutputs(HTResultHelper.INSTANCE.item(recipe.getResultItem(RagiumEmiPlugin.registryAccess))) } diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTItemToItemEmiRecipe.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTItemToItemEmiRecipe.kt index 687ab202b..c00c84cc7 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTItemToItemEmiRecipe.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/recipe/processor/HTItemToItemEmiRecipe.kt @@ -10,7 +10,7 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.crafting.RecipeHolder /** - * @see [mekanism.client.recipe_viewer.emi.recipe.ItemStackToItemStackEmiRecipe] + * @see mekanism.client.recipe_viewer.emi.recipe.ItemStackToItemStackEmiRecipe */ class HTItemToItemEmiRecipe : HTEmiHolderRecipe { constructor(category: HTEmiRecipeCategory, id: ResourceLocation, recipe: HTItemToItemRecipe) : super(category, id, recipe) diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTFakeRecipeViewerType.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTFakeRecipeViewerType.kt index 5fa3f43eb..fbd32dfe8 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTFakeRecipeViewerType.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTFakeRecipeViewerType.kt @@ -8,7 +8,7 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.level.ItemLike /** - * @see [mekanism.client.recipe_viewer.type.FakeRVRecipeType] + * @see mekanism.client.recipe_viewer.type.FakeRVRecipeType */ class HTFakeRecipeViewerType( private val id: ResourceLocation, diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRecipeViewerType.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRecipeViewerType.kt index 6729c875e..cade9d56c 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRecipeViewerType.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRecipeViewerType.kt @@ -8,7 +8,7 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.level.ItemLike /** - * @see [mekanism.client.recipe_viewer.type.IRecipeViewerRecipeType] + * @see mekanism.client.recipe_viewer.type.IRecipeViewerRecipeType */ interface HTRecipeViewerType : HTBoundsProvider, diff --git a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRegistryRecipeViewerType.kt b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRegistryRecipeViewerType.kt index df32a2ef5..3d8e7f530 100644 --- a/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRegistryRecipeViewerType.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/integration/emi/type/HTRegistryRecipeViewerType.kt @@ -10,7 +10,7 @@ import net.minecraft.world.item.crafting.RecipeInput import net.minecraft.world.level.ItemLike /** - * @see [mekanism.client.recipe_viewer.type.RVRecipeTypeWrapper] + * @see mekanism.client.recipe_viewer.type.RVRecipeTypeWrapper */ class HTRegistryRecipeViewerType>( private val id: ResourceLocation, diff --git a/src/main/kotlin/hiiragi283/ragium/client/network/HTOpenUniversalBundlePacket.kt b/src/integration/kotlin/hiiragi283/ragium/client/network/HTOpenUniversalBundlePacket.kt similarity index 76% rename from src/main/kotlin/hiiragi283/ragium/client/network/HTOpenUniversalBundlePacket.kt rename to src/integration/kotlin/hiiragi283/ragium/client/network/HTOpenUniversalBundlePacket.kt index c7a1ea3c8..32d348670 100644 --- a/src/main/kotlin/hiiragi283/ragium/client/network/HTOpenUniversalBundlePacket.kt +++ b/src/integration/kotlin/hiiragi283/ragium/client/network/HTOpenUniversalBundlePacket.kt @@ -1,17 +1,16 @@ package hiiragi283.ragium.client.network import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumPlatform import hiiragi283.ragium.api.network.HTCustomPayload import hiiragi283.ragium.common.item.HTUniversalBundleItem import hiiragi283.ragium.setup.RagiumItems import io.netty.buffer.ByteBuf import io.wispforest.accessories.api.AccessoriesCapability -import io.wispforest.accessories.api.slot.SlotEntryReference import net.minecraft.network.codec.StreamCodec import net.minecraft.network.protocol.common.custom.CustomPacketPayload import net.minecraft.server.MinecraftServer import net.minecraft.server.level.ServerPlayer +import net.minecraft.world.item.ItemStack data object HTOpenUniversalBundlePacket : HTCustomPayload.C2S { @JvmField @@ -23,8 +22,11 @@ data object HTOpenUniversalBundlePacket : HTCustomPayload.C2S { override fun type(): CustomPacketPayload.Type = TYPE override fun handle(player: ServerPlayer, server: MinecraftServer) { - val capability: AccessoriesCapability = RagiumPlatform.INSTANCE.getAccessoryCap(player) ?: return - val slot: SlotEntryReference = capability.getFirstEquipped(RagiumItems.UNIVERSAL_BUNDLE.get()) ?: return - HTUniversalBundleItem.openBundle(player.level(), player, slot.stack) + val stack: ItemStack = AccessoriesCapability + .get(player) + ?.getFirstEquipped(RagiumItems.UNIVERSAL_BUNDLE.get()) + ?.stack + ?: return + HTUniversalBundleItem.openBundle(player.level(), player, stack) } } diff --git a/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAccessoriesAddon.kt b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAccessoriesAddon.kt new file mode 100644 index 000000000..5e655894b --- /dev/null +++ b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAccessoriesAddon.kt @@ -0,0 +1,83 @@ +package hiiragi283.ragium.common.integration + +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.addon.RagiumAddon +import hiiragi283.ragium.api.network.HTPayloadRegistrar +import hiiragi283.ragium.api.registry.impl.HTDeferredItem +import hiiragi283.ragium.client.RagiumKeyMappings +import hiiragi283.ragium.client.accessory.HTBackAccessoryRenderer +import hiiragi283.ragium.client.accessory.HTBundleAccessoryRenderer +import hiiragi283.ragium.client.accessory.HTGogglesAccessoryRenderer +import hiiragi283.ragium.client.network.HTOpenUniversalBundlePacket +import hiiragi283.ragium.common.util.HTPacketHelper +import hiiragi283.ragium.setup.RagiumItems +import io.wispforest.accessories.api.AccessoriesAPI +import io.wispforest.accessories.api.client.AccessoriesRendererRegistry +import io.wispforest.accessories.api.client.AccessoryRenderer +import net.minecraft.world.level.ItemLike +import net.neoforged.api.distmarker.Dist +import net.neoforged.bus.api.IEventBus +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent +import net.neoforged.neoforge.client.event.ClientTickEvent +import net.neoforged.neoforge.common.NeoForge + +object RagiumAccessoriesAddon : RagiumAddon { + override fun onModConstruct(eventBus: IEventBus, dist: Dist) { + // Common + // Client + NeoForge.EVENT_BUS.addListener(::onClientTick) + } + + @JvmStatic + private fun onClientTick(event: ClientTickEvent.Post) { + if (RagiumKeyMappings.OPEN_UNIVERSAL_BUNDLE.consumeClick()) { + HTPacketHelper.sendToServer(HTOpenUniversalBundlePacket) + } + } + + // Common // + + override fun onCommonSetup(event: FMLCommonSetupEvent) { + event.enqueueWork(RagiumAccessoriesAddon::register) + } + + @JvmStatic + fun register() { + listOf( + // Charm + RagiumItems.DYNAMIC_LANTERN, + RagiumItems.MAGNET, + RagiumItems.ADVANCED_MAGNET, + // Face + RagiumItems.NIGHT_VISION_GOGGLES, + ).forEach { item: HTDeferredItem<*> -> + AccessoriesAPI.registerAccessory(item.asItem(), RagiumAccessory) + } + RagiumAPI.LOGGER.info("Registered Accessories!") + } + + // Client // + + override fun onClientSetup(event: FMLClientSetupEvent) { + event.enqueueWork(RagiumAccessoriesAddon::registerRenderer) + } + + @JvmStatic + private fun registerRenderer() { + registerRenderer(RagiumItems.ECHO_STAR, ::HTBackAccessoryRenderer) + registerRenderer(RagiumItems.NIGHT_VISION_GOGGLES, ::HTGogglesAccessoryRenderer) + registerRenderer(RagiumItems.POTION_BUNDLE, ::HTBundleAccessoryRenderer) + registerRenderer(RagiumItems.UNIVERSAL_BUNDLE, ::HTBundleAccessoryRenderer) + RagiumAPI.LOGGER.info("Registered Accessory Renderer!") + } + + @JvmStatic + private fun registerRenderer(item: ItemLike, supplier: () -> AccessoryRenderer) { + AccessoriesRendererRegistry.registerRenderer(item.asItem(), supplier) + } + + override fun registerPayloads(registrar: HTPayloadRegistrar) { + registrar.registerC2S(HTOpenUniversalBundlePacket.TYPE, HTOpenUniversalBundlePacket.STREAM_CODEC) + } +} diff --git a/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAccessory.kt b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAccessory.kt new file mode 100644 index 000000000..4def9d11d --- /dev/null +++ b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAccessory.kt @@ -0,0 +1,28 @@ +package hiiragi283.ragium.common.integration + +import hiiragi283.ragium.api.data.map.HTEquipAction +import hiiragi283.ragium.api.data.map.RagiumDataMaps +import io.wispforest.accessories.api.Accessory +import io.wispforest.accessories.api.slot.SlotReference +import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack + +data object RagiumAccessory : Accessory { + override fun tick(stack: ItemStack, reference: SlotReference) { + val entity: LivingEntity = reference.entity() + stack.inventoryTick(entity.level(), entity, -1, false) + } + + override fun onEquip(stack: ItemStack, reference: SlotReference) { + val equipAction: HTEquipAction = stack.itemHolder.getData(RagiumDataMaps.Companion.ARMOR_EQUIP) ?: return + val entity: Player = reference.entity() as? Player ?: return + equipAction.onEquip(entity, stack) + } + + override fun onUnequip(stack: ItemStack, reference: SlotReference) { + val equipAction: HTEquipAction = stack.itemHolder.getData(RagiumDataMaps.Companion.ARMOR_EQUIP) ?: return + val entity: Player = reference.entity() as? Player ?: return + equipAction.onUnequip(entity, stack) + } +} diff --git a/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAddonProviders.kt b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAddonProviders.kt index 3e43344a5..e747dda42 100644 --- a/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAddonProviders.kt +++ b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumAddonProviders.kt @@ -11,6 +11,9 @@ import net.neoforged.fml.ModList @HTAddon class RagiumAddonProviders : RagiumAddon.Provider { override fun getAddons(modList: ModList): List = buildSet { + if (modList.isLoaded(RagiumConst.ACCESSORIES)) { + add(RagiumAccessoriesAddon) + } if (modList.isLoaded(RagiumConst.FARMERS_DELIGHT)) { add(RagiumFoodAddon) add(RagiumDelightAddon) diff --git a/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumMekanismAddon.kt b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumMekanismAddon.kt index 938746ef3..4d1595994 100644 --- a/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumMekanismAddon.kt +++ b/src/integration/kotlin/hiiragi283/ragium/common/integration/RagiumMekanismAddon.kt @@ -6,14 +6,15 @@ import hiiragi283.ragium.api.collection.ImmutableTable import hiiragi283.ragium.api.collection.buildTable import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTItemHolderLike import hiiragi283.ragium.api.registry.impl.HTDeferredItemRegister import hiiragi283.ragium.api.registry.impl.HTSimpleDeferredItem +import hiiragi283.ragium.common.material.MekanismMaterialPrefixes import hiiragi283.ragium.common.material.RagiumEssenceType import hiiragi283.ragium.common.material.RagiumMoltenCrystalData import hiiragi283.ragium.common.material.VanillaMaterialKeys -import hiiragi283.ragium.setup.MekanismMaterialPrefixes import hiiragi283.ragium.setup.RagiumCreativeTabs import hiiragi283.ragium.setup.RagiumFoods import hiiragi283.ragium.setup.RagiumItems @@ -28,6 +29,7 @@ import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.IEventBus import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent +import java.util.function.Consumer object RagiumMekanismAddon : RagiumAddon { // Chemical // @@ -56,14 +58,25 @@ object RagiumMekanismAddon : RagiumAddon { @JvmField val ITEM_REGISTER = HTDeferredItemRegister(RagiumAPI.MOD_ID) + /** + * @see RagiumItems.MATERIALS + */ val MATERIAL_ITEMS: ImmutableTable = buildTable { // Enriched for (essenceType: RagiumEssenceType in RagiumEssenceType.entries) { val key: HTMaterialKey = essenceType.asMaterialKey() - this[MekanismMaterialPrefixes.ENRICHED, key] = ITEM_REGISTER.registerSimpleItem("enriched_${key.name}") + this[MekanismMaterialPrefixes.ENRICHED.asMaterialPrefix(), key] = ITEM_REGISTER.registerSimpleItem("enriched_${key.name}") } } + /** + * @see RagiumItems.getMaterial + */ + @JvmStatic + fun getMaterial(prefix: HTPrefixLike, material: HTMaterialLike): HTSimpleDeferredItem = + MATERIAL_ITEMS[prefix.asMaterialPrefix(), material.asMaterialKey()] + ?: error("Unknown $prefix item for ${material.asMaterialName()}") + @JvmStatic fun getEnriched(material: HTMaterialLike): HTItemHolderLike = when (val key: HTMaterialKey = material.asMaterialKey()) { VanillaMaterialKeys.COAL -> HTItemHolderLike.fromHolder(MekanismItems.ENRICHED_CARBON) @@ -71,7 +84,7 @@ object RagiumMekanismAddon : RagiumAddon { VanillaMaterialKeys.DIAMOND -> HTItemHolderLike.fromHolder(MekanismItems.ENRICHED_DIAMOND) VanillaMaterialKeys.OBSIDIAN -> HTItemHolderLike.fromHolder(MekanismItems.ENRICHED_OBSIDIAN) VanillaMaterialKeys.GOLD -> HTItemHolderLike.fromHolder(MekanismItems.ENRICHED_GOLD) - else -> MATERIAL_ITEMS[MekanismMaterialPrefixes.ENRICHED, key] ?: error("Unknown enriched item for ${key.name}") + else -> getMaterial(MekanismMaterialPrefixes.ENRICHED, key) } @JvmStatic @@ -84,8 +97,10 @@ object RagiumMekanismAddon : RagiumAddon { CHEMICAL_REGISTER.register(eventBus) ITEM_REGISTER.register(eventBus) + } - MekanismMaterialPrefixes.REGISTER.register(eventBus) + override fun bindMaterialPrefixes(consumer: Consumer) { + MekanismMaterialPrefixes.entries.forEach(consumer) } override fun modifyComponents(event: ModifyDefaultComponentsEvent) { diff --git a/src/integration/kotlin/hiiragi283/ragium/common/material/MekanismMaterialPrefixes.kt b/src/integration/kotlin/hiiragi283/ragium/common/material/MekanismMaterialPrefixes.kt new file mode 100644 index 000000000..1cce41f47 --- /dev/null +++ b/src/integration/kotlin/hiiragi283/ragium/common/material/MekanismMaterialPrefixes.kt @@ -0,0 +1,26 @@ +package hiiragi283.ragium.common.material + +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumConst +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike + +enum class MekanismMaterialPrefixes : HTPrefixLike { + DIRTY_DUST, + CLUMP, + SHARD, + CRYSTAL, + PELLET, + ENRICHED { + override val prefix: HTMaterialPrefix = HTMaterialPrefix( + "enriched", + "${RagiumConst.MEKANISM}:enriched", + "${RagiumAPI.MOD_ID}:enriched/%s", + ) + }, + ; + + protected open val prefix: HTMaterialPrefix = HTMaterialPrefix(name.lowercase()) + + override fun asMaterialPrefix(): HTMaterialPrefix = prefix +} diff --git a/src/integration/kotlin/hiiragi283/ragium/common/material/ModMaterialKeys.kt b/src/integration/kotlin/hiiragi283/ragium/common/material/ModMaterialKeys.kt index cf67a0e6d..d76659de6 100644 --- a/src/integration/kotlin/hiiragi283/ragium/common/material/ModMaterialKeys.kt +++ b/src/integration/kotlin/hiiragi283/ragium/common/material/ModMaterialKeys.kt @@ -4,7 +4,6 @@ import hiiragi283.ragium.api.material.HTMaterialDefinitionEvent import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike import hiiragi283.ragium.api.material.addDefaultPrefix -import hiiragi283.ragium.setup.CommonMaterialPrefixes import net.neoforged.bus.api.SubscribeEvent import net.neoforged.fml.common.EventBusSubscriber diff --git a/src/integration/kotlin/hiiragi283/ragium/setup/DefaultMatterTypes.kt b/src/integration/kotlin/hiiragi283/ragium/setup/DefaultMatterTypes.kt index 96d306ea4..5be175178 100644 --- a/src/integration/kotlin/hiiragi283/ragium/setup/DefaultMatterTypes.kt +++ b/src/integration/kotlin/hiiragi283/ragium/setup/DefaultMatterTypes.kt @@ -6,30 +6,33 @@ import hiiragi283.ragium.api.registry.impl.HTDeferredMatterType import hiiragi283.ragium.api.registry.toId object DefaultMatterTypes { + @JvmStatic + fun create(name: String): HTDeferredMatterType = HTDeferredMatterType(RagiumConst.REPLICATION.toId(name)) + @JvmField - val EMPTY = HTDeferredMatterType(RagiumConst.REPLICATION.toId("empty")) + val EMPTY: HTDeferredMatterType = create("empty") @JvmField - val METALLIC = HTDeferredMatterType(RagiumConst.REPLICATION.toId("metallic")) + val METALLIC: HTDeferredMatterType = create("metallic") @JvmField - val EARTH = HTDeferredMatterType(RagiumConst.REPLICATION.toId("earth")) + val EARTH: HTDeferredMatterType = create("earth") @JvmField - val NETHER = HTDeferredMatterType(RagiumConst.REPLICATION.toId("nether")) + val NETHER: HTDeferredMatterType = create("nether") @JvmField - val ORGANIC = HTDeferredMatterType(RagiumConst.REPLICATION.toId("organic")) + val ORGANIC: HTDeferredMatterType = create("organic") @JvmField - val ENDER = HTDeferredMatterType(RagiumConst.REPLICATION.toId("ender")) + val ENDER: HTDeferredMatterType = create("ender") @JvmField - val PRECIOUS = HTDeferredMatterType(RagiumConst.REPLICATION.toId("precious")) + val PRECIOUS: HTDeferredMatterType = create("precious") @JvmField - val QUANTUM = HTDeferredMatterType(RagiumConst.REPLICATION.toId("quantum")) + val QUANTUM: HTDeferredMatterType = create("quantum") @JvmField - val LIVING = HTDeferredMatterType(RagiumConst.REPLICATION.toId("living")) + val LIVING: HTDeferredMatterType = create("living") } diff --git a/src/integration/kotlin/hiiragi283/ragium/setup/MekanismMaterialPrefixes.kt b/src/integration/kotlin/hiiragi283/ragium/setup/MekanismMaterialPrefixes.kt deleted file mode 100644 index 52b9618eb..000000000 --- a/src/integration/kotlin/hiiragi283/ragium/setup/MekanismMaterialPrefixes.kt +++ /dev/null @@ -1,30 +0,0 @@ -package hiiragi283.ragium.setup - -import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumConst -import hiiragi283.ragium.api.material.HTMaterialPrefix -import hiiragi283.ragium.api.registry.impl.HTDeferredMaterialPrefixRegister - -object MekanismMaterialPrefixes { - @JvmField - val REGISTER = HTDeferredMaterialPrefixRegister(RagiumConst.MEKANISM) - - @JvmField - val DIRTY_DUST: HTMaterialPrefix = REGISTER.register("dirty_dust") - - @JvmField - val CLUMP: HTMaterialPrefix = REGISTER.register("clump") - - @JvmField - val SHARD: HTMaterialPrefix = REGISTER.register("shard") - - @JvmField - val CRYSTAL: HTMaterialPrefix = REGISTER.register("crystal") - - @JvmField - val PELLET: HTMaterialPrefix = REGISTER.register("pellet") - - @JvmField - val ENRICHED: HTMaterialPrefix = - REGISTER.register("enriched", "${RagiumConst.MEKANISM}:enriched", "${RagiumAPI.MOD_ID}:enriched/%s") -} diff --git a/src/main/java/hiiragi283/ragium/mixin/ItemStackMixin.java b/src/main/java/hiiragi283/ragium/mixin/ItemStackMixin.java index 7f18bbf3f..125d8205a 100644 --- a/src/main/java/hiiragi283/ragium/mixin/ItemStackMixin.java +++ b/src/main/java/hiiragi283/ragium/mixin/ItemStackMixin.java @@ -37,7 +37,7 @@ public abstract class ItemStackMixin { private void ragium(DamageSource damageSource, CallbackInfoReturnable cir) { var damageResistant = ragium$self().get(RagiumDataComponents.DAMAGE_RESISTANT); if (damageResistant != null) { - cir.setReturnValue(!damageSource.is(damageResistant.getTypes())); + cir.setReturnValue(!damageResistant.getEntry().map(damageSource::is, damageSource::is)); } } } diff --git a/src/main/kotlin/hiiragi283/ragium/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/RagiumCommon.kt index f7633439c..10e9af4a5 100644 --- a/src/main/kotlin/hiiragi283/ragium/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/RagiumCommon.kt @@ -6,9 +6,7 @@ import hiiragi283.ragium.api.addon.RagiumAddon import hiiragi283.ragium.api.data.map.RagiumDataMaps import hiiragi283.ragium.api.data.registry.HTBrewingEffect import hiiragi283.ragium.api.data.registry.HTSolarPower -import hiiragi283.ragium.api.network.HTPayloadRegister -import hiiragi283.ragium.client.network.HTOpenPotionBundlePacket -import hiiragi283.ragium.client.network.HTOpenUniversalBundlePacket +import hiiragi283.ragium.api.network.HTPayloadRegistrar import hiiragi283.ragium.client.network.HTUpdateAccessConfigPayload import hiiragi283.ragium.client.network.HTUpdateTelepadPacket import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket @@ -18,8 +16,6 @@ import hiiragi283.ragium.common.network.HTUpdateFluidTankPacket import hiiragi283.ragium.common.util.RagiumChunkLoader import hiiragi283.ragium.config.RagiumConfig import hiiragi283.ragium.impl.material.RagiumMaterialManager -import hiiragi283.ragium.setup.CommonMaterialPrefixes -import hiiragi283.ragium.setup.RagiumAccessoryRegister import hiiragi283.ragium.setup.RagiumAttachmentTypes import hiiragi283.ragium.setup.RagiumBlockEntityTypes import hiiragi283.ragium.setup.RagiumBlocks @@ -66,7 +62,6 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) { eventBus.addListener(::registerDataPackRegistries) eventBus.addListener(RagiumChunkLoader::registerController) - CommonMaterialPrefixes.REGISTER.register(eventBus) RagiumDataComponents.REGISTER.register(eventBus) RagiumEnchantmentComponents.REGISTER.register(eventBus) @@ -105,7 +100,7 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) { } private fun registerRegistries(event: NewRegistryEvent) { - event.register(RagiumAPI.MATERIAL_PREFIX_REGISTRY) + event.register(RagiumAPI.EQUIP_ACTION_TYPE_REGISTRY) event.register(RagiumAPI.MATERIAL_RECIPE_TYPE_REGISTRY) RagiumAPI.LOGGER.info("Registered new registries!") @@ -130,7 +125,6 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) { RagiumFluidContents.registerInteractions() RagiumAPI.LOGGER.info("Registered dispenser behaviors!") } - event.enqueueWork(RagiumAccessoryRegister::register) event.enqueueWork(RagiumFluidContents::registerInteractions) event.enqueueWork(RagiumMaterialManager::gatherAttributes) @@ -141,12 +135,15 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) { } private fun registerDataMapTypes(event: RegisterDataMapTypesEvent) { + event.register(RagiumDataMaps.ENCHANT_FUEL) + + event.register(RagiumDataMaps.MOB_HEAD) + event.register(RagiumDataMaps.THERMAL_FUEL) event.register(RagiumDataMaps.COMBUSTION_FUEL) event.register(RagiumDataMaps.NUCLEAR_FUEL) - event.register(RagiumDataMaps.ENCHANT_FUEL) - event.register(RagiumDataMaps.MOB_HEAD) + event.register(RagiumDataMaps.ARMOR_EQUIP) event.register(RagiumDataMaps.MATERIAL_RECIPE) @@ -154,17 +151,18 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) { } private fun registerPackets(event: RegisterPayloadHandlersEvent) { - with(HTPayloadRegister(event.registrar(RagiumAPI.MOD_ID))) { - // Server -> Client - registerS2C(HTUpdateBlockEntityPacket.TYPE, HTUpdateBlockEntityPacket.STREAM_CODEC) - registerS2C(HTUpdateEnergyStoragePacket.TYPE, HTUpdateEnergyStoragePacket.STREAM_CODEC) - registerS2C(HTUpdateExperienceStoragePacket.TYPE, HTUpdateExperienceStoragePacket.STREAM_CODEC) - registerS2C(HTUpdateFluidTankPacket.TYPE, HTUpdateFluidTankPacket.STREAM_CODEC) - // Client -> Server - registerC2S(HTOpenPotionBundlePacket.TYPE, HTOpenPotionBundlePacket.STREAM_CODEC) - registerC2S(HTOpenUniversalBundlePacket.TYPE, HTOpenUniversalBundlePacket.STREAM_CODEC) - registerC2S(HTUpdateAccessConfigPayload.TYPE, HTUpdateAccessConfigPayload.STREAM_CODEC) - registerC2S(HTUpdateTelepadPacket.TYPE, HTUpdateTelepadPacket.STREAM_CODEC) + val registrar = HTPayloadRegistrar(event.registrar(RagiumAPI.MOD_ID)) + // Server -> Client + registrar.registerS2C(HTUpdateBlockEntityPacket.TYPE, HTUpdateBlockEntityPacket.STREAM_CODEC) + registrar.registerS2C(HTUpdateEnergyStoragePacket.TYPE, HTUpdateEnergyStoragePacket.STREAM_CODEC) + registrar.registerS2C(HTUpdateExperienceStoragePacket.TYPE, HTUpdateExperienceStoragePacket.STREAM_CODEC) + registrar.registerS2C(HTUpdateFluidTankPacket.TYPE, HTUpdateFluidTankPacket.STREAM_CODEC) + // Client -> Server + registrar.registerC2S(HTUpdateAccessConfigPayload.TYPE, HTUpdateAccessConfigPayload.STREAM_CODEC) + registrar.registerC2S(HTUpdateTelepadPacket.TYPE, HTUpdateTelepadPacket.STREAM_CODEC) + + for (addon: RagiumAddon in RagiumPlatform.INSTANCE.getAddons()) { + addon.registerPayloads(registrar) } RagiumAPI.LOGGER.info("Registered packets!") diff --git a/src/main/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/main/kotlin/hiiragi283/ragium/client/RagiumClient.kt index efa9b7b11..7c4a6207d 100644 --- a/src/main/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/main/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -1,14 +1,13 @@ package hiiragi283.ragium.client import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumPlatform +import hiiragi283.ragium.api.addon.RagiumAddon import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.impl.HTDeferredItem import hiiragi283.ragium.api.registry.impl.HTDeferredMenuType import hiiragi283.ragium.api.registry.impl.HTSimpleDeferredBlock import hiiragi283.ragium.api.registry.vanillaId -import hiiragi283.ragium.client.accessory.HTBackAccessoryRenderer -import hiiragi283.ragium.client.accessory.HTBundleAccessoryRenderer -import hiiragi283.ragium.client.accessory.HTGogglesAccessoryRenderer import hiiragi283.ragium.client.event.HTClientItemTooltipComponent import hiiragi283.ragium.client.event.HTItemTooltipContent import hiiragi283.ragium.client.gui.screen.HTAccessConfigurationScreen @@ -44,8 +43,6 @@ import hiiragi283.ragium.setup.RagiumEntityTypes import hiiragi283.ragium.setup.RagiumFluidContents import hiiragi283.ragium.setup.RagiumItems import hiiragi283.ragium.setup.RagiumMenuTypes -import io.wispforest.accessories.api.client.AccessoriesRendererRegistry -import io.wispforest.accessories.api.client.AccessoryRenderer import net.minecraft.client.model.MinecartModel import net.minecraft.client.model.geom.ModelLayerLocation import net.minecraft.client.renderer.BiomeColors @@ -55,7 +52,6 @@ import net.minecraft.client.renderer.entity.ThrownItemRenderer import net.minecraft.core.BlockPos import net.minecraft.world.item.ItemStack import net.minecraft.world.level.BlockAndTintGetter -import net.minecraft.world.level.ItemLike import net.minecraft.world.level.block.state.BlockState import net.neoforged.api.distmarker.Dist import net.neoforged.api.distmarker.OnlyIn @@ -96,19 +92,13 @@ class RagiumClient(eventBus: IEventBus, container: ModContainer) { } private fun clientSetup(event: FMLClientSetupEvent) { - event.enqueueWork(::registerAccessories) + for (addon: RagiumAddon in RagiumPlatform.INSTANCE.getAddons()) { + addon.onClientSetup(event) + } RagiumAPI.LOGGER.info("Loaded Client Setup!") } - private fun registerAccessories() { - accessoryRenderer(RagiumItems.ECHO_STAR, ::HTBackAccessoryRenderer) - accessoryRenderer(RagiumItems.NIGHT_VISION_GOGGLES, ::HTGogglesAccessoryRenderer) - accessoryRenderer(RagiumItems.POTION_BUNDLE, ::HTBundleAccessoryRenderer) - accessoryRenderer(RagiumItems.UNIVERSAL_BUNDLE, ::HTBundleAccessoryRenderer) - RagiumAPI.LOGGER.info("Registered Accessory Renderer!") - } - private fun registerBlockColor(event: RegisterColorHandlersEvent.Block) { // Water Collector event.register( @@ -318,10 +308,6 @@ class RagiumClient(eventBus: IEventBus, container: ModContainer) { // Extensions // - private fun accessoryRenderer(item: ItemLike, supplier: () -> AccessoryRenderer) { - AccessoriesRendererRegistry.registerRenderer(item.asItem(), supplier) - } - private fun RegisterClientExtensionsEvent.liquid(content: HTFluidContent<*, *, *>, color: Color) { this.registerFluidType(HTSimpleFluidExtensions.liquid(color), content.getType()) } diff --git a/src/main/kotlin/hiiragi283/ragium/client/RagiumKeyMappings.kt b/src/main/kotlin/hiiragi283/ragium/client/RagiumKeyMappings.kt index 4d0efb6dd..570941fbf 100644 --- a/src/main/kotlin/hiiragi283/ragium/client/RagiumKeyMappings.kt +++ b/src/main/kotlin/hiiragi283/ragium/client/RagiumKeyMappings.kt @@ -8,15 +8,11 @@ import org.lwjgl.glfw.GLFW @OnlyIn(Dist.CLIENT) object RagiumKeyMappings { - @JvmField - val OPEN_POTION_BUNDLE: HTKeyMapping = createKey("open_potion_bundle", GLFW.GLFW_KEY_P) - @JvmField val OPEN_UNIVERSAL_BUNDLE: HTKeyMapping = createKey("open_universal_bundle", GLFW.GLFW_KEY_U) @JvmField val KEYS: List = listOf( - OPEN_POTION_BUNDLE, OPEN_UNIVERSAL_BUNDLE, ) diff --git a/src/main/kotlin/hiiragi283/ragium/client/event/RagiumKeyPressingHandler.kt b/src/main/kotlin/hiiragi283/ragium/client/event/RagiumKeyPressingHandler.kt deleted file mode 100644 index f2ae07ed6..000000000 --- a/src/main/kotlin/hiiragi283/ragium/client/event/RagiumKeyPressingHandler.kt +++ /dev/null @@ -1,24 +0,0 @@ -package hiiragi283.ragium.client.event - -import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.client.RagiumKeyMappings -import hiiragi283.ragium.client.network.HTOpenPotionBundlePacket -import hiiragi283.ragium.client.network.HTOpenUniversalBundlePacket -import hiiragi283.ragium.common.util.HTPacketHelper -import net.neoforged.api.distmarker.Dist -import net.neoforged.bus.api.SubscribeEvent -import net.neoforged.fml.common.EventBusSubscriber -import net.neoforged.neoforge.client.event.ClientTickEvent - -@EventBusSubscriber(value = [Dist.CLIENT], modid = RagiumAPI.MOD_ID) -object RagiumKeyPressingHandler { - @SubscribeEvent - fun onClientTick(event: ClientTickEvent.Post) { - if (RagiumKeyMappings.OPEN_POTION_BUNDLE.consumeClick()) { - HTPacketHelper.sendToServer(HTOpenPotionBundlePacket) - } - if (RagiumKeyMappings.OPEN_UNIVERSAL_BUNDLE.consumeClick()) { - HTPacketHelper.sendToServer(HTOpenUniversalBundlePacket) - } - } -} diff --git a/src/main/kotlin/hiiragi283/ragium/client/gui/component/HTNumberEditBox.kt b/src/main/kotlin/hiiragi283/ragium/client/gui/component/HTNumberEditBox.kt index 29821b9ac..ea0aca40e 100644 --- a/src/main/kotlin/hiiragi283/ragium/client/gui/component/HTNumberEditBox.kt +++ b/src/main/kotlin/hiiragi283/ragium/client/gui/component/HTNumberEditBox.kt @@ -10,7 +10,7 @@ import net.neoforged.api.distmarker.OnlyIn import java.util.function.Function /** - * @see [me.desht.pneumaticcraft.client.gui.widget.WidgetTextFieldNumber] + * @see me.desht.pneumaticcraft.client.gui.widget.WidgetTextFieldNumber */ @OnlyIn(Dist.CLIENT) sealed class HTNumberEditBox>( diff --git a/src/main/kotlin/hiiragi283/ragium/client/network/HTOpenPotionBundlePacket.kt b/src/main/kotlin/hiiragi283/ragium/client/network/HTOpenPotionBundlePacket.kt deleted file mode 100644 index b814eb946..000000000 --- a/src/main/kotlin/hiiragi283/ragium/client/network/HTOpenPotionBundlePacket.kt +++ /dev/null @@ -1,30 +0,0 @@ -package hiiragi283.ragium.client.network - -import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumPlatform -import hiiragi283.ragium.api.network.HTCustomPayload -import hiiragi283.ragium.setup.RagiumItems -import hiiragi283.ragium.setup.RagiumMenuTypes -import io.netty.buffer.ByteBuf -import io.wispforest.accessories.api.AccessoriesCapability -import io.wispforest.accessories.api.slot.SlotEntryReference -import net.minecraft.network.codec.StreamCodec -import net.minecraft.network.protocol.common.custom.CustomPacketPayload -import net.minecraft.server.MinecraftServer -import net.minecraft.server.level.ServerPlayer - -data object HTOpenPotionBundlePacket : HTCustomPayload.C2S { - @JvmField - val TYPE: CustomPacketPayload.Type = CustomPacketPayload.Type(RagiumAPI.id("open_potion_bundle")) - - @JvmField - val STREAM_CODEC: StreamCodec = StreamCodec.unit(HTOpenPotionBundlePacket) - - override fun type(): CustomPacketPayload.Type = TYPE - - override fun handle(player: ServerPlayer, server: MinecraftServer) { - val capability: AccessoriesCapability = RagiumPlatform.INSTANCE.getAccessoryCap(player) ?: return - val slot: SlotEntryReference = capability.getFirstEquipped(RagiumItems.POTION_BUNDLE.get()) ?: return - RagiumMenuTypes.POTION_BUNDLE.openMenu(player, null, slot.stack) - } -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTAccessorySlot.kt b/src/main/kotlin/hiiragi283/ragium/common/accessory/HTAccessorySlot.kt deleted file mode 100644 index 7d4bc8d0a..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTAccessorySlot.kt +++ /dev/null @@ -1,29 +0,0 @@ -package hiiragi283.ragium.common.accessory - -import hiiragi283.ragium.api.RagiumConst -import hiiragi283.ragium.api.registry.toId -import hiiragi283.ragium.api.tag.createTagKey -import net.minecraft.core.registries.Registries -import net.minecraft.tags.TagKey -import net.minecraft.world.item.Item - -/** - * @see io.wispforest.accessories.api.data.AccessoriesBaseData - */ -enum class HTAccessorySlot { - ANKLET, - BACK, - BELT, - CAPE, - CHARM, - FACE, - HAND, - HAT, - NECKLACE, - RING, - SHOES, - WRIST, - ; - - val slotTag: TagKey = Registries.ITEM.createTagKey(RagiumConst.ACCESSORIES.toId(name.lowercase())) -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTMagnetizationAccessory.kt b/src/main/kotlin/hiiragi283/ragium/common/accessory/HTMagnetizationAccessory.kt deleted file mode 100644 index fdedef2b4..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTMagnetizationAccessory.kt +++ /dev/null @@ -1,35 +0,0 @@ -package hiiragi283.ragium.common.accessory - -import hiiragi283.ragium.api.extension.getRangedAABB -import hiiragi283.ragium.common.util.HTItemHelper -import io.wispforest.accessories.api.Accessory -import io.wispforest.accessories.api.slot.SlotReference -import net.minecraft.server.level.ServerLevel -import net.minecraft.world.entity.Entity -import net.minecraft.world.entity.player.Player -import net.minecraft.world.item.ItemStack -import java.util.function.BiPredicate - -class HTMagnetizationAccessory(val entityClass: Class, val interaction: BiPredicate) : Accessory { - companion object { - @JvmStatic - inline fun create(interaction: BiPredicate): HTMagnetizationAccessory = - HTMagnetizationAccessory(T::class.java, interaction) - } - - override fun tick(stack: ItemStack, reference: SlotReference) { - super.tick(stack, reference) - val player: Player = reference.entity() as? Player ?: return - val level: ServerLevel = player.level() as? ServerLevel ?: return - val range: Double = HTItemHelper.processCollectorRange(level, stack) - val entitiesInRange: List = level.getEntitiesOfClass( - entityClass, - player.position().getRangedAABB(range), - ) - for (entity: T in entitiesInRange) { - if (interaction.test(entity, player)) { - entity.playerTouch(player) - } - } - } -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTMobEffectAccessory.kt b/src/main/kotlin/hiiragi283/ragium/common/accessory/HTMobEffectAccessory.kt deleted file mode 100644 index 2e4cbc693..000000000 --- a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTMobEffectAccessory.kt +++ /dev/null @@ -1,33 +0,0 @@ -package hiiragi283.ragium.common.accessory - -import io.wispforest.accessories.api.Accessory -import io.wispforest.accessories.api.slot.SlotReference -import net.minecraft.core.Holder -import net.minecraft.world.effect.MobEffect -import net.minecraft.world.effect.MobEffectInstance -import net.minecraft.world.item.ItemStack - -class HTMobEffectAccessory( - private val effect: Holder, - private val duration: Int, - private val amplifier: Int = 0, - private val ambient: Boolean = false, - private val visible: Boolean = true, -) : Accessory { - override fun onEquip(stack: ItemStack, reference: SlotReference) { - reference.entity().addEffect( - MobEffectInstance( - effect, - duration, - amplifier, - ambient, - visible, - visible, - ), - ) - } - - override fun onUnequip(stack: ItemStack, reference: SlotReference) { - reference.entity().removeEffect(effect) - } -} diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/consumer/HTChancedItemOutputBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/consumer/HTChancedItemOutputBlockEntity.kt index 0a96ca681..8f59a13c1 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/consumer/HTChancedItemOutputBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/consumer/HTChancedItemOutputBlockEntity.kt @@ -5,7 +5,7 @@ import hiiragi283.ragium.api.recipe.HTChancedItemRecipe import hiiragi283.ragium.api.recipe.manager.HTRecipeCache import hiiragi283.ragium.api.recipe.manager.HTRecipeFinder import hiiragi283.ragium.api.recipe.manager.createCache -import hiiragi283.ragium.api.recipe.result.HTItemResult +import hiiragi283.ragium.api.recipe.result.HTChancedItemResult import hiiragi283.ragium.api.stack.ImmutableItemStack import hiiragi283.ragium.api.storage.HTStorageAction import hiiragi283.ragium.api.storage.holder.HTFluidTankHolder @@ -84,11 +84,9 @@ abstract class HTChancedItemOutputBlockEntity level.random.nextFloat()) { - val stackIn: ImmutableItemStack = result.getStackOrNull(level.registryAccess()) ?: continue - HTStackSlotHelper.insertStacks(outputSlots, stackIn, HTStorageAction.EXECUTE) - } + for (result: HTChancedItemResult in recipe.getResultItems(input)) { + val stackIn: ImmutableItemStack = result.getStackOrNull(level.registryAccess(), level.random) ?: continue + HTStackSlotHelper.insertStacks(outputSlots, stackIn, HTStorageAction.EXECUTE) } } diff --git a/src/main/kotlin/hiiragi283/ragium/common/event/RagiumEnchantmentEvents.kt b/src/main/kotlin/hiiragi283/ragium/common/event/RagiumEnchantmentEvents.kt new file mode 100644 index 000000000..91c6e6edd --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/event/RagiumEnchantmentEvents.kt @@ -0,0 +1,69 @@ +package hiiragi283.ragium.common.event + +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.map.RagiumDataMaps +import hiiragi283.ragium.api.tag.RagiumModTags +import hiiragi283.ragium.common.util.HTItemHelper +import hiiragi283.ragium.setup.RagiumBlocks +import hiiragi283.ragium.setup.RagiumDataComponents +import net.minecraft.core.BlockPos +import net.minecraft.world.damagesource.DamageSource +import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.Level +import net.minecraft.world.level.block.state.BlockState +import net.neoforged.bus.api.SubscribeEvent +import net.neoforged.fml.common.EventBusSubscriber +import net.neoforged.neoforge.event.enchanting.GetEnchantmentLevelEvent +import net.neoforged.neoforge.event.entity.living.LivingDeathEvent + +@EventBusSubscriber(modid = RagiumAPI.MOD_ID) +object RagiumEnchantmentEvents { + @SubscribeEvent + fun getEnchantmentLevel(event: GetEnchantmentLevelEvent) { + event.stack + .get(RagiumDataComponents.INTRINSIC_ENCHANTMENT) + ?.useInstance(event.lookup, event.enchantments::set) + } + + @SubscribeEvent + fun onEntityDeath(event: LivingDeathEvent) { + val entity: LivingEntity = event.entity + val level: Level = entity.level() + val source: DamageSource = event.source + // サーバー側のみで実行する + if (level.isClientSide) return + generateResonantDebris(entity, level) + lootMobHead(entity, level, source) + } + + @JvmStatic + private fun generateResonantDebris(entity: LivingEntity, level: Level) { + // 対象が共振の残骸を生成しない場合はスキップ + if (!entity.type.`is`(RagiumModTags.EntityTypes.GENERATE_RESONANT_DEBRIS)) return + // 半径4 m以内のブロックに対して変換を試みる + val entityPos: BlockPos = entity.blockPosition() + BlockPos.betweenClosed(entityPos.offset(-4, -4, -4), entityPos.offset(4, 4, 4)).forEach { pos: BlockPos -> + val state: BlockState = level.getBlockState(pos) + if (state.`is`(RagiumModTags.Blocks.RESONANT_DEBRIS_REPLACEABLES)) { + if (entity.random.nextInt(15) == 0) { + level.destroyBlock(pos, false) + level.setBlockAndUpdate(pos, RagiumBlocks.RESONANT_DEBRIS.get().defaultBlockState()) + } + } + } + } + + @Suppress("DEPRECATION") + @JvmStatic + private fun lootMobHead(entity: LivingEntity, level: Level, source: DamageSource) { + // 武器にStrike効果が付いているか判定 + val weapon: ItemStack = source.weaponItem ?: return + if (HTItemHelper.hasStrike(weapon)) { + // 対象のモブに対応する頭をドロップする + RagiumDataMaps.INSTANCE + .getMobHead(level.registryAccess(), entity.type.builtInRegistryHolder()) + .let(entity::spawnAtLocation) + } + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/event/RagiumMaterialEvents.kt b/src/main/kotlin/hiiragi283/ragium/common/event/RagiumMaterialEvents.kt index e793d77a0..fe8635e65 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/event/RagiumMaterialEvents.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/event/RagiumMaterialEvents.kt @@ -5,9 +5,9 @@ import hiiragi283.ragium.api.material.HTMaterialDefinitionEvent import hiiragi283.ragium.api.material.addDefaultPrefix import hiiragi283.ragium.api.material.addName import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys -import hiiragi283.ragium.setup.CommonMaterialPrefixes import net.neoforged.bus.api.EventPriority import net.neoforged.bus.api.SubscribeEvent import net.neoforged.fml.common.EventBusSubscriber diff --git a/src/main/kotlin/hiiragi283/ragium/common/event/RagiumRuntimeEvents.kt b/src/main/kotlin/hiiragi283/ragium/common/event/RagiumRuntimeEvents.kt index ed02b4d23..6d2c0cefa 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/event/RagiumRuntimeEvents.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/event/RagiumRuntimeEvents.kt @@ -1,25 +1,16 @@ package hiiragi283.ragium.common.event import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.RagiumPlatform -import hiiragi283.ragium.api.data.map.RagiumDataMaps -import hiiragi283.ragium.api.registry.HTKeyOrTagEntry import hiiragi283.ragium.api.stack.ImmutableItemStack -import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.common.util.HTItemDropHelper -import hiiragi283.ragium.common.util.HTItemHelper import hiiragi283.ragium.config.RagiumConfig -import hiiragi283.ragium.setup.RagiumBlocks import hiiragi283.ragium.setup.RagiumDataComponents import hiiragi283.ragium.setup.RagiumItems -import io.wispforest.accessories.api.AccessoriesCapability -import io.wispforest.accessories.api.slot.SlotEntryReference -import net.minecraft.core.BlockPos import net.minecraft.sounds.SoundEvents import net.minecraft.sounds.SoundSource import net.minecraft.world.InteractionResult -import net.minecraft.world.damagesource.DamageSource -import net.minecraft.world.damagesource.DamageType +import net.minecraft.world.effect.MobEffectInstance +import net.minecraft.world.effect.MobEffects import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.EquipmentSlotGroup import net.minecraft.world.entity.LivingEntity @@ -30,21 +21,17 @@ import net.minecraft.world.item.Equipable import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import net.minecraft.world.level.Level -import net.minecraft.world.level.block.state.BlockState import net.neoforged.bus.api.SubscribeEvent import net.neoforged.fml.common.EventBusSubscriber import net.neoforged.neoforge.common.EffectCure import net.neoforged.neoforge.common.EffectCures import net.neoforged.neoforge.common.NeoForgeMod import net.neoforged.neoforge.event.ItemAttributeModifierEvent -import net.neoforged.neoforge.event.enchanting.GetEnchantmentLevelEvent -import net.neoforged.neoforge.event.entity.living.LivingDamageEvent -import net.neoforged.neoforge.event.entity.living.LivingDeathEvent import net.neoforged.neoforge.event.entity.living.LivingEntityUseItemEvent +import net.neoforged.neoforge.event.entity.living.LivingEquipmentChangeEvent import net.neoforged.neoforge.event.entity.living.MobEffectEvent import net.neoforged.neoforge.event.entity.player.PlayerEvent import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent -import kotlin.collections.forEach @EventBusSubscriber(modid = RagiumAPI.MOD_ID) object RagiumRuntimeEvents { @@ -126,15 +113,6 @@ object RagiumRuntimeEvents { } } - // Enchantment // - - @SubscribeEvent - fun getEnchantmentLevel(event: GetEnchantmentLevelEvent) { - event.stack - .get(RagiumDataComponents.INTRINSIC_ENCHANTMENT) - ?.useInstance(event.lookup, event.enchantments::set) - } - // Entity // @SubscribeEvent @@ -158,6 +136,25 @@ object RagiumRuntimeEvents { } } + @SubscribeEvent + fun onEquipped(event: LivingEquipmentChangeEvent) { + val entity: LivingEntity = event.entity + val from: ItemStack = event.from + val to: ItemStack = event.to + // 装着時 + if (from.isEmpty) { + if (to.`is`(RagiumItems.NIGHT_VISION_GOGGLES)) { + entity.addEffect(MobEffectInstance(MobEffects.NIGHT_VISION, -1, 0, true, true)) + } + } + // 脱着時 + if (to.isEmpty) { + if (from.`is`(RagiumItems.NIGHT_VISION_GOGGLES)) { + entity.removeEffect(MobEffects.NIGHT_VISION) + } + } + } + /*fun onEntityStruck(event: EntityStruckByLightningEvent) { // プレイヤーによって召喚された落雷は無視される if (event.lightning.cause != null) return @@ -180,60 +177,6 @@ object RagiumRuntimeEvents { } }*/ - @SubscribeEvent - fun beforeEntityDamaged(event: LivingDamageEvent.Pre) { - val accessoryCap: AccessoriesCapability = RagiumPlatform.Companion.INSTANCE.getAccessoryCap(event.entity) ?: return - val reference: SlotEntryReference = accessoryCap.getFirstEquipped { stack: ItemStack -> - stack.has(RagiumDataComponents.IMMUNE_DAMAGE_TYPES) - } ?: return - val entry: HTKeyOrTagEntry = reference.stack.get(RagiumDataComponents.IMMUNE_DAMAGE_TYPES) ?: return - val source: DamageSource = event.source - if (entry.map(source::`is`, source::`is`)) { - event.newDamage = 0f - } - } - - @SubscribeEvent - fun onEntityDeath(event: LivingDeathEvent) { - val entity: LivingEntity = event.entity - val level: Level = entity.level() - val source: DamageSource = event.source - // サーバー側のみで実行する - if (level.isClientSide) return - generateResonantDebris(entity, level) - lootMobHead(entity, level, source) - } - - @JvmStatic - private fun generateResonantDebris(entity: LivingEntity, level: Level) { - // 対象が共振の残骸を生成しない場合はスキップ - if (!entity.type.`is`(RagiumModTags.EntityTypes.GENERATE_RESONANT_DEBRIS)) return - // 半径4 m以内のブロックに対して変換を試みる - val entityPos: BlockPos = entity.blockPosition() - BlockPos.betweenClosed(entityPos.offset(-4, -4, -4), entityPos.offset(4, 4, 4)).forEach { pos: BlockPos -> - val state: BlockState = level.getBlockState(pos) - if (state.`is`(RagiumModTags.Blocks.RESONANT_DEBRIS_REPLACEABLES)) { - if (entity.random.nextInt(15) == 0) { - level.destroyBlock(pos, false) - level.setBlockAndUpdate(pos, RagiumBlocks.RESONANT_DEBRIS.get().defaultBlockState()) - } - } - } - } - - @Suppress("DEPRECATION") - @JvmStatic - private fun lootMobHead(entity: LivingEntity, level: Level, source: DamageSource) { - // 武器にStrike効果が付いているか判定 - val weapon: ItemStack = source.weaponItem ?: return - if (HTItemHelper.hasStrike(weapon)) { - // 対象のモブに対応する頭をドロップする - RagiumDataMaps.Companion.INSTANCE - .getMobHead(level.registryAccess(), entity.type.builtInRegistryHolder()) - .let(entity::spawnAtLocation) - } - } - @SubscribeEvent fun onEffectRemove(event: MobEffectEvent.Remove) { val cure: EffectCure = event.cure ?: return diff --git a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTDynamicLightingAccessory.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTDynamicLanternItem.kt similarity index 62% rename from src/main/kotlin/hiiragi283/ragium/common/accessory/HTDynamicLightingAccessory.kt rename to src/main/kotlin/hiiragi283/ragium/common/item/HTDynamicLanternItem.kt index 2a6f36373..7f0cc6fb2 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/accessory/HTDynamicLightingAccessory.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTDynamicLanternItem.kt @@ -1,10 +1,9 @@ -package hiiragi283.ragium.common.accessory +package hiiragi283.ragium.common.item +import hiiragi283.ragium.common.item.base.HTActivatableItem import hiiragi283.ragium.config.RagiumConfig -import io.wispforest.accessories.api.Accessory -import io.wispforest.accessories.api.slot.SlotReference import net.minecraft.core.BlockPos -import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.entity.player.Player import net.minecraft.world.item.ItemStack import net.minecraft.world.level.Level import net.minecraft.world.level.LightLayer @@ -12,15 +11,18 @@ import net.minecraft.world.level.block.Blocks import net.minecraft.world.level.block.state.BlockState import kotlin.math.roundToInt -object HTDynamicLightingAccessory : Accessory { - override fun tick(stack: ItemStack, reference: SlotReference) { - super.tick(stack, reference) - val entity: LivingEntity = reference.entity() - val level: Level = entity.level() +class HTDynamicLanternItem(properties: Properties) : HTActivatableItem(properties) { + override fun onTick( + stack: ItemStack, + level: Level, + player: Player, + slotId: Int, + isSelected: Boolean, + ) { val range: Int = RagiumConfig.COMMON.deviceCollectorEntityRange.asDouble .roundToInt() for (pos: BlockPos in BlockPos.betweenClosed(-range, -range, -range, range, range, range)) { - val posIn: BlockPos = entity.blockPosition().offset(pos) + val posIn: BlockPos = player.blockPosition().offset(pos) val state: BlockState = level.getBlockState(posIn) if (state.isAir && level.getBrightness(LightLayer.BLOCK, posIn) == 0) { level.setBlockAndUpdate(posIn, Blocks.LIGHT.defaultBlockState()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTMagnetItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTMagnetItem.kt new file mode 100644 index 000000000..2b09c2659 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTMagnetItem.kt @@ -0,0 +1,41 @@ +package hiiragi283.ragium.common.item + +import hiiragi283.ragium.api.RagiumConst +import hiiragi283.ragium.api.extension.getRangedAABB +import hiiragi283.ragium.common.item.base.HTActivatableItem +import hiiragi283.ragium.common.util.HTItemHelper +import net.minecraft.server.level.ServerLevel +import net.minecraft.world.entity.Entity +import net.minecraft.world.entity.ExperienceOrb +import net.minecraft.world.entity.item.ItemEntity +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.Level +import java.util.function.DoubleSupplier + +class HTMagnetItem(private val range: DoubleSupplier, properties: Properties) : HTActivatableItem(properties) { + override fun onTick( + stack: ItemStack, + level: Level, + player: Player, + slotId: Int, + isSelected: Boolean, + ) { + val level: ServerLevel = level as? ServerLevel ?: return + val range: Double = HTItemHelper.processCollectorRange(level, stack, range.asDouble) + + val entitiesInRange: List = level.getEntities( + player, + player.position().getRangedAABB(range), + ) { entityIn: Entity? -> + when (entityIn) { + is ItemEntity -> !entityIn.persistentData.getBoolean(RagiumConst.PREVENT_ITEM_MAGNET) + is ExperienceOrb -> true + else -> false + } + } + for (entityIn: Entity in entitiesInRange) { + entityIn.playerTouch(player) + } + } +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBundleItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBundleItem.kt index 4da3bf619..7c609fa27 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBundleItem.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/HTPotionBundleItem.kt @@ -40,7 +40,6 @@ class HTPotionBundleItem(properties: Properties) : Item(properties.stacksTo(1)) override fun use(level: Level, player: Player, usedHand: InteractionHand): InteractionResultHolder { val stack: ItemStack = player.getItemInHand(usedHand) - if (stack.isEmpty) return InteractionResultHolder.fail(stack) //  シフト中はGUIを開く return when { player.isShiftKeyDown -> InteractionResultHolder( diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/base/HTActivatableItem.kt b/src/main/kotlin/hiiragi283/ragium/common/item/base/HTActivatableItem.kt new file mode 100644 index 000000000..c045ff154 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/item/base/HTActivatableItem.kt @@ -0,0 +1,67 @@ +package hiiragi283.ragium.common.item.base + +import hiiragi283.ragium.setup.RagiumDataComponents +import net.minecraft.world.InteractionHand +import net.minecraft.world.InteractionResultHolder +import net.minecraft.world.entity.Entity +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.Level + +/** + * @see com.enderio.base.common.item.tool.PoweredToggledItem + */ +abstract class HTActivatableItem(properties: Properties) : Item(properties.stacksTo(1)) { + protected fun isActive(stack: ItemStack): Boolean = stack.getOrDefault(RagiumDataComponents.IS_ACTIVE, false) + + protected fun activate(stack: ItemStack) { + val oldActive: Boolean? = stack.get(RagiumDataComponents.IS_ACTIVE) + if (oldActive != true) { + stack.set(RagiumDataComponents.IS_ACTIVE, true) + } + } + + protected fun inactivate(stack: ItemStack) { + val oldActive: Boolean? = stack.get(RagiumDataComponents.IS_ACTIVE) + if (oldActive == true) { + stack.remove(RagiumDataComponents.IS_ACTIVE) + } + } + + final override fun use(level: Level, player: Player, usedHand: InteractionHand): InteractionResultHolder { + if (player.isCrouching) { + val stack: ItemStack = player.getItemInHand(usedHand) + if (isActive(stack)) { + inactivate(stack) + } else { + activate(stack) + } + } + return super.use(level, player, usedHand) + } + + final override fun inventoryTick( + stack: ItemStack, + level: Level, + entity: Entity, + slotId: Int, + isSelected: Boolean, + ) { + if (entity is Player) { + if (isActive(stack)) { + onTick(stack, level, entity, slotId, isSelected) + } + } + } + + protected abstract fun onTick( + stack: ItemStack, + level: Level, + player: Player, + slotId: Int, + isSelected: Boolean, + ) + + final override fun isFoil(stack: ItemStack): Boolean = isActive(stack) +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/material/CommonMaterialPrefixes.kt b/src/main/kotlin/hiiragi283/ragium/common/material/CommonMaterialPrefixes.kt new file mode 100644 index 000000000..7f52c86b2 --- /dev/null +++ b/src/main/kotlin/hiiragi283/ragium/common/material/CommonMaterialPrefixes.kt @@ -0,0 +1,35 @@ +package hiiragi283.ragium.common.material + +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike + +enum class CommonMaterialPrefixes : HTPrefixLike { + // Block + ORE, + GLASS_BLOCK, + GLASS_BLOCK_TINTED { + override val prefix: HTMaterialPrefix = HTMaterialPrefix("tinted_glass_block", "c:glass_blocks/tinted") + }, + STORAGE_BLOCK, + RAW_STORAGE_BLOCK { + override val prefix: HTMaterialPrefix = HTMaterialPrefix("raw_storage_block", "c:storage_blocks", "c:storage_blocks/raw_%s") + }, + + // Item + DUST, + GEM, + GEAR, + INGOT, + NUGGET, + PLATE, + RAW_MATERIAL, + ROD, + CIRCUIT, + FUEL, + SCRAP, + ; + + protected open val prefix: HTMaterialPrefix = HTMaterialPrefix(name.lowercase()) + + override fun asMaterialPrefix(): HTMaterialPrefix = prefix +} diff --git a/src/main/kotlin/hiiragi283/ragium/common/material/RagiumEssenceType.kt b/src/main/kotlin/hiiragi283/ragium/common/material/RagiumEssenceType.kt index 927dde732..bfae63733 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/material/RagiumEssenceType.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/material/RagiumEssenceType.kt @@ -4,8 +4,6 @@ import hiiragi283.ragium.api.data.lang.HTLangName import hiiragi283.ragium.api.data.lang.HTLanguageType import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix -import hiiragi283.ragium.setup.CommonMaterialPrefixes import java.awt.Color enum class RagiumEssenceType(val color: Color, private val enName: String, private val jpName: String) : @@ -16,7 +14,7 @@ enum class RagiumEssenceType(val color: Color, private val enName: String, priva DEEP(Color(0x404d5a), "Deep Essence", "深層エッセンス"), ; - val basePrefix: HTMaterialPrefix get() = when (this) { + val basePrefix: CommonMaterialPrefixes get() = when (this) { RAGIUM -> CommonMaterialPrefixes.DUST AZURE -> CommonMaterialPrefixes.DUST DEEP -> CommonMaterialPrefixes.SCRAP diff --git a/src/main/kotlin/hiiragi283/ragium/common/storage/experience/tank/HTBasicExperienceTank.kt b/src/main/kotlin/hiiragi283/ragium/common/storage/experience/tank/HTBasicExperienceTank.kt index 2e308be9c..ff0a83fe2 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/storage/experience/tank/HTBasicExperienceTank.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/storage/experience/tank/HTBasicExperienceTank.kt @@ -19,11 +19,11 @@ open class HTBasicExperienceTank( companion object { @JvmStatic fun input(listener: HTContentListener?, capacity: Long): HTBasicExperienceTank = - create(listener, capacity, HTStorageAccess.Companion.NOT_EXTERNAL, HTPredicates.alwaysTrue()) + create(listener, capacity, HTStorageAccess.NOT_EXTERNAL, HTPredicates.alwaysTrue()) @JvmStatic fun output(listener: HTContentListener?, capacity: Long): HTBasicExperienceTank = - create(listener, capacity, HTPredicates.alwaysTrue(), HTStorageAccess.Companion.INTERNAL_ONLY) + create(listener, capacity, HTPredicates.alwaysTrue(), HTStorageAccess.INTERNAL_ONLY) @JvmStatic fun create( diff --git a/src/main/kotlin/hiiragi283/ragium/common/util/HTItemHelper.kt b/src/main/kotlin/hiiragi283/ragium/common/util/HTItemHelper.kt index 3d0ffe0b0..18dac494a 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/util/HTItemHelper.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/util/HTItemHelper.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.common.util import hiiragi283.ragium.api.RagiumPlatform -import hiiragi283.ragium.config.RagiumConfig import hiiragi283.ragium.setup.RagiumEnchantmentComponents import net.minecraft.core.Holder import net.minecraft.server.level.ServerLevel @@ -92,11 +91,7 @@ object HTItemHelper { } @JvmStatic - fun processCollectorRange( - serverLevel: ServerLevel, - stack: ItemStack, - range: Double = RagiumConfig.COMMON.deviceCollectorEntityRange.asDouble, - ): Double { + fun processCollectorRange(serverLevel: ServerLevel, stack: ItemStack, range: Double): Double { val float = MutableFloat(range) EnchantmentHelper.runIterationOnItem(stack) { holder: Holder, level: Int -> modifyCollectorRange(holder.value(), serverLevel, level, stack, float) diff --git a/src/main/kotlin/hiiragi283/ragium/common/variant/HTArmorVariant.kt b/src/main/kotlin/hiiragi283/ragium/common/variant/HTArmorVariant.kt index 4cbde7003..9404c9f34 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/variant/HTArmorVariant.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/variant/HTArmorVariant.kt @@ -25,8 +25,12 @@ enum class HTArmorVariant( BOOTS(ArmorItem.Type.BOOTS, "%s Boots", "%sのブーツ", ItemTags.FOOT_ARMOR), ; - fun registerItem(register: HTDeferredItemRegister, material: HTEquipmentMaterial): HTDeferredItem = register.registerItem( - "${material.asMaterialName()}_${variantName()}", + fun registerItem( + register: HTDeferredItemRegister, + material: HTEquipmentMaterial, + name: String = "${material.asMaterialName()}_${variantName()}", + ): HTDeferredItem = register.registerItem( + name, { ArmorItem( DeferredHolder.create(Registries.ARMOR_MATERIAL, RagiumAPI.id(material.asMaterialName())), diff --git a/src/main/kotlin/hiiragi283/ragium/common/variant/HTBasicEquipmentMaterial.kt b/src/main/kotlin/hiiragi283/ragium/common/variant/HTBasicEquipmentMaterial.kt index b31d1fd60..2f338d0ab 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/variant/HTBasicEquipmentMaterial.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/variant/HTBasicEquipmentMaterial.kt @@ -1,9 +1,9 @@ package hiiragi283.ragium.common.variant import hiiragi283.ragium.api.material.HTMaterialKey -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.variant.HTEquipmentMaterial -import hiiragi283.ragium.setup.CommonMaterialPrefixes +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import net.minecraft.core.Holder import net.minecraft.sounds.SoundEvent import net.minecraft.sounds.SoundEvents @@ -24,7 +24,7 @@ data class HTBasicEquipmentMaterial( private val incorrectBlockTag: TagKey, private val defenceMap: Map, private val armorMultiplier: Int, - private val repairPrefix: HTMaterialPrefix = CommonMaterialPrefixes.INGOT, + private val repairPrefix: HTPrefixLike = CommonMaterialPrefixes.INGOT, private val equipSound: Holder = SoundEvents.ARMOR_EQUIP_GENERIC, private val toughness: Float = 0f, private val resistance: Float = 0f, diff --git a/src/main/kotlin/hiiragi283/ragium/config/RagiumCommonConfig.kt b/src/main/kotlin/hiiragi283/ragium/config/RagiumCommonConfig.kt index 420382f9d..c9b5c0e7b 100644 --- a/src/main/kotlin/hiiragi283/ragium/config/RagiumCommonConfig.kt +++ b/src/main/kotlin/hiiragi283/ragium/config/RagiumCommonConfig.kt @@ -79,6 +79,12 @@ class RagiumCommonConfig(builder: ModConfigSpec.Builder) { val spongeCakeFallDamage: HTDoubleConfigValue // Item + @JvmField + val basicMagnetRange: HTDoubleConfigValue + + @JvmField + val advancedMagnetRange: HTDoubleConfigValue + @JvmField val expBerriesValue: HTIntConfigValue @@ -217,6 +223,8 @@ class RagiumCommonConfig(builder: ModConfigSpec.Builder) { builder.pop() // Item builder.push("item") + basicMagnetRange = builder.definePositiveDouble("basicMagnetRange", 5.0, 0, Int.MAX_VALUE) + advancedMagnetRange = builder.definePositiveDouble("advancedMagnetRange", 8.0, 0, Int.MAX_VALUE) expBerriesValue = builder.definePositiveInt("expBerriesValue", 8) teleportKeyCost = builder.definePositiveInt("teleportKeyCost", 10) builder.pop() diff --git a/src/main/kotlin/hiiragi283/ragium/impl/RagiumPlatformImpl.kt b/src/main/kotlin/hiiragi283/ragium/impl/RagiumPlatformImpl.kt index 235a87f7e..51d3e0182 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/RagiumPlatformImpl.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/RagiumPlatformImpl.kt @@ -7,6 +7,8 @@ import hiiragi283.ragium.api.addon.RagiumAddon import hiiragi283.ragium.api.item.createItemStack import hiiragi283.ragium.api.material.HTMaterialDefinition import hiiragi283.ragium.api.material.HTMaterialKey +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.recipe.manager.HTMaterialRecipeManager import hiiragi283.ragium.api.recipe.manager.HTRecipeCache import hiiragi283.ragium.api.recipe.manager.HTRecipeFinder @@ -15,6 +17,7 @@ import hiiragi283.ragium.api.serialization.value.HTValueInput import hiiragi283.ragium.api.serialization.value.HTValueOutput import hiiragi283.ragium.api.storage.energy.HTEnergyBattery import hiiragi283.ragium.api.storage.item.HTItemHandler +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.util.HTAddonHelper import hiiragi283.ragium.impl.material.RagiumMaterialManager import hiiragi283.ragium.impl.material.RagiumMaterialRecipeManager @@ -40,6 +43,7 @@ import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.level.Level import net.neoforged.fml.ModList import net.neoforged.neoforge.server.ServerLifecycleHooks +import java.util.function.Consumer class RagiumPlatformImpl : RagiumPlatform { // Addon // @@ -69,6 +73,27 @@ class RagiumPlatformImpl : RagiumPlatform { override fun getMaterialDefinitions(): Map = RagiumMaterialManager.definitions + private lateinit var prefixMap: Map + + override fun getPrefix(name: String): HTMaterialPrefix? { + if (::prefixMap.isInitialized) { + prefixMap = buildMap { + val consumer = Consumer { prefix: HTPrefixLike -> + val prefix1: HTMaterialPrefix = prefix.asMaterialPrefix() + check(this.put(prefix1.name, prefix1) == null) { + "Duplicate material prefix registration: ${prefix1.name}" + } + } + CommonMaterialPrefixes.entries.forEach(consumer) + + for (addon: RagiumAddon in getAddons()) { + addon.bindMaterialPrefixes(consumer) + } + } + } + return prefixMap[name] + } + // Recipe // override fun getMaterialRecipeManager(): HTMaterialRecipeManager = RagiumMaterialRecipeManager diff --git a/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTCrushingMaterialRecipeData.kt b/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTCrushingMaterialRecipeData.kt index cf49a9941..31943fe9c 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTCrushingMaterialRecipeData.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTCrushingMaterialRecipeData.kt @@ -4,9 +4,10 @@ import com.mojang.serialization.MapCodec import com.mojang.serialization.codecs.RecordCodecBuilder import hiiragi283.ragium.api.data.map.HTMaterialRecipeData import hiiragi283.ragium.api.material.HTMaterialKey -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import net.minecraft.util.ExtraCodecs @JvmRecord @@ -26,6 +27,8 @@ data class HTCrushingMaterialRecipeData(private val prefix: HTMaterialPrefix, pr } } + constructor(prefix: HTPrefixLike, inputCount: Int, outputCount: Int) : this(prefix.asMaterialPrefix(), inputCount, outputCount) + override fun type(): MapCodec = CODEC override fun generateRecipes(helper: HTMaterialRecipeData.Helper) { diff --git a/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTRawSmeltingMaterialRecipeData.kt b/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTRawSmeltingMaterialRecipeData.kt index ce1bbfbc0..c98082fe2 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTRawSmeltingMaterialRecipeData.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/data/map/HTRawSmeltingMaterialRecipeData.kt @@ -6,9 +6,10 @@ import hiiragi283.ragium.api.data.map.HTMaterialRecipeData import hiiragi283.ragium.api.data.recipe.HTResultHelper import hiiragi283.ragium.api.data.recipe.ingredient.HTItemIngredientCreator import hiiragi283.ragium.api.material.HTMaterialKey -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.impl.data.recipe.HTCombineItemToObjRecipeBuilder -import hiiragi283.ragium.setup.CommonMaterialPrefixes import net.minecraft.core.registries.Registries import net.minecraft.data.recipes.RecipeOutput import net.minecraft.tags.TagKey @@ -39,6 +40,14 @@ class HTRawSmeltingMaterialRecipeData( } } + constructor( + prefix: HTPrefixLike, + inputCount: Int, + outputCount: Int, + flux: TagKey, + fluxCount: Int, + ) : this(prefix.asMaterialPrefix(), inputCount, outputCount, flux, fluxCount) + override fun type(): MapCodec = CODEC override fun generateRecipes(helper: HTMaterialRecipeData.Helper) { diff --git a/src/main/kotlin/hiiragi283/ragium/impl/data/map/RagiumDataMapsImpl.kt b/src/main/kotlin/hiiragi283/ragium/impl/data/map/RagiumDataMapsImpl.kt index 06592373f..13ce1deac 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/data/map/RagiumDataMapsImpl.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/data/map/RagiumDataMapsImpl.kt @@ -2,6 +2,7 @@ package hiiragi283.ragium.impl.data.map import com.mojang.serialization.Codec import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.map.HTEquipAction import hiiragi283.ragium.api.data.map.HTFluidFuelData import hiiragi283.ragium.api.data.map.HTMaterialRecipeData import hiiragi283.ragium.api.data.map.HTMobHead @@ -15,6 +16,7 @@ import net.minecraft.core.RegistryAccess import net.minecraft.core.registries.Registries import net.minecraft.resources.ResourceKey import net.minecraft.world.entity.EntityType +import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.item.enchantment.Enchantment import net.minecraft.world.item.enchantment.LevelBasedValue @@ -38,16 +40,16 @@ class RagiumDataMapsImpl : RagiumDataMaps { create("fuel/$path", Registries.FLUID, HTFluidFuelData.CODEC) } + override val enchFuelType: DataMapType = + create("fuel", Registries.ENCHANTMENT, LevelBasedValue.DISPATCH_CODEC) + + override val mobHeadType: DataMapType, HTMobHead> = create("mob_head", Registries.ENTITY_TYPE, HTMobHead.CODEC) + override val thermalFuelType: DataMapType = createFuel("thermal") override val combustionFuelType: DataMapType = createFuel("combustion") override val nuclearFuelType: DataMapType = createFuel("nuclear") - override val enchFuelType: DataMapType = create( - "fuel", - Registries.ENCHANTMENT, - LevelBasedValue.DISPATCH_CODEC, - ) - override val mobHeadType: DataMapType, HTMobHead> = create("mob_head", Registries.ENTITY_TYPE, HTMobHead.CODEC) + override val armorEquipType: DataMapType = create("armor_equip", Registries.ITEM, HTEquipAction.CODEC) override val materialRecipeType: IdMapDataMap, HTMaterialRecipeData> = AdvancedDataMapType @@ -62,8 +64,8 @@ class RagiumDataMapsImpl : RagiumDataMaps { registryKey: RegistryKey, holder: Holder, type: DataMapType, - ): DATA? = when (Holder.Kind.REFERENCE) { - holder.kind() -> holder.getData(type) + ): DATA? = when (holder.kind()) { + Holder.Kind.REFERENCE -> holder.getData(type) else -> access .registry(registryKey) diff --git a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTResultHelperImpl.kt b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTResultHelperImpl.kt index 5b6622fc1..002627099 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTResultHelperImpl.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTResultHelperImpl.kt @@ -1,7 +1,6 @@ package hiiragi283.ragium.impl.data.recipe import com.almostreliable.unified.api.AlmostUnified -import hiiragi283.ragium.api.RagiumConst import hiiragi283.ragium.api.data.recipe.HTResultHelper import hiiragi283.ragium.api.recipe.result.HTFluidResult import hiiragi283.ragium.api.recipe.result.HTItemResult @@ -47,7 +46,7 @@ class HTResultHelperImpl : HTResultHelper { HTItemResultImpl(HTKeyOrTagHelper.INSTANCE.create(Registries.ITEM, id), count, component) override fun item(tagKey: TagKey, count: Int): HTItemResult { - if (ModList.get().isLoaded(RagiumConst.ALMOST)) { + if (ModList.get().isLoaded("almostunified")) { val target: Item? = AlmostUnified.INSTANCE.getTagTargetItem(tagKey) if (target != null) { return item(target, count) diff --git a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTShapedRecipeBuilder.kt b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTShapedRecipeBuilder.kt index f03db801f..473975225 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTShapedRecipeBuilder.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/HTShapedRecipeBuilder.kt @@ -2,7 +2,7 @@ package hiiragi283.ragium.impl.data.recipe import hiiragi283.ragium.api.data.recipe.HTStackRecipeBuilder import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.stack.ImmutableItemStack import net.minecraft.tags.TagKey import net.minecraft.world.item.Item @@ -36,7 +36,7 @@ class HTShapedRecipeBuilder(private val category: CraftingBookCategory, stack: I private val symbols: MutableMap = mutableMapOf() - fun define(symbol: Char, prefix: HTMaterialPrefix, key: HTMaterialLike): HTShapedRecipeBuilder = define(symbol, prefix.itemTagKey(key)) + fun define(symbol: Char, prefix: HTPrefixLike, key: HTMaterialLike): HTShapedRecipeBuilder = define(symbol, prefix.itemTagKey(key)) fun define(symbol: Char, tagKey: TagKey): HTShapedRecipeBuilder = define(symbol, Ingredient.of(tagKey)) diff --git a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTFluidIngredientCreatorImpl.kt b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTFluidIngredientCreatorImpl.kt index 81df41661..90927b364 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTFluidIngredientCreatorImpl.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTFluidIngredientCreatorImpl.kt @@ -2,18 +2,10 @@ package hiiragi283.ragium.impl.data.recipe.ingredient import hiiragi283.ragium.api.data.recipe.ingredient.HTFluidIngredientCreator import hiiragi283.ragium.api.recipe.ingredient.HTFluidIngredient -import hiiragi283.ragium.api.serialization.codec.BiCodec -import hiiragi283.ragium.impl.recipe.ingredient.HTFluidIngredientImpl import net.minecraft.core.HolderGetter -import net.minecraft.core.HolderSet -import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.world.level.material.Fluid @Suppress("DEPRECATION") class HTFluidIngredientCreatorImpl(getter: HolderGetter) : HTIngredientCreatorBase(getter, Fluid::builtInRegistryHolder), - HTFluidIngredientCreator { - override fun fromSet(holderSet: HolderSet, amount: Int): HTFluidIngredient = HTFluidIngredientImpl(holderSet, amount) - - override fun codec(): BiCodec = HTFluidIngredientImpl.CODEC -} + HTFluidIngredientCreator diff --git a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTItemIngredientCreatorImpl.kt b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTItemIngredientCreatorImpl.kt index 24b43dad5..d2a045d33 100644 --- a/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTItemIngredientCreatorImpl.kt +++ b/src/main/kotlin/hiiragi283/ragium/impl/data/recipe/ingredient/HTItemIngredientCreatorImpl.kt @@ -3,22 +3,14 @@ package hiiragi283.ragium.impl.data.recipe.ingredient import hiiragi283.ragium.api.data.recipe.ingredient.HTItemIngredientCreator import hiiragi283.ragium.api.material.HTMaterialLike import hiiragi283.ragium.api.recipe.ingredient.HTItemIngredient -import hiiragi283.ragium.api.serialization.codec.BiCodec -import hiiragi283.ragium.impl.recipe.ingredient.HTItemIngredientImpl -import hiiragi283.ragium.setup.CommonMaterialPrefixes +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import net.minecraft.core.HolderGetter -import net.minecraft.core.HolderSet -import net.minecraft.network.RegistryFriendlyByteBuf import net.minecraft.world.item.Item @Suppress("DEPRECATION") class HTItemIngredientCreatorImpl(getter: HolderGetter) : HTIngredientCreatorBase(getter, Item::builtInRegistryHolder), HTItemIngredientCreator { - override fun fromSet(holderSet: HolderSet, amount: Int): HTItemIngredient = HTItemIngredientImpl(holderSet, amount) - - override fun codec(): BiCodec = HTItemIngredientImpl.CODEC - override fun fuelOrDust(material: HTMaterialLike, count: Int): HTItemIngredient = multiPrefixes( material, CommonMaterialPrefixes.DUST, diff --git a/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTFluidIngredientImpl.kt b/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTFluidIngredientImpl.kt deleted file mode 100644 index a782adba0..000000000 --- a/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTFluidIngredientImpl.kt +++ /dev/null @@ -1,47 +0,0 @@ -package hiiragi283.ragium.impl.recipe.ingredient - -import com.mojang.datafixers.util.Either -import hiiragi283.ragium.api.recipe.ingredient.HTFluidIngredient -import hiiragi283.ragium.api.serialization.codec.BiCodec -import hiiragi283.ragium.api.serialization.codec.BiCodecs -import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs -import hiiragi283.ragium.api.serialization.codec.downCast -import hiiragi283.ragium.api.stack.ImmutableFluidStack -import net.minecraft.core.Holder -import net.minecraft.core.HolderSet -import net.minecraft.core.registries.Registries -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.tags.TagKey -import net.minecraft.world.level.material.Fluid - -internal class HTFluidIngredientImpl(holderSet: HolderSet, amount: Int) : - HTIngredientBase(holderSet, amount), - HTFluidIngredient { - companion object { - @JvmField - val CODEC: BiCodec = BiCodec - .composite( - VanillaBiCodecs.holderSet(Registries.FLUID).fieldOf("fluids"), - HTFluidIngredientImpl::holderSet, - BiCodecs.POSITIVE_INT.fieldOf("amount"), - HTFluidIngredientImpl::amount, - ::HTFluidIngredientImpl, - ).downCast() - - /*fun of(ingredient: FluidIngredient, amount: Int = 1): HTFluidIngredientImpl { - check(amount >= 1) - return HTFluidIngredientImpl(Either.right(ingredient), amount) - }*/ - } - - override fun unwrap(): Either, Int>, List> = holderSet.unwrap().map( - { Either.left(it to amount) }, - { holders: List> -> - Either.right(holders.map { holder: Holder -> ImmutableFluidStack.of(holder.value(), amount) }) - }, - ) - - override fun test(stack: ImmutableFluidStack): Boolean = testOnlyType(stack) && stack.amount() >= this.amount - - override fun testOnlyType(stack: ImmutableFluidStack): Boolean = stack.isOf(holderSet) -} diff --git a/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTIngredientBase.kt b/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTIngredientBase.kt deleted file mode 100644 index ea67a5091..000000000 --- a/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTIngredientBase.kt +++ /dev/null @@ -1,18 +0,0 @@ -package hiiragi283.ragium.impl.recipe.ingredient - -import hiiragi283.ragium.api.recipe.ingredient.HTIngredient -import hiiragi283.ragium.api.stack.ImmutableStack -import net.minecraft.core.HolderSet - -abstract class HTIngredientBase>( - protected val holderSet: HolderSet, - protected val amount: Int, -) : HTIngredient { - init { - require(amount >= 1) - } - - final override fun getRequiredAmount(stack: STACK): Int = if (test(stack)) this.amount else 0 - - final override fun hasNoMatchingStacks(): Boolean = holderSet.none() -} diff --git a/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTItemIngredientImpl.kt b/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTItemIngredientImpl.kt deleted file mode 100644 index 8fb9f0703..000000000 --- a/src/main/kotlin/hiiragi283/ragium/impl/recipe/ingredient/HTItemIngredientImpl.kt +++ /dev/null @@ -1,63 +0,0 @@ -package hiiragi283.ragium.impl.recipe.ingredient - -import com.mojang.datafixers.util.Either -import hiiragi283.ragium.api.recipe.ingredient.HTItemIngredient -import hiiragi283.ragium.api.serialization.codec.BiCodec -import hiiragi283.ragium.api.serialization.codec.BiCodecs -import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs -import hiiragi283.ragium.api.serialization.codec.downCast -import hiiragi283.ragium.api.stack.ImmutableItemStack -import net.minecraft.core.Holder -import net.minecraft.core.HolderSet -import net.minecraft.core.registries.Registries -import net.minecraft.network.RegistryFriendlyByteBuf -import net.minecraft.tags.TagKey -import net.minecraft.world.item.Item - -internal class HTItemIngredientImpl(holderSet: HolderSet, amount: Int = 1) : - HTIngredientBase(holderSet, amount), - HTItemIngredient { - companion object { - @JvmStatic - private val ENTRY_CODEC: BiCodec> = VanillaBiCodecs.holderSet(Registries.ITEM) - - @JvmStatic - private val FLAT_CODEC: BiCodec = - ENTRY_CODEC.xmap(::HTItemIngredientImpl, HTItemIngredientImpl::holderSet) - - @JvmStatic - private val CODEC_WITH_COUNT: BiCodec = BiCodec.composite( - ENTRY_CODEC.fieldOf("items"), - HTItemIngredientImpl::holderSet, - BiCodecs.POSITIVE_INT.optionalFieldOf("count", 1), - HTItemIngredientImpl::amount, - ::HTItemIngredientImpl, - ) - - @JvmField - val CODEC: BiCodec = BiCodecs - .xor(CODEC_WITH_COUNT, FLAT_CODEC) - .xmap(Either::unwrap) { itemIngredient: HTItemIngredientImpl -> - when (itemIngredient.amount) { - 1 -> Either.right(itemIngredient) - else -> Either.left(itemIngredient) - } - }.downCast() - - /*fun of(ingredient: ICustomIngredient, count: Int = 1): HTItemIngredientImpl { - check(count >= 1) - return HTItemIngredientImpl(Either.right(ingredient), count) - }*/ - } - - override fun unwrap(): Either, Int>, List> = holderSet.unwrap().map( - { Either.left(it to amount) }, - { holders: List> -> - Either.right(holders.map { holder: Holder -> ImmutableItemStack.of(holder.value(), amount) }) - }, - ) - - override fun test(stack: ImmutableItemStack): Boolean = testOnlyType(stack) && stack.amount() >= this.amount - - override fun testOnlyType(stack: ImmutableItemStack): Boolean = stack.isOf(holderSet) -} diff --git a/src/main/kotlin/hiiragi283/ragium/setup/CommonMaterialPrefixes.kt b/src/main/kotlin/hiiragi283/ragium/setup/CommonMaterialPrefixes.kt deleted file mode 100644 index 3b9995d39..000000000 --- a/src/main/kotlin/hiiragi283/ragium/setup/CommonMaterialPrefixes.kt +++ /dev/null @@ -1,62 +0,0 @@ -package hiiragi283.ragium.setup - -import hiiragi283.ragium.api.RagiumConst -import hiiragi283.ragium.api.material.HTMaterialPrefix -import hiiragi283.ragium.api.registry.impl.HTDeferredMaterialPrefixRegister - -object CommonMaterialPrefixes { - @JvmField - val REGISTER = HTDeferredMaterialPrefixRegister(RagiumConst.COMMON) - - // Block // - - @JvmField - val ORE: HTMaterialPrefix = REGISTER.register("ore") - - @JvmField - val GLASS_BLOCK: HTMaterialPrefix = REGISTER.register("glass_block") - - @JvmField - val GLASS_BLOCK_TINTED: HTMaterialPrefix = REGISTER.register("tinted_glass_block", "c:glass_blocks/tinted") - - @JvmField - val STORAGE_BLOCK: HTMaterialPrefix = REGISTER.register("storage_block") - - @JvmField - val RAW_STORAGE_BLOCK: HTMaterialPrefix = REGISTER.register("raw_storage_block", "c:storage_blocks", "c:storage_blocks/raw_%s") - - // Item // - - @JvmField - val DUST: HTMaterialPrefix = REGISTER.register("dust") - - @JvmField - val GEM: HTMaterialPrefix = REGISTER.register("gem") - - @JvmField - val GEAR: HTMaterialPrefix = REGISTER.register("gear") - - @JvmField - val INGOT: HTMaterialPrefix = REGISTER.register("ingot") - - @JvmField - val NUGGET: HTMaterialPrefix = REGISTER.register("nugget") - - @JvmField - val PLATE: HTMaterialPrefix = REGISTER.register("plate") - - @JvmField - val RAW_MATERIAL: HTMaterialPrefix = REGISTER.register("raw_material") - - @JvmField - val ROD: HTMaterialPrefix = REGISTER.register("rod") - - @JvmField - val CIRCUIT: HTMaterialPrefix = REGISTER.register("circuit") - - @JvmField - val FUEL: HTMaterialPrefix = REGISTER.register("fuel") - - @JvmField - val SCRAP: HTMaterialPrefix = REGISTER.register("scrap") -} diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumAccessoryRegister.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumAccessoryRegister.kt deleted file mode 100644 index 43675dbe9..000000000 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumAccessoryRegister.kt +++ /dev/null @@ -1,42 +0,0 @@ -package hiiragi283.ragium.setup - -import hiiragi283.ragium.api.RagiumConst -import hiiragi283.ragium.common.accessory.HTDynamicLightingAccessory -import hiiragi283.ragium.common.accessory.HTMagnetizationAccessory -import hiiragi283.ragium.common.accessory.HTMobEffectAccessory -import io.wispforest.accessories.api.AccessoriesAPI -import io.wispforest.accessories.api.Accessory -import net.minecraft.world.effect.MobEffects -import net.minecraft.world.entity.ExperienceOrb -import net.minecraft.world.entity.item.ItemEntity -import net.minecraft.world.level.ItemLike - -object RagiumAccessoryRegister { - @JvmStatic - fun register() { - // Charm - register(RagiumItems.DYNAMIC_LANTERN, HTDynamicLightingAccessory) - register( - RagiumItems.MAGNET, - HTMagnetizationAccessory.create { entity: ItemEntity, _ -> - // IEのコンベヤ上にいるアイテムは無視する - if (entity.persistentData.getBoolean(RagiumConst.PREVENT_ITEM_MAGNET)) return@create false - entity.isAlive && !entity.hasPickUpDelay() - }, - ) - register( - RagiumItems.ADVANCED_MAGNET, - HTMagnetizationAccessory.create { entity: ExperienceOrb, _ -> - entity.isAlive && entity.value > 0 - }, - ) - - // Face - register(RagiumItems.NIGHT_VISION_GOGGLES, HTMobEffectAccessory(MobEffects.NIGHT_VISION, -1, ambient = true)) - } - - @JvmStatic - private fun register(item: ItemLike, accessory: Accessory) { - AccessoriesAPI.registerAccessory(item.asItem(), accessory) - } -} diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumBlocks.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumBlocks.kt index fa1586c88..bbee91a64 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumBlocks.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumBlocks.kt @@ -7,7 +7,8 @@ import hiiragi283.ragium.api.collection.buildTable import hiiragi283.ragium.api.function.partially1 import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.impl.HTBasicDeferredBlock import hiiragi283.ragium.api.registry.impl.HTDeferredBlock import hiiragi283.ragium.api.registry.impl.HTDeferredBlockRegister @@ -32,6 +33,7 @@ import hiiragi283.ragium.common.item.block.HTExpBerriesItem import hiiragi283.ragium.common.item.block.HTMachineBlockItem import hiiragi283.ragium.common.item.block.HTWarpedWartItem import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.HTColorMaterial import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys @@ -204,7 +206,7 @@ object RagiumBlocks { // Misc CommonMaterialKeys.PLASTIC to copyOf(Blocks.TUFF, MapColor.NONE), ).forEach { (key: HTMaterialKey, properties: BlockBehaviour.Properties) -> - this[CommonMaterialPrefixes.STORAGE_BLOCK, key] = + this[CommonMaterialPrefixes.STORAGE_BLOCK.asMaterialPrefix(), key] = REGISTER.registerSimple("${key.name}_block", properties) } @@ -215,7 +217,7 @@ object RagiumBlocks { canPlayerThrough: Boolean, blastProof: Boolean, ) { - this[CommonMaterialPrefixes.GLASS_BLOCK, key] = REGISTER.registerSimple( + this[CommonMaterialPrefixes.GLASS_BLOCK.asMaterialPrefix(), key] = REGISTER.registerSimple( "${key.name}_glass", properties.apply { if (blastProof) strength(5f, 1200f) }, ::HTGlassBlock.partially1(canPlayerThrough), @@ -233,7 +235,7 @@ object RagiumBlocks { canPlayerThrough: Boolean, blastProof: Boolean, ) { - this[CommonMaterialPrefixes.GLASS_BLOCK_TINTED, key] = REGISTER.registerSimple( + this[CommonMaterialPrefixes.GLASS_BLOCK_TINTED.asMaterialPrefix(), key] = REGISTER.registerSimple( "tinted_${key.name}_glass", properties.apply { if (blastProof) strength(5f, 1200f) }, ::HTTintedGlassBlock.partially1(canPlayerThrough), @@ -246,8 +248,9 @@ object RagiumBlocks { } @JvmStatic - fun getMaterial(prefix: HTMaterialPrefix, material: HTMaterialLike): HTSimpleDeferredBlock = MATERIALS[prefix, material.asMaterialKey()] - ?: error("Unknown $prefix block for ${material.asMaterialName()}") + fun getMaterial(prefix: HTPrefixLike, material: HTMaterialLike): HTSimpleDeferredBlock = + MATERIALS[prefix.asMaterialPrefix(), material.asMaterialKey()] + ?: error("Unknown $prefix block for ${material.asMaterialName()}") @JvmStatic fun getStorageBlock(material: HTMaterialLike): HTSimpleDeferredBlock = getMaterial(CommonMaterialPrefixes.STORAGE_BLOCK, material) @@ -258,6 +261,9 @@ object RagiumBlocks { @JvmStatic fun getTintedGlass(material: HTMaterialLike): HTSimpleDeferredBlock = getMaterial(CommonMaterialPrefixes.GLASS_BLOCK_TINTED, material) + @JvmStatic + fun getMaterialMap(prefix: HTPrefixLike): Map = MATERIALS.row(prefix.asMaterialPrefix()) + @JvmField val COILS: Map> = arrayOf( RagiumMaterialKeys.RAGI_ALLOY, diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumCreativeTabs.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumCreativeTabs.kt index b7d9dd237..4c91ff3c6 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumCreativeTabs.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumCreativeTabs.kt @@ -15,6 +15,7 @@ import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.common.tier.HTDrumTier import hiiragi283.ragium.common.util.HTDefaultLootTickets +import hiiragi283.ragium.common.variant.HTArmorVariant import hiiragi283.ragium.common.variant.HTHammerToolVariant import hiiragi283.ragium.common.variant.HTVanillaToolVariant import net.minecraft.core.registries.Registries @@ -153,7 +154,7 @@ object RagiumCreativeTabs { output.accept(RagiumItems.NIGHT_VISION_GOGGLES) // Azure output.accept(RagiumItems.AZURE_STEEL_UPGRADE_SMITHING_TEMPLATE) - RagiumItems.AZURE_ARMORS.values.forEach(output::accept) + output.acceptFromTable(RagiumItems.ARMORS, HTArmorVariant.entries, RagiumMaterialKeys.AZURE_STEEL) output.acceptFromTable(RagiumItems.TOOLS, HTVanillaToolVariant.entries, RagiumMaterialKeys.AZURE_STEEL) output.accept(RagiumItems.getTool(HTHammerToolVariant, RagiumMaterialKeys.AZURE_STEEL)) // Molten @@ -166,7 +167,7 @@ object RagiumCreativeTabs { DyeColor.entries.map(HTUniversalBundleItem::createBundle).forEach(output::accept) // Deep output.accept(RagiumItems.DEEP_STEEL_UPGRADE_SMITHING_TEMPLATE) - RagiumItems.DEEP_ARMORS.values.forEach(output::accept) + output.acceptFromTable(RagiumItems.ARMORS, HTArmorVariant.entries, RagiumMaterialKeys.DEEP_STEEL) output.acceptFromTable(RagiumItems.TOOLS, HTVanillaToolVariant.entries, RagiumMaterialKeys.DEEP_STEEL) output.accept(RagiumItems.getTool(HTHammerToolVariant, RagiumMaterialKeys.DEEP_STEEL)) // Other diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumDataComponents.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumDataComponents.kt index bd56c327b..a0dcd9eff 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumDataComponents.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumDataComponents.kt @@ -8,8 +8,6 @@ import hiiragi283.ragium.api.item.component.HTItemSoundEvent import hiiragi283.ragium.api.item.component.HTLootTicketTargets import hiiragi283.ragium.api.item.component.HTRepairable import hiiragi283.ragium.api.item.component.HTTeleportPos -import hiiragi283.ragium.api.registry.HTKeyOrTagEntry -import hiiragi283.ragium.api.registry.HTKeyOrTagHelper import hiiragi283.ragium.api.registry.impl.HTDeferredDataComponentRegister import hiiragi283.ragium.api.serialization.codec.BiCodec import hiiragi283.ragium.api.serialization.codec.BiCodecs @@ -17,7 +15,6 @@ import hiiragi283.ragium.api.serialization.codec.VanillaBiCodecs import hiiragi283.ragium.api.stack.ImmutableFluidStack import net.minecraft.core.component.DataComponentType import net.minecraft.core.registries.Registries -import net.minecraft.world.damagesource.DamageType import net.minecraft.world.item.DyeColor object RagiumDataComponents { @@ -52,16 +49,11 @@ object RagiumDataComponents { val FLUID_CONTENT: DataComponentType = REGISTER.registerType("fluid_content", ImmutableFluidStack.CODEC) @JvmField - val IMMUNE_DAMAGE_TYPES: DataComponentType> = REGISTER.registerType( - "immune_damage_types", - HTKeyOrTagHelper.INSTANCE.codec(Registries.DAMAGE_TYPE), - ) + val INTRINSIC_ENCHANTMENT: DataComponentType = + REGISTER.registerType("intrinsic_enchantment", HTIntrinsicEnchantment.CODEC) @JvmField - val INTRINSIC_ENCHANTMENT: DataComponentType = REGISTER.registerType( - "intrinsic_enchantment", - HTIntrinsicEnchantment.CODEC, - ) + val IS_ACTIVE: DataComponentType = REGISTER.registerType("is_active", BiCodec.BOOL) @JvmField val ITEM_CONTENT: DataComponentType = REGISTER.registerType("item_content", HTItemContents.CODEC) diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumEnchantmentComponents.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumEnchantmentComponents.kt index ea423d697..c5b46b200 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumEnchantmentComponents.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumEnchantmentComponents.kt @@ -17,15 +17,19 @@ object RagiumEnchantmentComponents { @JvmField val REGISTER = HTDeferredDataComponentRegister(Registries.ENCHANTMENT_EFFECT_COMPONENT_TYPE, RagiumAPI.MOD_ID) + @JvmStatic + fun registerConditional(name: String, codec: Codec): DataComponentType>> = REGISTER.registerType( + name, + ConditionalEffect.codec(codec, LootContextParamSets.ENCHANTED_ITEM).listOf(), + null, + ) + @JvmField val CAPACITY: DataComponentType = REGISTER.registerType("capacity", EnchantmentValueEffect.CODEC, null) @JvmField - val RANGE: DataComponentType>> = REGISTER.registerType( - "range", - ConditionalEffect.codec(EnchantmentValueEffect.CODEC, LootContextParamSets.ENCHANTED_ITEM).listOf(), - null, - ) + val RANGE: DataComponentType>> = + registerConditional("range", EnchantmentValueEffect.CODEC) @JvmField val STRIKE: DataComponentType = REGISTER.registerType("strike", Codec.unit(Unit.INSTANCE), null) diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumEquipmentMaterials.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumEquipmentMaterials.kt index 548aec01c..4ab516130 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumEquipmentMaterials.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumEquipmentMaterials.kt @@ -1,5 +1,6 @@ package hiiragi283.ragium.setup +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.variant.HTBasicEquipmentMaterial import net.minecraft.sounds.SoundEvents @@ -82,6 +83,7 @@ object RagiumEquipmentMaterials { ArmorItem.Type.BODY to 11, ), armorMultiplier = 33, + repairPrefix = CommonMaterialPrefixes.GEM, equipSound = SoundEvents.ARMOR_EQUIP_DIAMOND, toughness = 2f, ) diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumFluidContents.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumFluidContents.kt index 32069eec7..a46721529 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumFluidContents.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumFluidContents.kt @@ -6,6 +6,7 @@ import hiiragi283.ragium.api.function.negate import hiiragi283.ragium.api.registry.HTFluidContent import hiiragi283.ragium.api.registry.HTFluidContentRegister import hiiragi283.ragium.common.fluid.HTFluidType +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import net.minecraft.core.BlockPos import net.minecraft.sounds.SoundEvents diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumItems.kt index cc927d07a..5897320f2 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumItems.kt @@ -8,9 +8,9 @@ import hiiragi283.ragium.api.item.component.HTIntrinsicEnchantment import hiiragi283.ragium.api.item.component.HTItemSoundEvent import hiiragi283.ragium.api.material.HTMaterialKey import hiiragi283.ragium.api.material.HTMaterialLike -import hiiragi283.ragium.api.material.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix +import hiiragi283.ragium.api.material.prefix.HTPrefixLike import hiiragi283.ragium.api.registry.HTItemHolderLike -import hiiragi283.ragium.api.registry.HTKeyOrTagHelper import hiiragi283.ragium.api.registry.impl.HTDeferredItem import hiiragi283.ragium.api.registry.impl.HTDeferredItemRegister import hiiragi283.ragium.api.registry.impl.HTSimpleDeferredItem @@ -23,7 +23,6 @@ import hiiragi283.ragium.api.storage.energy.HTEnergyBattery import hiiragi283.ragium.api.storage.experience.HTExperienceTank import hiiragi283.ragium.api.storage.fluid.HTFluidTank import hiiragi283.ragium.api.storage.item.HTItemSlot -import hiiragi283.ragium.api.tag.RagiumModTags import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.api.variant.HTEquipmentMaterial import hiiragi283.ragium.api.variant.HTToolVariant @@ -33,7 +32,9 @@ import hiiragi283.ragium.common.item.HTCaptureEggItem import hiiragi283.ragium.common.item.HTCatalystItem import hiiragi283.ragium.common.item.HTDrumUpgradeItem import hiiragi283.ragium.common.item.HTDrumWithMinecartItem +import hiiragi283.ragium.common.item.HTDynamicLanternItem import hiiragi283.ragium.common.item.HTLootTicketItem +import hiiragi283.ragium.common.item.HTMagnetItem import hiiragi283.ragium.common.item.HTPotionBundleItem import hiiragi283.ragium.common.item.HTPotionSodaItem import hiiragi283.ragium.common.item.HTTeleportKeyItem @@ -44,6 +45,7 @@ import hiiragi283.ragium.common.item.base.HTSmithingTemplateItem import hiiragi283.ragium.common.item.tool.HTDestructionHammerItem import hiiragi283.ragium.common.item.tool.HTDrillItem import hiiragi283.ragium.common.material.CommonMaterialKeys +import hiiragi283.ragium.common.material.CommonMaterialPrefixes import hiiragi283.ragium.common.material.RagiumMaterialKeys import hiiragi283.ragium.common.material.VanillaMaterialKeys import hiiragi283.ragium.common.storage.energy.HTComponentEnergyHandler @@ -62,6 +64,7 @@ import hiiragi283.ragium.common.variant.HTArmorVariant import hiiragi283.ragium.common.variant.HTHammerToolVariant import hiiragi283.ragium.common.variant.HTVanillaToolVariant import hiiragi283.ragium.common.variant.VanillaEquipmentMaterial +import hiiragi283.ragium.config.RagiumConfig import net.minecraft.core.component.DataComponentPatch import net.minecraft.core.component.DataComponents import net.minecraft.resources.ResourceKey @@ -69,7 +72,6 @@ import net.minecraft.sounds.SoundEvents import net.minecraft.world.food.FoodProperties import net.minecraft.world.food.Foods import net.minecraft.world.item.DyeColor -import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import net.minecraft.world.item.Rarity @@ -79,7 +81,6 @@ import net.minecraft.world.level.ItemLike import net.neoforged.bus.api.IEventBus import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent -import java.util.function.UnaryOperator object RagiumItems { @JvmField @@ -97,49 +98,53 @@ object RagiumItems { // Raginite @JvmField - val RAGI_ALLOY_COMPOUND: HTSimpleDeferredItem = register("${RagiumConst.RAGI_ALLOY}_compound") + val RAGI_ALLOY_COMPOUND: HTSimpleDeferredItem = REGISTER.registerSimpleItem("${RagiumConst.RAGI_ALLOY}_compound") @JvmField - val RAGI_COKE: HTSimpleDeferredItem = register("ragi_coke") + val RAGI_COKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("ragi_coke") // Wood @JvmField - val COMPRESSED_SAWDUST: HTSimpleDeferredItem = register("compressed_sawdust") + val COMPRESSED_SAWDUST: HTSimpleDeferredItem = REGISTER.registerSimpleItem("compressed_sawdust") @JvmField - val RESIN: HTSimpleDeferredItem = register("resin") + val RESIN: HTSimpleDeferredItem = REGISTER.registerSimpleItem("resin") // Oil @JvmField - val TAR: HTSimpleDeferredItem = register("tar") + val TAR: HTSimpleDeferredItem = REGISTER.registerSimpleItem("tar") // Nuclear Fuel @JvmField - val POTATO_SPROUTS: HTSimpleDeferredItem = register("potato_sprouts") + val POTATO_SPROUTS: HTSimpleDeferredItem = REGISTER.registerSimpleItem("potato_sprouts") @JvmField - val GREEN_CAKE: HTSimpleDeferredItem = register("green_cake") + val GREEN_CAKE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("green_cake") @JvmField - val GREEN_CAKE_DUST: HTSimpleDeferredItem = register("green_cake_dust") + val GREEN_CAKE_DUST: HTSimpleDeferredItem = REGISTER.registerSimpleItem("green_cake_dust") @JvmField - val GREEN_PELLET: HTSimpleDeferredItem = register("green_pellet") + val GREEN_PELLET: HTSimpleDeferredItem = REGISTER.registerSimpleItem("green_pellet") // Misc @JvmField - val BASALT_MESH: HTSimpleDeferredItem = register("basalt_mesh") + val BASALT_MESH: HTSimpleDeferredItem = REGISTER.registerSimpleItem("basalt_mesh") @JvmField - val ECHO_STAR: HTSimpleDeferredItem = register("echo_star") { it.rarity(Rarity.UNCOMMON) } + val ECHO_STAR: HTSimpleDeferredItem = REGISTER.registerSimpleItem("echo_star") { it.rarity(Rarity.UNCOMMON) } @JvmField - val ELDER_HEART: HTSimpleDeferredItem = register("elder_heart") { it.rarity(Rarity.UNCOMMON) } + val ELDER_HEART: HTSimpleDeferredItem = REGISTER.registerSimpleItem("elder_heart") { it.rarity(Rarity.UNCOMMON) } @JvmField - val WITHER_DOLl: HTSimpleDeferredItem = register("wither_doll") + val WITHER_DOLl: HTSimpleDeferredItem = REGISTER.registerSimpleItem("wither_doll") val MATERIALS: ImmutableTable = buildTable { + fun register(prefix: HTPrefixLike, material: HTMaterialLike, name: String) { + this[prefix.asMaterialPrefix(), material.asMaterialKey()] = REGISTER.registerSimpleItem(name) + } + // Dusts arrayOf( // Vanilla - Metal @@ -161,17 +166,17 @@ object RagiumItems { RagiumMaterialKeys.AZURE, RagiumMaterialKeys.RAGI_CRYSTAL, RagiumMaterialKeys.ELDRITCH_PEARL, - ).forEach { this[CommonMaterialPrefixes.DUST, it.asMaterialKey()] = register("${it.asMaterialName()}_dust") } - this[CommonMaterialPrefixes.DUST, VanillaMaterialKeys.WOOD] = register("sawdust") - this[CommonMaterialPrefixes.DUST, RagiumMaterialKeys.MEAT] = register("minced_meat") + ).forEach { register(CommonMaterialPrefixes.DUST, it.asMaterialKey(), "${it.asMaterialName()}_dust") } + register(CommonMaterialPrefixes.DUST, VanillaMaterialKeys.WOOD, "sawdust") + register(CommonMaterialPrefixes.DUST, RagiumMaterialKeys.MEAT, "minced_meat") // Gems - this[CommonMaterialPrefixes.GEM, RagiumMaterialKeys.AZURE] = register("azure_shard") + register(CommonMaterialPrefixes.GEM, RagiumMaterialKeys.AZURE, "azure_shard") arrayOf( RagiumMaterialKeys.RAGI_CRYSTAL, RagiumMaterialKeys.CRIMSON_CRYSTAL, RagiumMaterialKeys.WARPED_CRYSTAL, RagiumMaterialKeys.ELDRITCH_PEARL, - ).forEach { this[CommonMaterialPrefixes.GEM, it] = register(it.name) } + ).forEach { register(CommonMaterialPrefixes.GEM, it, it.name) } // Ingots arrayOf( // Metals @@ -185,7 +190,7 @@ object RagiumItems { RagiumMaterialKeys.CHOCOLATE, RagiumMaterialKeys.MEAT, RagiumMaterialKeys.COOKED_MEAT, - ).forEach { this[CommonMaterialPrefixes.INGOT, it] = register("${it.name}_ingot") } + ).forEach { register(CommonMaterialPrefixes.INGOT, it, "${it.name}_ingot") } // Nuggets arrayOf( RagiumMaterialKeys.RAGI_ALLOY, @@ -194,34 +199,35 @@ object RagiumItems { RagiumMaterialKeys.DEEP_STEEL, RagiumMaterialKeys.GILDIUM, RagiumMaterialKeys.IRIDESCENTIUM, - ).forEach { this[CommonMaterialPrefixes.NUGGET, it] = register("${it.name}_nugget") } + ).forEach { register(CommonMaterialPrefixes.NUGGET, it, "${it.name}_nugget") } // Plates - this[CommonMaterialPrefixes.PLATE, CommonMaterialKeys.PLASTIC] = register("plastic_plate") + register(CommonMaterialPrefixes.PLATE, CommonMaterialKeys.PLASTIC, "plastic_plate") // Fuels - this[CommonMaterialPrefixes.FUEL, RagiumMaterialKeys.BAMBOO_CHARCOAL] = register("bamboo_charcoal") + register(CommonMaterialPrefixes.FUEL, RagiumMaterialKeys.BAMBOO_CHARCOAL, "bamboo_charcoal") // Scraps - this[CommonMaterialPrefixes.SCRAP, RagiumMaterialKeys.DEEP_STEEL] = register("deep_scrap") + register(CommonMaterialPrefixes.SCRAP, RagiumMaterialKeys.DEEP_STEEL, "deep_scrap") } @JvmStatic - fun getMaterial(prefix: HTMaterialPrefix, material: HTMaterialLike): HTDeferredItem<*> = MATERIALS[prefix, material.asMaterialKey()] - ?: error("Unknown $prefix item for ${material.asMaterialName()}") + fun getMaterial(prefix: HTPrefixLike, material: HTMaterialLike): HTSimpleDeferredItem = + MATERIALS[prefix.asMaterialPrefix(), material.asMaterialKey()] + ?: error("Unknown $prefix item for ${material.asMaterialName()}") @JvmStatic - fun getDust(material: HTMaterialLike): HTDeferredItem<*> = getMaterial(CommonMaterialPrefixes.DUST, material) + fun getDust(material: HTMaterialLike): HTSimpleDeferredItem = getMaterial(CommonMaterialPrefixes.DUST, material) @JvmStatic - fun getGem(material: HTMaterialLike): HTDeferredItem<*> = getMaterial(CommonMaterialPrefixes.GEM, material) + fun getGem(material: HTMaterialLike): HTSimpleDeferredItem = getMaterial(CommonMaterialPrefixes.GEM, material) @JvmStatic - fun getIngot(material: HTMaterialLike): HTDeferredItem<*> = getMaterial(CommonMaterialPrefixes.INGOT, material) + fun getIngot(material: HTMaterialLike): HTSimpleDeferredItem = getMaterial(CommonMaterialPrefixes.INGOT, material) @JvmStatic - fun getNugget(material: HTMaterialLike): HTDeferredItem<*> = getMaterial(CommonMaterialPrefixes.NUGGET, material) + fun getNugget(material: HTMaterialLike): HTSimpleDeferredItem = getMaterial(CommonMaterialPrefixes.NUGGET, material) @JvmStatic - fun getPlate(material: HTMaterialLike): HTDeferredItem<*> = getMaterial(CommonMaterialPrefixes.PLATE, material) + fun getPlate(material: HTMaterialLike): HTSimpleDeferredItem = getMaterial(CommonMaterialPrefixes.PLATE, material) @JvmStatic fun getScrap(material: HTMaterialLike): HTItemHolderLike = when (material.asMaterialKey()) { @@ -229,9 +235,12 @@ object RagiumItems { else -> getMaterial(CommonMaterialPrefixes.SCRAP, material) } + @JvmStatic + fun getMaterialMap(prefix: HTPrefixLike): Map = MATERIALS.row(prefix.asMaterialPrefix()) + @JvmField val COILS: Map = arrayOf(RagiumMaterialKeys.RAGI_ALLOY, RagiumMaterialKeys.ADVANCED_RAGI_ALLOY) - .associateWith { key: HTMaterialKey -> register("${key.name}_coil") } + .associateWith { key: HTMaterialKey -> REGISTER.registerSimpleItem("${key.name}_coil") } @JvmField val CIRCUITS: Map> = HTCircuitTier.entries.associateWith { tier: HTCircuitTier -> @@ -254,43 +263,48 @@ object RagiumItems { // Armors // - @JvmField - val AZURE_ARMORS: Map> = HTArmorVariant.entries.associateWith { variant: HTArmorVariant -> - variant.registerItem(REGISTER, RagiumEquipmentMaterials.AZURE_STEEL) + val ARMORS: ImmutableTable> = buildTable { + fun register(variant: HTArmorVariant, material: HTEquipmentMaterial) { + this[variant, material.asMaterialKey()] = variant.registerItem(REGISTER, material) + } + // Azure, Deep + for (variant: HTArmorVariant in HTArmorVariant.entries) { + register(variant, RagiumEquipmentMaterials.AZURE_STEEL) + register(variant, RagiumEquipmentMaterials.DEEP_STEEL) + } } @JvmField - val DEEP_ARMORS: Map> = HTArmorVariant.entries.associateWith { variant: HTArmorVariant -> - variant.registerItem(REGISTER, RagiumEquipmentMaterials.DEEP_STEEL) - } + val NIGHT_VISION_GOGGLES: HTDeferredItem<*> = + HTArmorVariant.HELMET.registerItem(REGISTER, RagiumEquipmentMaterials.RAGI_CRYSTAL, "night_vision_goggles") @JvmStatic - fun getAzureArmor(variant: HTArmorVariant): HTDeferredItem<*> = AZURE_ARMORS[variant]!! + fun getArmor(variant: HTArmorVariant, material: HTMaterialLike): HTDeferredItem<*> = ARMORS[variant, material.asMaterialKey()] + ?: error("Unknown ${variant.variantName()} armor item for ${material.asMaterialName()}") @JvmStatic - fun getDeepArmor(variant: HTArmorVariant): HTDeferredItem<*> = DEEP_ARMORS[variant]!! + fun getArmorMap(material: HTMaterialLike): Map> = ARMORS.column(material.asMaterialKey()) // Tools // // Raginite @JvmField - val WRENCH: HTSimpleDeferredItem = register("wrench") { it.stacksTo(1) } + val WRENCH: HTSimpleDeferredItem = REGISTER.registerSimpleItem("wrench") { it.stacksTo(1) } @JvmField - val MAGNET: HTSimpleDeferredItem = register("ragi_magnet") + val MAGNET: HTSimpleDeferredItem = + REGISTER.registerItemWith("ragi_magnet", RagiumConfig.COMMON.basicMagnetRange, ::HTMagnetItem) @JvmField - val ADVANCED_MAGNET: HTSimpleDeferredItem = register("advanced_ragi_magnet") + val ADVANCED_MAGNET: HTSimpleDeferredItem = + REGISTER.registerItemWith("advanced_ragi_magnet", RagiumConfig.COMMON.advancedMagnetRange, ::HTMagnetItem) @JvmField - val DYNAMIC_LANTERN: HTSimpleDeferredItem = register("ragi_lantern") + val DYNAMIC_LANTERN: HTSimpleDeferredItem = REGISTER.registerItem("ragi_lantern", ::HTDynamicLanternItem) @JvmField val LOOT_TICKET: HTSimpleDeferredItem = REGISTER.registerItem("ragi_ticket", ::HTLootTicketItem) - @JvmField - val NIGHT_VISION_GOGGLES: HTSimpleDeferredItem = register("night_vision_goggles") { it.stacksTo(1) } - // Azure @JvmField val AZURE_STEEL_UPGRADE_SMITHING_TEMPLATE: HTSimpleDeferredItem = REGISTER.register( @@ -342,7 +356,7 @@ object RagiumItems { val POTION_BUNDLE: HTSimpleDeferredItem = REGISTER.registerItem("potion_bundle", ::HTPotionBundleItem) @JvmField - val SLOT_COVER: HTSimpleDeferredItem = register("slot_cover") + val SLOT_COVER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("slot_cover") @JvmField val TRADER_CATALOG: HTSimpleDeferredItem = REGISTER.registerItem("trader_catalog", ::HTTraderCatalogItem) @@ -390,16 +404,13 @@ object RagiumItems { ?: error("Unknown ${variant.variantName()} item for ${material.asMaterialName()}") @JvmStatic - private fun getAzureTool(variant: HTVanillaToolVariant): HTDeferredItem<*> = getTool(variant, RagiumMaterialKeys.AZURE_STEEL) - - @JvmStatic - private fun getDeepTool(variant: HTVanillaToolVariant): HTDeferredItem<*> = getTool(variant, RagiumMaterialKeys.DEEP_STEEL) + fun getToolMap(material: HTMaterialLike): Map> = TOOLS.column(material.asMaterialKey()) // Foods // @JvmStatic private fun registerFood(name: String, foodProperties: FoodProperties): HTSimpleDeferredItem = - register(name) { it.food(foodProperties) } + REGISTER.registerSimpleItem(name) { it.food(foodProperties) } @JvmField val ICE_CREAM: HTSimpleDeferredItem = registerFood("ice_cream", RagiumFoods.ICE_CREAM) @@ -427,7 +438,7 @@ object RagiumItems { // Other @JvmField - val BOTTLED_BEE: HTSimpleDeferredItem = register("bottled_bee") + val BOTTLED_BEE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("bottled_bee") @JvmField val AMBROSIA: HTSimpleDeferredItem = registerFood("ambrosia", RagiumFoods.AMBROSIA) @@ -435,7 +446,7 @@ object RagiumItems { // Machine Parts // @JvmField - val GRAVITATIONAL_UNIT: HTSimpleDeferredItem = register("gravitational_unit") + val GRAVITATIONAL_UNIT: HTSimpleDeferredItem = REGISTER.registerSimpleItem("gravitational_unit") // Catalyst @JvmField @@ -446,33 +457,33 @@ object RagiumItems { // LED @JvmField - val LUMINOUS_PASTE: HTSimpleDeferredItem = register("luminous_paste") + val LUMINOUS_PASTE: HTSimpleDeferredItem = REGISTER.registerSimpleItem("luminous_paste") @JvmField - val LED: HTSimpleDeferredItem = register("led") + val LED: HTSimpleDeferredItem = REGISTER.registerSimpleItem("led") @JvmField - val SOLAR_PANEL: HTSimpleDeferredItem = register("solar_panel") + val SOLAR_PANEL: HTSimpleDeferredItem = REGISTER.registerSimpleItem("solar_panel") // Redstone @JvmField - val REDSTONE_BOARD: HTSimpleDeferredItem = register("redstone_board") + val REDSTONE_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("redstone_board") // Plastics @JvmField - val POLYMER_RESIN: HTSimpleDeferredItem = register("polymer_resin") + val POLYMER_RESIN: HTSimpleDeferredItem = REGISTER.registerSimpleItem("polymer_resin") @JvmField - val SYNTHETIC_FIBER: HTSimpleDeferredItem = register("synthetic_fiber") + val SYNTHETIC_FIBER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("synthetic_fiber") @JvmField - val SYNTHETIC_LEATHER: HTSimpleDeferredItem = register("synthetic_leather") + val SYNTHETIC_LEATHER: HTSimpleDeferredItem = REGISTER.registerSimpleItem("synthetic_leather") @JvmField - val CIRCUIT_BOARD: HTSimpleDeferredItem = register("circuit_board") + val CIRCUIT_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("circuit_board") @JvmField - val ADVANCED_CIRCUIT_BOARD: HTSimpleDeferredItem = register("advanced_circuit_board") + val ADVANCED_CIRCUIT_BOARD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("advanced_circuit_board") // Vehicles // @@ -481,12 +492,6 @@ object RagiumItems { REGISTER.registerItemWith(tier.entityPath, tier, ::HTDrumWithMinecartItem) } - // Extensions // - - @JvmStatic - private fun register(name: String, operator: UnaryOperator = UnaryOperator.identity()): HTSimpleDeferredItem = - REGISTER.registerSimpleItem(name, operator) - // Event // @JvmStatic @@ -601,14 +606,14 @@ object RagiumItems { builder.set(RagiumDataComponents.INTRINSIC_ENCHANTMENT, HTIntrinsicEnchantment(ench, level)) } } - setEnch(getAzureTool(HTVanillaToolVariant.AXE), Enchantments.SILK_TOUCH) - setEnch(getAzureTool(HTVanillaToolVariant.HOE), Enchantments.SILK_TOUCH) - setEnch(getAzureTool(HTVanillaToolVariant.PICKAXE), Enchantments.SILK_TOUCH) - setEnch(getAzureTool(HTVanillaToolVariant.SHOVEL), Enchantments.SILK_TOUCH) - - setEnch(getDeepTool(HTVanillaToolVariant.PICKAXE), Enchantments.FORTUNE, 5) - setEnch(getDeepTool(HTVanillaToolVariant.AXE), RagiumEnchantments.STRIKE) - setEnch(getDeepTool(HTVanillaToolVariant.SWORD), RagiumEnchantments.NOISE_CANCELING, 5) + + for (item: HTDeferredItem<*> in getToolMap(RagiumMaterialKeys.AZURE_STEEL).values) { + setEnch(item, Enchantments.SILK_TOUCH) + } + + setEnch(getTool(HTVanillaToolVariant.PICKAXE, RagiumMaterialKeys.DEEP_STEEL), Enchantments.FORTUNE, 5) + setEnch(getTool(HTVanillaToolVariant.AXE, RagiumMaterialKeys.DEEP_STEEL), RagiumEnchantments.STRIKE) + setEnch(getTool(HTVanillaToolVariant.SWORD, RagiumMaterialKeys.DEEP_STEEL), RagiumEnchantments.NOISE_CANCELING, 5) // Foods event.modify(FEVER_CHERRY) { builder: DataComponentPatch.Builder -> builder.set(DataComponents.RARITY, Rarity.EPIC) @@ -617,14 +622,7 @@ object RagiumItems { builder.set(DataComponents.RARITY, Rarity.EPIC) } // Other - event.modify(ECHO_STAR) { builder: DataComponentPatch.Builder -> - builder.set(DataComponents.ENCHANTMENT_GLINT_OVERRIDE, true) - builder.set( - RagiumDataComponents.IMMUNE_DAMAGE_TYPES, - HTKeyOrTagHelper.INSTANCE.create(RagiumModTags.DamageTypes.IS_SONIC), - ) - } - + setEnch(ECHO_STAR, RagiumEnchantments.SONIC_PROTECTION) event.modify(UNIVERSAL_BUNDLE) { builder: DataComponentPatch.Builder -> builder.set(RagiumDataComponents.COLOR, DyeColor.WHITE) } diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumMiscRegister.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumMiscRegister.kt index 6905e819c..736e5156f 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumMiscRegister.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumMiscRegister.kt @@ -1,7 +1,9 @@ package hiiragi283.ragium.setup import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.map.equip.HTMobEffectEquipAction import hiiragi283.ragium.api.recipe.RagiumRecipeTypes +import hiiragi283.ragium.api.recipe.ingredient.HTEntityTypeIngredient import hiiragi283.ragium.api.registry.impl.HTDeferredRecipeType import hiiragi283.ragium.api.variant.HTEquipmentMaterial import hiiragi283.ragium.impl.data.map.HTCrushingMaterialRecipeData @@ -12,6 +14,7 @@ import net.minecraft.world.item.ArmorItem import net.minecraft.world.item.ArmorMaterial import net.minecraft.world.item.crafting.Recipe import net.minecraft.world.item.crafting.RecipeType +import net.neoforged.neoforge.registries.NeoForgeRegistries import net.neoforged.neoforge.registries.RegisterEvent object RagiumMiscRegister { @@ -20,6 +23,7 @@ object RagiumMiscRegister { // Armor Material event.register(Registries.ARMOR_MATERIAL) { helper -> register(helper, RagiumEquipmentMaterials.AZURE_STEEL) + register(helper, RagiumEquipmentMaterials.RAGI_CRYSTAL) register(helper, RagiumEquipmentMaterials.DEEP_STEEL) } // Recipe Type @@ -37,6 +41,16 @@ object RagiumMiscRegister { register(helper, RagiumRecipeTypes.SIMULATING) register(helper, RagiumRecipeTypes.WASHING) } + + // Ingredient Type + event.register(NeoForgeRegistries.Keys.INGREDIENT_TYPES) { helper -> + helper.register(RagiumAPI.id("entity_type"), HTEntityTypeIngredient.TYPE) + } + + // Armor Equip Type + event.register(RagiumAPI.EQUIP_ACTION_TYPE_KEY) { helper -> + helper.register(RagiumAPI.id("mob_effect"), HTMobEffectEquipAction.CODEC) + } // Material Recipe Type event.register(RagiumAPI.MATERIAL_RECIPE_TYPE_KEY) { helper -> helper.register(RagiumAPI.id("crushing"), HTCrushingMaterialRecipeData.CODEC) @@ -45,8 +59,12 @@ object RagiumMiscRegister { } @JvmStatic - private fun register(helper: RegisterEvent.RegisterHelper, material: HTEquipmentMaterial) { - val id: ResourceLocation = RagiumAPI.id(material.asMaterialName()) + private fun register( + helper: RegisterEvent.RegisterHelper, + material: HTEquipmentMaterial, + name: String = material.asMaterialName(), + ) { + val id: ResourceLocation = RagiumAPI.id(name) helper.register( id, ArmorMaterial( diff --git a/src/main/kotlin/hiiragi283/ragium/setup/RagiumRecipeBiCodecs.kt b/src/main/kotlin/hiiragi283/ragium/setup/RagiumRecipeBiCodecs.kt index b3465c99b..067a2d7d7 100644 --- a/src/main/kotlin/hiiragi283/ragium/setup/RagiumRecipeBiCodecs.kt +++ b/src/main/kotlin/hiiragi283/ragium/setup/RagiumRecipeBiCodecs.kt @@ -13,8 +13,6 @@ import hiiragi283.ragium.impl.data.recipe.HTFluidTransformRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemToObjRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithCatalystToItemRecipeBuilder import hiiragi283.ragium.impl.data.recipe.HTItemWithFluidToChancedItemRecipeBuilder -import hiiragi283.ragium.impl.data.recipe.ingredient.HTFluidIngredientCreatorImpl -import hiiragi283.ragium.impl.data.recipe.ingredient.HTItemIngredientCreatorImpl import hiiragi283.ragium.impl.recipe.HTAlloyingRecipe import hiiragi283.ragium.impl.recipe.HTCrushingRecipe import hiiragi283.ragium.impl.recipe.HTEnchantingRecipe @@ -22,17 +20,14 @@ import hiiragi283.ragium.impl.recipe.base.HTFluidTransformRecipeBase import hiiragi283.ragium.impl.recipe.base.HTItemToFluidRecipe import hiiragi283.ragium.impl.recipe.base.HTItemToItemRecipe import hiiragi283.ragium.impl.recipe.base.HTItemWithFluidToChancedItemRecipeBase -import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.network.RegistryFriendlyByteBuf object RagiumRecipeBiCodecs { @JvmField - val ITEM_CODEC: BiCodec = - HTItemIngredientCreatorImpl(BuiltInRegistries.ITEM.asLookup()).codec() + val ITEM_CODEC: BiCodec = HTItemIngredient.CODEC @JvmField - val FLUID_CODEC: BiCodec = - HTFluidIngredientCreatorImpl(BuiltInRegistries.FLUID.asLookup()).codec() + val FLUID_CODEC: BiCodec = HTFluidIngredient.CODEC @JvmField val ALLOYING: MapBiCodec = MapBiCodec diff --git a/src/main/resources/assets/ragium/textures/models/armor/ragi_crystal_layer_1.png b/src/main/resources/assets/ragium/textures/models/armor/ragi_crystal_layer_1.png new file mode 100644 index 000000000..339b5a43d Binary files /dev/null and b/src/main/resources/assets/ragium/textures/models/armor/ragi_crystal_layer_1.png differ diff --git a/src/main/resources/assets/ragium/textures/models/armor/ragi_crystal_layer_2.png b/src/main/resources/assets/ragium/textures/models/armor/ragi_crystal_layer_2.png new file mode 100644 index 000000000..b7e032ec4 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/models/armor/ragi_crystal_layer_2.png differ diff --git a/src/main/templates/META-INF/neoforge.mods.toml b/src/main/templates/META-INF/neoforge.mods.toml index 9ef6a3981..29a86dd09 100644 --- a/src/main/templates/META-INF/neoforge.mods.toml +++ b/src/main/templates/META-INF/neoforge.mods.toml @@ -85,14 +85,6 @@ config="${mod_id}.mixins.json" ordering="NONE" side="BOTH" -[[dependencies.${mod_id}]] - modId="accessories" - type="required" - # This version range declares a minimum of the current minecraft version up to but not including the next major version - versionRange="*" - ordering="NONE" - side="BOTH" - # Features are specific properties of the game environment, that you may want to declare you require. This example declares # that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't # stop your mod loading on the server for example.