Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import net.minecraft.resources.ResourceKey
import net.minecraft.resources.ResourceLocation
import net.neoforged.neoforge.registries.DeferredHolder

typealias HTSimpleDeferredHolder<R> = HTDeferredHolder<R, R>

/**
* @see mekanism.common.registration.MekanismDeferredHolder
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import java.util.function.Supplier
* @see mekanism.common.registration.DoubleDeferredRegister
*/
open class HTDoubleDeferredRegister<FIRST : Any, SECOND : Any> protected constructor(
protected val firstRegister: HTDeferredRegister<FIRST>,
protected val secondRegister: HTDeferredRegister<SECOND>,
protected open val firstRegister: HTDeferredRegister<FIRST>,
protected open val secondRegister: HTDeferredRegister<SECOND>,
) {
fun <F : FIRST, S : SECOND, H : HTDoubleDeferredHolder<FIRST, F, SECOND, S>> registerEach(
name: String,
Expand Down Expand Up @@ -48,9 +48,6 @@ open class HTDoubleDeferredRegister<FIRST : Any, SECOND : Any> protected constru
secondRegister.register(bus)
}

val firstEntries: Collection<HTDeferredHolder<FIRST, out FIRST>> get() = firstRegister.entries
val secondEntries: Collection<HTDeferredHolder<SECOND, out SECOND>> get() = secondRegister.entries

fun addFirstAlias(from: String, to: String) {
firstRegister.addAlias(firstRegister.createId(from), firstRegister.createId(to))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ import net.minecraft.world.level.block.state.BlockBehaviour
/**
* @see mekanism.common.registration.impl.BlockDeferredRegister
*/
class HTDeferredBlockRegister(namespace: String) :
HTDoubleDeferredRegister<Block, Item>(HTDeferredOnlyBlockRegister(namespace), HTDeferredItemRegister(namespace)) {
class HTDeferredBlockRegister(
override val firstRegister: HTDeferredOnlyBlockRegister,
override val secondRegister: HTDeferredItemRegister,
) : HTDoubleDeferredRegister<Block, Item>(firstRegister, secondRegister) {
constructor(namespace: String) : this(HTDeferredOnlyBlockRegister(namespace), HTDeferredItemRegister(namespace))

fun registerSimple(
name: String,
blockProp: BlockBehaviour.Properties,
Expand Down Expand Up @@ -78,4 +82,7 @@ class HTDeferredBlockRegister(namespace: String) :
{ block: HTDeferredHolder<Block, BLOCK> -> itemFactory(block.get(), itemProp) },
::HTDeferredBlock,
)

val blockEntries: Collection<HTDeferredOnlyBlock<*>> get() = firstRegister.entries
val itemEntries: Collection<HTDeferredItem<*>> get() = secondRegister.entries
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package hiiragi283.ragium.api.variant

import hiiragi283.ragium.api.material.HTMaterialLike
import net.minecraft.core.Holder
import net.minecraft.sounds.SoundEvent
import net.minecraft.world.item.ArmorItem
import net.minecraft.world.item.Tier

/**
* @see mekanism.tools.common.material.BaseMekanismMaterial
*/
interface HTEquipmentMaterial :
Tier,
HTMaterialLike {
fun getSwordDamage(): Float = 3f

fun getSwordAttackSpeed(): Float = -2.4f

fun getShovelDamage(): Float = 1.5f

fun getShovelAttackSpeed(): Float = -3f

fun getAxeDamage(): Float

fun getAxeAttackSpeed(): Float

fun getPickaxeDamage(): Float = 1f

fun getPickaxeAttackSpeed(): Float = -2.8f

fun getHoeDamage(): Float = -attackDamageBonus

fun getHoeAttackSpeed(): Float = attackDamageBonus - 3f

// Armor //

fun getToughness(): Float

fun getKnockbackResistance(): Float

fun getEquipSound(): Holder<SoundEvent>

fun getArmorDefence(type: ArmorItem.Type): Int

fun getArmorMultiplier(): Int
}
7 changes: 2 additions & 5 deletions src/api/kotlin/hiiragi283/ragium/api/variant/HTToolVariant.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package hiiragi283.ragium.api.variant

import hiiragi283.ragium.api.material.HTMaterialKey
import hiiragi283.ragium.api.registry.impl.HTDeferredItem
import hiiragi283.ragium.api.registry.impl.HTDeferredItemRegister
import net.minecraft.tags.TagKey
import net.minecraft.world.item.Item
import net.minecraft.world.item.Tier

/**
* ツール系アイテム向けの[HTVariantKey]の拡張インターフェース
Expand All @@ -16,9 +14,8 @@ interface HTToolVariant : HTVariantKey {
/**
* 指定した引数からアイテムを登録します。
* @param register アイテムのレジストリ
* @param key 道具の素材
* @param tier 道具のデータ
* @param material 道具の素材
* @return 登録されたアイテムの[HTDeferredItem]
*/
fun registerItem(register: HTDeferredItemRegister, key: HTMaterialKey, tier: Tier): HTDeferredItem<*>
fun registerItem(register: HTDeferredItemRegister, material: HTEquipmentMaterial): HTDeferredItem<*>
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package hiiragi283.ragium.data.server.loot

import hiiragi283.ragium.api.block.HTBlockWithEntity
import hiiragi283.ragium.api.material.HTMaterialKey
import hiiragi283.ragium.api.registry.HTDeferredHolder
import hiiragi283.ragium.api.registry.impl.HTDeferredBlock
import hiiragi283.ragium.api.registry.impl.HTDeferredOnlyBlock
import hiiragi283.ragium.common.block.HTCropBlock
import hiiragi283.ragium.common.block.storage.HTCrateBlock
import hiiragi283.ragium.common.block.storage.HTDrumBlock
Expand Down Expand Up @@ -40,9 +40,9 @@ class RagiumBlockLootProvider(provider: HolderLookup.Provider) :

override fun generate() {
RagiumBlocks.REGISTER
.firstEntries
.blockEntries
.asSequence()
.map(HTDeferredHolder<Block, out Block>::get)
.map(HTDeferredOnlyBlock<*>::get)
.forEach { block: Block ->
add(
block,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,13 +172,13 @@ object RagiumToolRecipeProvider : HTRecipeProvider.Direct() {
// Armor
val beforeKey: HTMaterialKey = beforeMaterial.asMaterialKey()
for ((variant: HTArmorVariant, armor: HTDeferredItem<*>) in armors) {
val beforeArmor: ItemLike = HTArmorVariant.ARMOR_TABLE[variant, beforeKey] ?: continue
val beforeArmor: ItemLike = VanillaMaterialKeys.ARMOR_TABLE[variant, beforeKey] ?: continue
upgradeFactory(armor, beforeArmor)
}
// Tool
for ((variant: HTToolVariant, tool: HTDeferredItem<*>) in RagiumItems.TOOLS.column(material.asMaterialKey())) {
val beforeTool: ItemLike = when (variant) {
is HTVanillaToolVariant -> HTVanillaToolVariant.TOOL_TABLE[variant, beforeKey]
is HTVanillaToolVariant -> VanillaMaterialKeys.TOOL_TABLE[variant, beforeKey]
is HTHammerToolVariant -> RagiumItems.TOOLS[variant, beforeKey]
is HTKnifeToolVariant -> RagiumDelightAddon.KNIFE_MAP[beforeKey]
else -> null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,23 @@ import hiiragi283.ragium.api.registry.impl.HTDeferredBlockRegister
import hiiragi283.ragium.api.registry.impl.HTDeferredItem
import hiiragi283.ragium.api.registry.impl.HTSimpleDeferredItem
import hiiragi283.ragium.api.registry.toHolderLike
import hiiragi283.ragium.api.variant.HTEquipmentMaterial
import hiiragi283.ragium.common.material.RagiumMaterialKeys
import hiiragi283.ragium.common.material.VanillaMaterialKeys
import hiiragi283.ragium.common.variant.HTHammerToolVariant
import hiiragi283.ragium.common.variant.HTKnifeToolVariant
import hiiragi283.ragium.setup.RagiumCreativeTabs
import hiiragi283.ragium.setup.RagiumDataComponents
import hiiragi283.ragium.setup.RagiumDelightFoods
import hiiragi283.ragium.setup.RagiumEquipmentMaterials
import hiiragi283.ragium.setup.RagiumItems
import hiiragi283.ragium.setup.RagiumToolTiers
import net.minecraft.core.component.DataComponentPatch
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.enchantment.Enchantments
import net.minecraft.world.level.block.Blocks
import net.minecraft.world.level.block.state.BlockBehaviour
import net.neoforged.api.distmarker.Dist
import net.neoforged.bus.api.IEventBus
import net.neoforged.neoforge.common.SimpleTier
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent
import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent
import vectorwing.farmersdelight.common.block.FeastBlock
Expand Down Expand Up @@ -60,12 +60,13 @@ object RagiumDelightAddon : RagiumAddon {

// Knives
@JvmField
val KNIFE_MAP: Map<HTMaterialKey, HTDeferredItem<*>> = mapOf(
RagiumMaterialKeys.RAGI_ALLOY to RagiumToolTiers.RAGI_ALLOY,
RagiumMaterialKeys.RAGI_CRYSTAL to RagiumToolTiers.RAGI_CRYSTAL,
).mapValues { (key: HTMaterialKey, tier: SimpleTier) ->
HTKnifeToolVariant.registerItem(RagiumFoodAddon.ITEM_REGISTER, key, tier)
}
val KNIFE_MAP: Map<HTMaterialKey, HTDeferredItem<*>> = listOf(
RagiumEquipmentMaterials.RAGI_ALLOY,
RagiumEquipmentMaterials.RAGI_CRYSTAL,
).associateBy(HTEquipmentMaterial::asMaterialKey)
.mapValues { (key: HTMaterialKey, material: HTEquipmentMaterial) ->
HTKnifeToolVariant.registerItem(RagiumFoodAddon.ITEM_REGISTER, material)
}

@JvmStatic
fun getKnife(material: HTMaterialLike): HTItemHolderLike = when (val key: HTMaterialKey = material.asMaterialKey()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,28 @@ import hiiragi283.ragium.api.material.HTMaterialKey
import hiiragi283.ragium.api.material.HTMaterialLike
import hiiragi283.ragium.api.registry.HTItemHolderLike
import hiiragi283.ragium.api.registry.impl.HTDeferredItem
import hiiragi283.ragium.common.material.RagiumMaterialKeys
import hiiragi283.ragium.api.variant.HTEquipmentMaterial
import hiiragi283.ragium.common.material.VanillaMaterialKeys
import hiiragi283.ragium.common.variant.HTHammerToolVariant
import hiiragi283.ragium.common.variant.HTKitchenKnifeToolVariant
import hiiragi283.ragium.setup.RagiumCreativeTabs
import hiiragi283.ragium.setup.RagiumEquipmentMaterials
import hiiragi283.ragium.setup.RagiumItems
import hiiragi283.ragium.setup.RagiumToolTiers
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.Tier
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent

object RagiumKaleidoCookeryAddon : RagiumAddon {
// Item //

// Knives
@JvmField
val KNIFE_MAP: Map<HTMaterialKey, HTDeferredItem<*>> = mapOf(
RagiumMaterialKeys.RAGI_ALLOY to RagiumToolTiers.RAGI_ALLOY,
RagiumMaterialKeys.RAGI_CRYSTAL to RagiumToolTiers.RAGI_CRYSTAL,
).mapValues { (key: HTMaterialKey, tier: Tier) ->
HTKitchenKnifeToolVariant.registerItem(RagiumFoodAddon.ITEM_REGISTER, key, tier)
}
val KNIFE_MAP: Map<HTMaterialKey, HTDeferredItem<*>> = listOf(
RagiumEquipmentMaterials.RAGI_ALLOY,
RagiumEquipmentMaterials.RAGI_CRYSTAL,
).associateBy(HTEquipmentMaterial::asMaterialKey)
.mapValues { (key: HTMaterialKey, material: HTEquipmentMaterial) ->
HTKitchenKnifeToolVariant.registerItem(RagiumFoodAddon.ITEM_REGISTER, material)
}

@JvmStatic
fun getKnife(material: HTMaterialLike): HTItemHolderLike = when (val key: HTMaterialKey = material.asMaterialKey()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,16 @@ package hiiragi283.ragium.common.variant
import com.github.ysbbbbbb.kaleidoscopecookery.init.tag.TagMod
import com.github.ysbbbbbb.kaleidoscopecookery.item.KitchenKnifeItem
import hiiragi283.ragium.api.data.lang.HTLanguageType
import hiiragi283.ragium.api.material.HTMaterialKey
import hiiragi283.ragium.api.registry.impl.HTDeferredItem
import hiiragi283.ragium.api.registry.impl.HTDeferredItemRegister
import hiiragi283.ragium.api.variant.HTEquipmentMaterial
import hiiragi283.ragium.api.variant.HTToolVariant
import net.minecraft.tags.TagKey
import net.minecraft.world.item.Item
import net.minecraft.world.item.Tier

object HTKitchenKnifeToolVariant : HTToolVariant {
override fun registerItem(register: HTDeferredItemRegister, key: HTMaterialKey, tier: Tier): HTDeferredItem<*> =
register.registerItemWith("${key.name}_kitchen_knife", tier, ::KitchenKnifeItem)
override fun registerItem(register: HTDeferredItemRegister, material: HTEquipmentMaterial): HTDeferredItem<*> =
register.registerItemWith("${material.asMaterialName()}_kitchen_knife", material, ::KitchenKnifeItem)

override val tagKeys: Iterable<TagKey<Item>> = listOf(TagMod.KITCHEN_KNIFE)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
package hiiragi283.ragium.common.variant

import hiiragi283.ragium.api.data.lang.HTLanguageType
import hiiragi283.ragium.api.material.HTMaterialKey
import hiiragi283.ragium.api.registry.impl.HTDeferredItem
import hiiragi283.ragium.api.registry.impl.HTDeferredItemRegister
import hiiragi283.ragium.api.variant.HTEquipmentMaterial
import hiiragi283.ragium.api.variant.HTToolVariant
import net.minecraft.resources.ResourceLocation
import net.minecraft.tags.TagKey
import net.minecraft.world.item.Item
import net.minecraft.world.item.Tier
import vectorwing.farmersdelight.common.item.KnifeItem
import vectorwing.farmersdelight.common.registry.ModItems
import vectorwing.farmersdelight.common.tag.CommonTags
import vectorwing.farmersdelight.common.tag.ModTags

object HTKnifeToolVariant : HTToolVariant {
override fun registerItem(register: HTDeferredItemRegister, key: HTMaterialKey, tier: Tier): HTDeferredItem<*> =
register.register("${key.name}_knife") { _: ResourceLocation ->
KnifeItem(
tier,
ModItems.knifeItem(tier),
)
override fun registerItem(register: HTDeferredItemRegister, material: HTEquipmentMaterial): HTDeferredItem<*> =
register.register("${material.asMaterialName()}_knife") { _ ->
KnifeItem(material, ModItems.knifeItem(material))
}

override val tagKeys: Iterable<TagKey<Item>> = listOf(CommonTags.TOOLS_KNIFE, ModTags.KNIVES)
Expand Down
39 changes: 2 additions & 37 deletions src/main/kotlin/hiiragi283/ragium/RagiumCommon.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ 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.api.recipe.RagiumRecipeTypes
import hiiragi283.ragium.api.registry.impl.HTDeferredRecipeType
import hiiragi283.ragium.client.network.HTOpenPotionBundlePacket
import hiiragi283.ragium.client.network.HTOpenUniversalBundlePacket
import hiiragi283.ragium.client.network.HTUpdateAccessConfigPayload
Expand All @@ -19,12 +17,9 @@ import hiiragi283.ragium.common.network.HTUpdateExperienceStoragePacket
import hiiragi283.ragium.common.network.HTUpdateFluidTankPacket
import hiiragi283.ragium.common.util.RagiumChunkLoader
import hiiragi283.ragium.config.RagiumConfig
import hiiragi283.ragium.impl.data.map.HTCrushingMaterialRecipeData
import hiiragi283.ragium.impl.data.map.HTRawSmeltingMaterialRecipeData
import hiiragi283.ragium.impl.material.RagiumMaterialManager
import hiiragi283.ragium.setup.CommonMaterialPrefixes
import hiiragi283.ragium.setup.RagiumAccessoryRegister
import hiiragi283.ragium.setup.RagiumArmorMaterials
import hiiragi283.ragium.setup.RagiumAttachmentTypes
import hiiragi283.ragium.setup.RagiumBlockEntityTypes
import hiiragi283.ragium.setup.RagiumBlocks
Expand All @@ -36,13 +31,11 @@ import hiiragi283.ragium.setup.RagiumFeatures
import hiiragi283.ragium.setup.RagiumFluidContents
import hiiragi283.ragium.setup.RagiumItems
import hiiragi283.ragium.setup.RagiumMenuTypes
import hiiragi283.ragium.setup.RagiumMiscRegister
import hiiragi283.ragium.setup.RagiumRecipeSerializers
import net.minecraft.core.dispenser.ProjectileDispenseBehavior
import net.minecraft.core.registries.Registries
import net.minecraft.world.item.Item
import net.minecraft.world.item.ProjectileItem
import net.minecraft.world.item.crafting.Recipe
import net.minecraft.world.item.crafting.RecipeType
import net.minecraft.world.level.ItemLike
import net.minecraft.world.level.block.DispenserBlock
import net.neoforged.api.distmarker.Dist
Expand All @@ -58,7 +51,6 @@ import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent
import net.neoforged.neoforge.registries.DataPackRegistryEvent
import net.neoforged.neoforge.registries.NewRegistryEvent
import net.neoforged.neoforge.registries.RegisterEvent
import net.neoforged.neoforge.registries.datamaps.RegisterDataMapTypesEvent

@Mod(RagiumAPI.MOD_ID)
Expand All @@ -67,7 +59,7 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) {
NeoForgeMod.enableMilkFluid()

eventBus.addListener(::commonSetup)
eventBus.addListener(::onRegister)
eventBus.addListener(RagiumMiscRegister::register)
eventBus.addListener(::registerDataMapTypes)
eventBus.addListener(::registerPackets)
eventBus.addListener(::registerRegistries)
Expand All @@ -83,7 +75,6 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) {
RagiumBlocks.init(eventBus)
RagiumItems.init(eventBus)

RagiumArmorMaterials.REGISTER.register(eventBus)
RagiumAttachmentTypes.REGISTER.register(eventBus)
RagiumBlockEntityTypes.init(eventBus)
RagiumCreativeTabs.init(eventBus)
Expand Down Expand Up @@ -127,32 +118,6 @@ class RagiumCommon(eventBus: IEventBus, container: ModContainer, dist: Dist) {
RagiumAPI.LOGGER.info("Registered new data pack registries!")
}

private fun onRegister(event: RegisterEvent) {
event.register(Registries.RECIPE_TYPE) { helper ->
register(helper, RagiumRecipeTypes.SAWMILL)
// Machine
register(helper, RagiumRecipeTypes.ALLOYING)
register(helper, RagiumRecipeTypes.COMPRESSING)
register(helper, RagiumRecipeTypes.CRUSHING)
register(helper, RagiumRecipeTypes.ENCHANTING)
register(helper, RagiumRecipeTypes.EXTRACTING)
register(helper, RagiumRecipeTypes.FLUID_TRANSFORM)
register(helper, RagiumRecipeTypes.MELTING)
register(helper, RagiumRecipeTypes.PLANTING)
register(helper, RagiumRecipeTypes.SIMULATING)
register(helper, RagiumRecipeTypes.WASHING)
}

event.register(RagiumAPI.MATERIAL_RECIPE_TYPE_KEY) { helper ->
helper.register(RagiumAPI.id("crushing"), HTCrushingMaterialRecipeData.CODEC)
helper.register(RagiumAPI.id("raw_smelting"), HTRawSmeltingMaterialRecipeData.CODEC)
}
}

private fun <R : Recipe<*>> register(helper: RegisterEvent.RegisterHelper<RecipeType<*>>, holder: HTDeferredRecipeType<*, R>) {
helper.register(holder.id, RecipeType.simple<R>(holder.id))
}

private fun commonSetup(event: FMLCommonSetupEvent) {
event.enqueueWork {
RagiumItems.REGISTER
Expand Down
Loading