Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
001f629
refactor: update HTTagsProvider and HTTagBuilder
Hiiragi283 Nov 17, 2025
4303896
feat: add new device Fisher
Hiiragi283 Nov 17, 2025
de6c051
refactor: update recipe viewer for Fuel Generator
Hiiragi283 Nov 17, 2025
8e7ff9b
feat: add Crimson/Warped Crystal Dust
Hiiragi283 Nov 18, 2025
f38fef8
feat: add new fluids Nitric/Sulfuric/Mixture Acid
Hiiragi283 Nov 18, 2025
0bc6b04
refactor: added more crop recipes
Hiiragi283 Nov 18, 2025
d5999e4
feat: added metal dusts
Hiiragi283 Nov 19, 2025
8f7529e
refactor: unify creative mode tabs
Hiiragi283 Nov 19, 2025
a1e5e27
refactor: rename HTMaterialRecipeData into HTMaterialRecipe
Hiiragi283 Nov 19, 2025
56d6f37
feat: rework around glass blocks
Hiiragi283 Nov 19, 2025
733b865
feta: add new item Fishing Charge
Hiiragi283 Nov 19, 2025
3e242f8
feta: add new item Teleport Charge
Hiiragi283 Nov 19, 2025
4d6433f
feta: add new item Confusing Charge
Hiiragi283 Nov 19, 2025
02b3154
feat: added new recipe HTExpExtractingRecipe
Hiiragi283 Nov 19, 2025
f5c5442
build: added dependencies Hostile Neural Networks (and Placebo)
Hiiragi283 Nov 19, 2025
260b8fe
feat: upgrade machine tier of Simulation Chamber to Ultimate
Hiiragi283 Nov 20, 2025
f455147
refactor: update around item components
Hiiragi283 Nov 20, 2025
fbdee55
feat: add new machine Enchantment Copier
Hiiragi283 Nov 21, 2025
790d5ff
feat: add new entity tag `#ragium:confusion_blacklist`
Hiiragi283 Nov 21, 2025
fe71c1b
feat!: unified some recipe structures
Hiiragi283 Nov 21, 2025
7cf18ab
refactor: update around recipes
Hiiragi283 Nov 21, 2025
b8ac3ea
feat: add new machine Enchanter
Hiiragi283 Nov 21, 2025
ee67371
feat: implement Mixer block
Hiiragi283 Nov 21, 2025
0e7d8d0
feat!: remove Auto Smithing Table, Auto Stonecutter
Hiiragi283 Nov 21, 2025
0d20ffb
feat: add new item Wither Star
Hiiragi283 Nov 21, 2025
09f0dbf
feat: added new item Ragi-Cherry Juice
Hiiragi283 Nov 21, 2025
d4b439c
feat: add new material Butter, Salt
Hiiragi283 Nov 21, 2025
0338a6b
feat!: rename Budding Azure into Budding Quartz
Hiiragi283 Nov 21, 2025
95194a1
feat: add new Charge type Strike and Neutral
Hiiragi283 Nov 21, 2025
7c7cc60
feat: add new block Smooth Blackstone
Hiiragi283 Nov 22, 2025
660f49f
feat: updated fluid textures
Hiiragi283 Nov 23, 2025
66d0d1d
fix: incorrect result count in HTExpExtractingRecipe.kt
Hiiragi283 Nov 23, 2025
95ca9cb
feat!: remove Iridescentium Sand Paper
Hiiragi283 Nov 23, 2025
455445f
feat: added new fluid Slime and Glycerol
Hiiragi283 Nov 23, 2025
b5aa5dc
refactor: replaced material prefixes for foods from Ingot to Food
Hiiragi283 Nov 23, 2025
356d8c9
feat: redesigned machine upgrade system
Hiiragi283 Nov 23, 2025
bf2e7ce
feat: added new item Exp Collector Upgrade
Hiiragi283 Nov 23, 2025
5b6ac74
feat: added HTMachineUpgrade
Hiiragi283 Nov 23, 2025
0c04566
feat: added machine upgrades
Hiiragi283 Nov 23, 2025
e18f88c
feat!: removed item Basic Component
Hiiragi283 Nov 23, 2025
8e0cfe2
feat!: unify Item Buffer/Fisher/Mob Capturer into Item Collector
Hiiragi283 Nov 23, 2025
448bb34
feat: replaced Elite/Ultimate Circuit into Crystal Processor/Artifici…
Hiiragi283 Nov 23, 2025
dad2f27
refactor: use Fraction instead of float value
Hiiragi283 Nov 24, 2025
277e7a0
refactor: update around translations
Hiiragi283 Nov 24, 2025
ef200ec
feat: added HTMaterialLike.Translatable
Hiiragi283 Nov 25, 2025
4540d67
feat!: removed Elite/Ultimate Circuit
Hiiragi283 Nov 25, 2025
52d83f8
feat: added new item XX Gear
Hiiragi283 Nov 25, 2025
a872d74
refactor: refine around HTItemWithCatalystRecipe
Hiiragi283 Nov 25, 2025
f227b0f
feat: added new item Gear Mold
Hiiragi283 Nov 25, 2025
4f3e49b
feat!: removed unused gem/metal dusts
Hiiragi283 Nov 26, 2025
d9a1b44
feat: add HTFractionSyncSlot and HTFractionSyncPayload
Hiiragi283 Nov 26, 2025
04ce4c4
feat: renamed HTBasicFluidContentNew into HTBasicFluidContent
Hiiragi283 Nov 26, 2025
faf2152
feat!: removed material Iridescentium
Hiiragi283 Nov 26, 2025
3b089e7
fix: wrong recipe unification
Hiiragi283 Nov 26, 2025
1b4d865
feat: added new recipe type HTSimpleMixingRecipe
Hiiragi283 Nov 26, 2025
2c85bd0
feat: added new block Advanced Mixer
Hiiragi283 Nov 26, 2025
8cff461
feat: added ore processing recipes with Washer
Hiiragi283 Nov 26, 2025
3c06b79
feat: tweaked recipes
Hiiragi283 Nov 27, 2025
395349f
feat: added new material prefix RAW_MATERIAL_DUE
Hiiragi283 Nov 27, 2025
3d97633
feat: moved HTEnchantingRecipe from recipe to data maps
Hiiragi283 Nov 27, 2025
0d11631
feat: added new upgrade Efficient Crush Upgrade
Hiiragi283 Nov 27, 2025
0726f01
refactor: unify HTPulverizerBlockEntity and HTCrusherBlockEntity
Hiiragi283 Nov 27, 2025
92fcf7b
refactor: refine around menu textures
Hiiragi283 Nov 27, 2025
3d649a8
refactor: update code
Hiiragi283 Nov 27, 2025
e429623
fix: incorrect recipe validation in HTMixingRecipe
Hiiragi283 Nov 27, 2025
2ca743a
feat: added filter for machine upgrades
Hiiragi283 Nov 27, 2025
de2e7b9
feat: added new item Primary Only Upgrade
Hiiragi283 Nov 28, 2025
5fcc067
feat: added mob effect for liquid blocks
Hiiragi283 Nov 28, 2025
cbee38f
feat: added new potato cannon type for Ambrosia
Hiiragi283 Nov 28, 2025
977b205
refactor: update HTShapelessRecipeBuilder
Hiiragi283 Nov 28, 2025
9f7cd3b
feat: redesigned around machine config
Hiiragi283 Nov 28, 2025
2bef181
feat: refine around HTAbstractSmelterBlockEntity
Hiiragi283 Nov 28, 2025
6b35408
feat: redesigned HTBrewingRecipe and HTEnchantingRecipe
Hiiragi283 Nov 28, 2025
2a900ee
feat!: removed block Enchantment Copier
Hiiragi283 Nov 28, 2025
3f77eab
feat: added mush more brewing recipes
Hiiragi283 Nov 28, 2025
13b98ce
feat!: removed item Cinnabar Dust
Hiiragi283 Nov 28, 2025
717b06c
feat!: removed Saltpeter Dust
Hiiragi283 Nov 28, 2025
8460d70
refactor: moved some classes
Hiiragi283 Nov 28, 2025
d74acb7
feat: redesigned Thermal/Combustion Generator
Hiiragi283 Nov 28, 2025
e96bab0
feat: added new generator Culinary Generator
Hiiragi283 Nov 28, 2025
62a6091
refactor: replace MobEffectInstance to custom one
Hiiragi283 Nov 29, 2025
7088bb3
refactor: replace PotionContents to custom one
Hiiragi283 Nov 29, 2025
2c445f5
feat!: removed fluids Glycerol, Green Fuel, Nitric Acid, and Mixture …
Hiiragi283 Nov 29, 2025
46674ea
refactor: tweak recipes
Hiiragi283 Nov 30, 2025
0321b83
feat: added new machine Mob Crusher
Hiiragi283 Nov 30, 2025
29c62d4
fix: freeze when Block Breaker and Mob Crusher loaded from save data
Hiiragi283 Nov 30, 2025
da84c45
build: updated Oritech version
Hiiragi283 Dec 1, 2025
c98db5f
refactor: rename HTFluidStackTank and HTVariableFluidStackTank
Hiiragi283 Dec 1, 2025
44dc91e
refactor: renamed around HTItemStackSlot
Hiiragi283 Dec 1, 2025
350fcac
feat: added new shears
Hiiragi283 Dec 1, 2025
0f859f9
refactor: updated front textures of ultimate machines
Hiiragi283 Dec 1, 2025
62df50b
refactor: disabled to display flowing fluid stack
Hiiragi283 Dec 1, 2025
d4a6e33
feat: added new metal bars
Hiiragi283 Dec 1, 2025
7bde120
feat!: replaced HTMaterialRecipe into HTRuntimeRecipeProvider
Hiiragi283 Dec 2, 2025
8343660
refactor: added ParameterCodec
Hiiragi283 Dec 2, 2025
182bbd0
refactor: moved HTMenuCallback and HTSlotHelper
Hiiragi283 Dec 2, 2025
0a81cd8
feat: added new item Blank Mold
Hiiragi283 Dec 6, 2025
1f9cac2
feat!: removed block Washer
Hiiragi283 Dec 6, 2025
bbb1401
feat!: redesigned recipe types Crushing and Cutting
Hiiragi283 Dec 6, 2025
7efb1ea
feat!: redesigned recipe types Planting
Hiiragi283 Dec 6, 2025
f56e624
refactor!: changed location to save machine upgrades
Hiiragi283 Dec 6, 2025
1357832
refactor!: renamed RagiumDataMaps into RagiumDataMapTypes
Hiiragi283 Dec 6, 2025
34d441d
refactor!: redesigned around EMI Integration
Hiiragi283 Dec 6, 2025
a044f0c
build: added new integrations
Hiiragi283 Dec 6, 2025
b9598cc
feat!: removed fluid Organic Mutagen
Hiiragi283 Dec 6, 2025
4d5846d
feat!: removed item Spawner Fragment
Hiiragi283 Dec 7, 2025
eec46ff
feat: support recipe handler for EMI
Hiiragi283 Dec 7, 2025
69cabfa
fix: voiding item when moved in GUI with shift-clicking
Hiiragi283 Dec 7, 2025
8c436df
feat!: replaced HTRuntimeRecipeProvider into HTRegisterRuntimeRecipeE…
Hiiragi283 Dec 7, 2025
d4c0605
feat: enabled to interact fluid tanks manually
Hiiragi283 Dec 7, 2025
db0f738
refactor: refine around generator fuels
Hiiragi283 Dec 7, 2025
f9af05b
feat: added new generator Magmatic
Hiiragi283 Dec 7, 2025
9d8405f
refactor: rename some classes around HTExtraItemRecipe
Hiiragi283 Dec 7, 2025
3635552
feat: added new recipe type Rock Generating
Hiiragi283 Dec 7, 2025
1655415
feat: redesigned textures around device
Hiiragi283 Dec 7, 2025
616f446
refactor: update textures for plates
Hiiragi283 Dec 7, 2025
a299faf
refactor: lint scripts
Hiiragi283 Dec 7, 2025
e02b3bc
refactor: disables wip contents (block/item) with Feature Flag
Hiiragi283 Dec 7, 2025
1bb491f
refactor: refine around EMI integration
Hiiragi283 Dec 7, 2025
246f3f4
feat!: removed HTEntityTypeIngredient and HTSubEntityTypeIngredient
Hiiragi283 Dec 7, 2025
dd0bbb5
refactor: redesigned around HTItemIngredient
Hiiragi283 Dec 8, 2025
df7a9d4
refactor: redesigned around HTFluidIngredient
Hiiragi283 Dec 8, 2025
ef1350f
feat: add renderer to Imitation Spawner
Hiiragi283 Dec 9, 2025
1ec5301
refactor: refine around Imitation Spawner
Hiiragi283 Dec 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ repositories {
}
maven(url = "https://cursemaven.com")
maven(url = "https://maven.parchmentmc.org")
maven(url = "https://modmaven.dev/") // AU, Mekanism, PnC
maven(url = "https://modmaven.dev/") // AU, Mekanism, PnC, Oritech

maven(url = "https://maven4.bai.lol/") // WTHIT
maven(url = "https://maven.architectury.dev/") // Arch
Expand All @@ -72,6 +72,7 @@ repositories {
maven(url = "https://maven.k-4u.nl/") // TOP
maven(url = "https://maven.rover656.dev/releases") // EIO
maven(url = "https://maven.saps.dev/releases") // AA
maven(url = "https://maven.shadowsoffire.dev/releases") // HNN
maven(url = "https://maven.su5ed.dev/releases") // FFAPI
maven(url = "https://maven.tamaized.com/releases") // Twilight
maven(url = "https://maven.teamresourceful.com/repository/maven-public/") // Athena
Expand Down
20 changes: 16 additions & 4 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[versions]
minecraft = "1.21.1"
ragium = "0.12.1"
ragium = "0.12.2"

parchment-mc = "1.21.1"
parchment-map = "2024.11.17"
Expand All @@ -21,23 +21,27 @@ delight = "1.21.1-1.2.9"
emi = "1.1.22+1.21.1"
ender-io = "8.0.6-alpha"
fusion = "1.2.11b-neoforge-mc1.21"
hostile = "1.21.1-6.3.0"
immersive = "1.21.1-12.4.2-194"
jade = "15.10.3+neoforge"
kc = "1.1.0-neoforge+mc1.21.1"
kc = "1.1.1-neoforge+mc1.21.1"
#magitech = "0.12.1"
mek = "1.21.1-10.7.17.83"
oritech = "0.19.3"
oritech = "0.19.6"
pneuma = "8.2.13+mc1.21.1"
replica = "1.21-1.2.3"

arch = "13.0.8"
#ars = "5.10.5.1219"
create-ench = "2.2.5b"
create-dragon = "1.8.5"
#dire = "6369120"
enchdesc = "21.1.9"
flywheel = "1.0.6-beta-37"
guide = "21.1.15"
owo = "0.12.15.1-beta.6+1.21"
#patchouli-gen = "1.21.1-1.0.11-Snapshot.5"
placebo = "1.21.1-9.9.0"
registrate = "MC1.21-1.3.0+67"
#rs2 = "2.0.0-beta.10"

Expand All @@ -54,6 +58,7 @@ curious = { group = "top.theillusivec4.curios", name = "curios-neoforge", versio
delight = { group = "maven.modrinth", name = "farmers-delight", version.ref = "delight" }
emi = { group = "dev.emi", name = "emi-neoforge", version.ref = "emi" }
fusion = { group = "maven.modrinth", name = "fusion-connected-textures", version.ref = "fusion" }
hostile = { group = "dev.shadowsoffire", name = "HostileNeuralNetworks", version.ref = "hostile" }
immersive = { group = "blusunrize.immersiveengineering", name = "ImmersiveEngineering", version.ref = "immersive" }
jade = { group = "maven.modrinth", name = "jade", version.ref = "jade" }
kc = { group = "maven.modrinth", name = "kaleidoscope-cookery", version.ref = "kc" }
Expand All @@ -65,12 +70,15 @@ replica = { group = "maven.modrinth", name = "replication", version.ref = "repli

arch = { group = "dev.architectury", name = "architectury-neoforge", version.ref = "arch" }
#ars = { group = "com.hollingsworth.ars_nouveau", name = "ars_nouveau-1.21.1", version.ref = "ars" }
create-ench = { group = "maven.modrinth", name = "create-enchantment-industry", version.ref = "create-ench" }
create-dragon = { group = "maven.modrinth", name = "create-dragons-plus", version.ref = "create-dragon" }
#dire = { group = "curse.maven", name = "just-dire-things-1002348", version.ref = "dire" }
enchdesc = { group = "net.darkhax.enchdesc", name = "enchdesc-neoforge-1.21.1", version.ref = "enchdesc" }
flywheel = { group = "dev.engine-room.flywheel", name = "flywheel-neoforge-1.21.1", version.ref = "flywheel" }
guide = { group = "org.appliedenergistics", name = "guideme", version.ref = "guide" }
owo = { group = "io.wispforest", name = "owo-lib-neoforge", version.ref = "owo" }
#patchouli-gen = { group = "xyz.brassgoggledcoders", name = "PatchouliProvider", version.ref = "patchouli-gen" }
placebo = { group = "dev.shadowsoffire", name = "Placebo", version.ref = "placebo" }
registrate = { group = "com.tterrag.registrate", name = "Registrate", version.ref = "registrate" }
#rs2 = { group = "com.refinedmods.refinedstorage", name = "refinedstorage-neoforge", version.ref = "rs2" }

Expand All @@ -81,6 +89,7 @@ mods-impl = [
"almost",
"delight",
"emi",
"hostile",
"immersive",
"jade",
"kc",
Expand All @@ -90,6 +99,7 @@ mods-impl = [
"arch",
"guide",
"owo",
"placebo",
# create dependencies
"flywheel",
"registrate",
Expand All @@ -98,7 +108,9 @@ mods-impl = [
mods-transitive = [
"aa",
"accessories",
"create"
"create",
"create-ench",
"create-dragon",
]

mods-compile = []
Expand Down
25 changes: 5 additions & 20 deletions src/api/kotlin/hiiragi283/ragium/api/RagiumAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@ 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.map.HTSubEntityTypeIngredient
import hiiragi283.ragium.api.data.registry.HTSolarPower
import hiiragi283.ragium.api.inventory.slot.payload.HTSyncablePayload
import hiiragi283.ragium.api.registry.toId
import net.minecraft.core.Registry
import net.minecraft.network.RegistryFriendlyByteBuf
import net.minecraft.network.codec.StreamCodec
import net.minecraft.resources.ResourceKey
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.flag.FeatureFlag
import net.minecraft.world.flag.FeatureFlags
import net.neoforged.neoforge.registries.RegistryBuilder
import org.slf4j.Logger
import java.util.ServiceLoader
Expand Down Expand Up @@ -41,7 +40,7 @@ object RagiumAPI {
* 名前空間が`ragium`となる[ResourceLocation]を返します。
*/
@JvmStatic
fun id(prefix: String, suffix: String): ResourceLocation = id("$prefix/$suffix")
fun id(vararg path: String): ResourceLocation = MOD_ID.toId(*path)

/**
* 名前空間が`ragium`となる[ResourceLocation]を返します。
Expand Down Expand Up @@ -69,29 +68,15 @@ object RagiumAPI {
@JvmField
val EQUIP_ACTION_TYPE_REGISTRY: Registry<MapCodec<out HTEquipAction>> = createRegistry(EQUIP_ACTION_TYPE_KEY)

@JvmField
val MATERIAL_RECIPE_TYPE_KEY: ResourceKey<Registry<MapCodec<out HTMaterialRecipeData>>> = createKey("material_recipe_type")

@JvmField
val MATERIAL_RECIPE_TYPE_REGISTRY: Registry<MapCodec<out HTMaterialRecipeData>> = createRegistry(MATERIAL_RECIPE_TYPE_KEY)

@JvmField
val SLOT_TYPE_KEY: ResourceKey<Registry<StreamCodec<RegistryFriendlyByteBuf, out HTSyncablePayload>>> = createKey("syncable_slot_type")

@JvmField
val SLOT_TYPE_REGISTRY: Registry<StreamCodec<RegistryFriendlyByteBuf, out HTSyncablePayload>> = createRegistry(SLOT_TYPE_KEY)

// Feature Flag
@JvmField
val SUB_ENTITY_INGREDIENT_TYPE_KEY: ResourceKey<Registry<MapCodec<out HTSubEntityTypeIngredient>>> = createKey("entity_ingredient_type")

@JvmField
val SUB_ENTITY_INGREDIENT_TYPE_REGISTRY: Registry<MapCodec<out HTSubEntityTypeIngredient>> = createRegistry(
SUB_ENTITY_INGREDIENT_TYPE_KEY,
)

// Dynamic
@JvmField
val SOLAR_POWER_KEY: ResourceKey<Registry<HTSolarPower>> = createKey("solar_power")
val WORK_IN_PROGRESS: FeatureFlag = FeatureFlags.REGISTRY.getFlag(RagiumAPI.id("work_in_progress"))

// Service //

Expand Down
33 changes: 31 additions & 2 deletions src/api/kotlin/hiiragi283/ragium/api/RagiumConst.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package hiiragi283.ragium.api

import hiiragi283.ragium.api.registry.vanillaId
import net.minecraft.client.renderer.LightTexture
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.Item
import net.neoforged.neoforge.internal.versions.neoforge.NeoForgeVersion

Expand All @@ -13,6 +16,16 @@ object RagiumConst {
const val SAP_TO_MOLTEN = 250
const val MOLTEN_TO_GEM = 1000

// GUI //

@JvmField
val BLOCK_ATLAS: ResourceLocation = vanillaId("textures/atlas/blocks.png")

@JvmField
val GUI_ATLAS: ResourceLocation = vanillaId("textures/atlas/gui.png")

const val FULL_BRIGHT: Int = LightTexture.FULL_BRIGHT

// Item //

const val ABSOLUTE_MAX_STACK_SIZE: Int = Item.ABSOLUTE_MAX_STACK_SIZE
Expand All @@ -34,6 +47,7 @@ object RagiumConst {
const val EIO_MACHINES = "enderio_machines"
const val FARMERS_DELIGHT = "farmersdelight"
const val FOREGOING = "industrialforegoing"
const val HOSTILE_NETWORKS = "hostilenetworks"
const val IMMERSIVE = "immersiveengineering"
const val KALEIDO_COOKERY = "kaleidoscope_cookery"
const val MAGITECH = "magitech"
Expand All @@ -48,7 +62,7 @@ object RagiumConst {
@JvmField
val BUILTIN_IDS: Set<String> = setOf(MINECRAFT, NEOFORGE, COMMON, RagiumAPI.MOD_ID)

// Nbt //
// Serialization //

const val ACCESS_CONFIG = "access_config"
const val ENCHANTMENT = "enchantment"
Expand All @@ -66,6 +80,12 @@ object RagiumConst {
const val CAPACITY = "capacity"
const val BATTERIES = "batteries"

const val ID = "id"
const val TAG = "tag"
const val COUNT = "count"
const val COMPONENTS = "components"
const val CHANCE = "chance"

const val PREVENT_ITEM_MAGNET = "PreventRemoteMovement"

// Recipes //
Expand All @@ -77,12 +97,21 @@ object RagiumConst {
const val CUTTING = "cutting"
const val ENCHANTING = "enchanting"
const val EXTRACTING = "extracting"
const val FLUID_TRANSFORM = "fluid_transform"
const val MELTING = "melting"
const val MIXING = "mixing"
const val PLANTING = "planting"
const val REFINING = "refining"
const val ROCK_GENERATING = "rock_generating"
const val SIMULATING = "simulating"
const val SOLIDIFYING = "solidifying"
const val WASHING = "washing"

const val INGREDIENT = "ingredient"

const val RESULT = "result"
const val RESULTS = "results"
const val ITEM_RESULT = "item_result"
const val FLUID_RESULT = "fluid_result"

const val LUBRICANT_CONSUME = 25
}
48 changes: 28 additions & 20 deletions src/api/kotlin/hiiragi283/ragium/api/RagiumPlatform.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,33 @@ package hiiragi283.ragium.api
import com.google.gson.JsonObject
import hiiragi283.ragium.api.data.recipe.ingredient.HTFluidIngredientCreator
import hiiragi283.ragium.api.data.recipe.ingredient.HTItemIngredientCreator
import hiiragi283.ragium.api.item.HTDynamicUpgradeItem
import hiiragi283.ragium.api.item.component.HTMachineUpgrade
import hiiragi283.ragium.api.material.HTMaterialDefinition
import hiiragi283.ragium.api.material.HTMaterialKey
import hiiragi283.ragium.api.material.prefix.HTMaterialPrefix
import hiiragi283.ragium.api.recipe.HTMaterialRecipeManager
import hiiragi283.ragium.api.recipe.extra.HTPlantingRecipe
import hiiragi283.ragium.api.recipe.multi.HTRockGeneratingRecipe
import hiiragi283.ragium.api.registry.RegistryKey
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 net.minecraft.client.Minecraft
import net.minecraft.core.Holder
import net.minecraft.core.HolderGetter
import net.minecraft.core.HolderLookup
import net.minecraft.core.RegistryAccess
import net.minecraft.core.registries.Registries
import net.minecraft.core.component.DataComponentType
import net.minecraft.nbt.CompoundTag
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.item.DyeColor
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.crafting.RecipeSerializer
import net.minecraft.world.level.Level
import net.minecraft.world.level.material.Fluid
import net.neoforged.fml.loading.FMLEnvironment
import java.util.UUID
import kotlin.jvm.optionals.getOrNull

interface RagiumPlatform {
Expand All @@ -37,6 +38,20 @@ interface RagiumPlatform {
val INSTANCE: RagiumPlatform = RagiumAPI.getService()
}

/**
* [HTMachineUpgrade]の[DataComponentType]を返します。
*/
fun getUpgradeDataType(): DataComponentType<HTMachineUpgrade>

fun getMachineUpgrade(provider: HolderLookup.Provider?, stack: ItemStack): HTMachineUpgrade? {
val item: Item = stack.item
if (item is HTDynamicUpgradeItem) {
val upgrade: HTMachineUpgrade? = item.getUpgrade(provider, stack)
if (upgrade != null) return upgrade
}
return stack.get(getUpgradeDataType())
}

// Material //

fun getMaterialDefinitions(): Map<HTMaterialKey, HTMaterialDefinition>
Expand All @@ -45,21 +60,19 @@ interface RagiumPlatform {

fun getMaterialDefinition(key: HTMaterialKey): HTMaterialDefinition = getMaterialDefinitions()[key] ?: HTMaterialDefinition.Empty

fun getPrefix(name: String): HTMaterialPrefix?
fun getPrefixMap(): Map<String, HTMaterialPrefix>

// Recipe //
fun getPrefix(name: String): HTMaterialPrefix? = getPrefixMap()[name]

fun getMaterialRecipeManager(): HTMaterialRecipeManager
// Recipe //

fun createItemCreator(provider: HolderLookup.Provider): HTItemIngredientCreator =
createItemCreator(provider.lookupOrThrow(Registries.ITEM))
fun itemCreator(): HTItemIngredientCreator

fun createItemCreator(getter: HolderGetter<Item>): HTItemIngredientCreator
fun fluidCreator(): HTFluidIngredientCreator

fun createFluidCreator(provider: HolderLookup.Provider): HTFluidIngredientCreator =
createFluidCreator(provider.lookupOrThrow(Registries.FLUID))
fun getPlantingRecipeSerializer(): RecipeSerializer<HTPlantingRecipe>

fun createFluidCreator(getter: HolderGetter<Fluid>): HTFluidIngredientCreator
fun getRockGeneratingRecipeSerializer(): RecipeSerializer<HTRockGeneratingRecipe>

// Server //

Expand All @@ -80,11 +93,6 @@ interface RagiumPlatform {
fun <T : Any> getHolder(provider: HolderLookup.Provider?, key: ResourceKey<T>): Holder<T>? =
(provider ?: getRegistryAccess())?.holder(key)?.getOrNull()

fun getPlayer(uuid: UUID?): ServerPlayer? {
if (uuid == null) return null
return getCurrentServer()?.playerList?.getPlayer(uuid)
}

fun getUniversalBundle(server: MinecraftServer, color: DyeColor): HTItemHandler

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ fun Block.getAllAttributes(): Collection<HTBlockAttribute> = (this as? HTBlockWi
// direction
fun BlockState.getAttributeFront(): Direction? = this.getAttribute<HTDirectionalBlockAttribute>()?.getDirection(this)

// fluid
fun Holder<Block>.getFluidAttribute(): HTFluidBlockAttribute = getAttributeOrThrow<HTFluidBlockAttribute>()

// tier
inline fun <reified TIER : HTTierProvider> Block.getAttributeTier(): TIER? = getAttribute<HTTierBlockAttribute<TIER>>()?.provider

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package hiiragi283.ragium.api.block.attribute

import hiiragi283.ragium.api.RagiumAPI
import hiiragi283.ragium.api.text.HTHasTranslationKey
import net.minecraft.Util
import net.minecraft.util.StringRepresentable
import java.util.function.IntSupplier

@JvmRecord
data class HTFluidBlockAttribute(private val tankMap: Map<TankType, IntSupplier>) : HTBlockAttribute {
private fun getTankCapacity(type: TankType): IntSupplier = tankMap[type] ?: error("Undefined tank capacity for ${type.serializedName}")

fun getInputTank(): IntSupplier = getTankCapacity(TankType.INPUT)

fun getOutputTank(): IntSupplier = getTankCapacity(TankType.OUTPUT)

fun getFirstInputTank(): IntSupplier = getTankCapacity(TankType.FIRST_INPUT)

fun getSecondInputTank(): IntSupplier = getTankCapacity(TankType.SECOND_INPUT)

enum class TankType :
StringRepresentable,
HTHasTranslationKey {
INPUT,
OUTPUT,
FIRST_INPUT,
SECOND_INPUT,
;

override val translationKey: String =
Util.makeDescriptionId("config", RagiumAPI.id("${serializedName}_tank_capacity"))

override fun getSerializedName(): String = name.lowercase()
}
}
Loading