Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
43396ec
feat: HTElement と HTChemical を追加
Hiiragi283 Sep 25, 2026
03806c2
feat: さらに元素と化学物質を追加
Hiiragi283 Sep 25, 2026
c358a2e
feat: 液体にも化学物質のツールチップを追加
Hiiragi283 Sep 25, 2026
c0e8e3d
feat: 新しいブロック「Fluid Output Bus / 液体搬出バス」を追加
Hiiragi283 Sep 26, 2026
f52c401
fix: HTPotionFluidIngredient で水が正常に判定されていなかった
Hiiragi283 Sep 26, 2026
462d8c4
feat: 新しい液体「塩水」を追加
Hiiragi283 Sep 26, 2026
5b2cada
feat: 新しいレシピタイプ「Centrifuging / 遠心分離」を追加
Hiiragi283 Sep 26, 2026
9230bd0
refactor: 1:1で変換するレシピのクラスを共通化
Hiiragi283 Sep 26, 2026
9191b9d
refactor!: 化学物質を変更
Hiiragi283 Sep 26, 2026
b34427b
feat: 新しいアイテムを追加
Hiiragi283 Sep 26, 2026
86136b7
refactor: RagiumMaterial.Alloy を追加
Hiiragi283 Sep 26, 2026
3107f29
feat: アルカリ工業に関する要素を追加
Hiiragi283 Sep 26, 2026
8cc1da2
feat: 新しいアイテム「Sticky Ball / 粘着質の塊」を追加
Hiiragi283 Sep 26, 2026
e2fdb9a
feat: 新しいレシピタイプ「Washing / 洗浄」を追加
Hiiragi283 Sep 27, 2026
ea01381
Merge pull request #82 from Hiiragi283/feat/material
Hiiragi283 Sep 27, 2026
7abcb41
feat: 新しいブロック「Potion Tank / ポーションタンク」を追加
Hiiragi283 Sep 27, 2026
3c6672f
feat!: 水酸化カルシウム水溶液の用途を思いつかないので削除
Hiiragi283 Sep 27, 2026
02cb532
feat!: Carbon Dioxide を削除
Hiiragi283 Sep 28, 2026
d4d2c20
chore: バージョン間での差分を確認するために RagiumRegistryDumpReport を追加
Hiiragi283 Sep 28, 2026
27f37ca
feat!: Circuit Chip の名称を Silicon Chip に変更
Hiiragi283 Sep 28, 2026
79cd716
feat: モルタルを使用してひび割れたブロックを修復できるように
Hiiragi283 Sep 28, 2026
8ee4eb3
refactor: Widger Renderer 周りを改善
Hiiragi283 Sep 29, 2026
f01279d
refactor: HTStorageHelper を更新
Hiiragi283 Sep 29, 2026
9d0e1f9
refactor: これいいのかなぁ…
Hiiragi283 Sep 29, 2026
55e8796
feat: 新しいブロック「Gypsum / 石膏」を追加
Hiiragi283 Sep 29, 2026
1a0f04b
feat: 新しいブロック「Smooth Gypsum / 滑らかな石膏」を追加
Hiiragi283 Sep 29, 2026
d9aec0b
feat: 回路基板を復活
Hiiragi283 Sep 29, 2026
0afe344
feat: 化学物質を追加
Hiiragi283 Sep 29, 2026
6165e3b
build: 依存関係を更新
Hiiragi283 Sep 30, 2026
1916c65
refactor: HTItemOrFluidResult を導入
Hiiragi283 Oct 1, 2026
5b633c3
feat: 新しいブロックを追加
Hiiragi283 Oct 1, 2026
2f942be
feat: 新しい液体「Molten Plastic / 溶融プラスチック」を追加
Hiiragi283 Oct 1, 2026
3a497c9
feat: 新しい液体を追加
Hiiragi283 Oct 1, 2026
a21247c
feat: 新しいアイテム「Aluminum Fluoride Dust / フッ化アルミニウムの粉」を追加
Hiiragi283 Oct 1, 2026
15d03d7
feat: 機械の正面テクスチャを追加
Hiiragi283 Oct 1, 2026
1c5bde9
feat: Freezer のみテクスチャを変更
Hiiragi283 Oct 1, 2026
2896072
refactor!: HTValueWithId を削除
Hiiragi283 Oct 2, 2026
b27e9d3
feat!: Gypsum要らなくね
Hiiragi283 Oct 3, 2026
277bf04
feat!: 混乱の元となったアルミ周りをいったん削除
Hiiragi283 Oct 4, 2026
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
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[versions]
minecraft = "26.1.2"

neo-moddev = "2.0.146"
neo-version = "26.1.2.109"
neo-moddev = "2.0.147"
neo-version = "26.1.2.112"
kff-version = "6.3.0"

kotlin = "2.4.0"
Expand All @@ -16,7 +16,7 @@ mod-publish = "2.1.1"
ae2 = "26.1.12-beta"
curios = "15.0.0+26.1.2"
jade = "26.1.10+neoforge"
jei = "29.37.0.100"
jei = "29.43.0.106"

[libraries]

Expand Down
102 changes: 89 additions & 13 deletions src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
package hiiragi283.ragium.client

import hiiragi283.lib.HTConstants
import hiiragi283.lib.capability.HTFluidCapabilities
import hiiragi283.lib.event.HTRegisterWidgetRendererEvent
import hiiragi283.lib.fluid.FluidStackTintSource
import hiiragi283.lib.fluid.HTFluidModelRegister
import hiiragi283.lib.item.alchemy.HTPotionHelper
import hiiragi283.lib.mod.HTClientMod
import hiiragi283.lib.network.HTPayloadHandlers
import hiiragi283.lib.resource.vanillaId
import hiiragi283.lib.text.HTCommonTranslation
import hiiragi283.lib.text.Text
import hiiragi283.lib.transfer.fluid.HTFluidView
import hiiragi283.ragium.api.RagiumAPI
import hiiragi283.ragium.api.data.oreSlurry.HTOreSlurryDataHelper
import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper
import hiiragi283.ragium.api.tag.RagiumTags
import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen
import hiiragi283.ragium.client.gui.screen.tooltip.HTMemoryDiscClientTooltipComponent
import hiiragi283.ragium.client.gui.widget.HTEnergySlotWidgetRenderer
Expand All @@ -25,9 +30,11 @@ import hiiragi283.ragium.common.gui.widget.RagiumWidgetTypes
import hiiragi283.ragium.common.item.tooltip.HTMemoryDiscTooltipComponent
import hiiragi283.ragium.common.network.HTUpdateBlockEntityPacket
import hiiragi283.ragium.common.network.HTUpdateMenuPacket
import net.minecraft.ChatFormatting
import net.minecraft.client.resources.model.sprite.Material
import net.minecraft.util.ARGB
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.ItemStack
import net.neoforged.api.distmarker.Dist
import net.neoforged.bus.api.IEventBus
import net.neoforged.fml.ModContainer
Expand All @@ -36,16 +43,22 @@ import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent
import net.neoforged.neoforge.client.event.EntityRenderersEvent
import net.neoforged.neoforge.client.event.RegisterClientTooltipComponentFactoriesEvent
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent
import net.neoforged.neoforge.client.fluid.FluidTintSources
import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent
import net.neoforged.neoforge.common.tooltip.TooltipLocation
import net.neoforged.neoforge.event.RegisterTooltipAppendersEvent
import net.neoforged.neoforge.fluids.FluidStack
import net.neoforged.neoforge.transfer.fluid.FluidResource
import java.awt.Color
import java.util.function.Consumer

@Mod(value = RagiumAPI.MOD_ID, dist = [Dist.CLIENT])
data object RagiumClient : HTClientMod() {
override fun initialize(eventBus: IEventBus, container: ModContainer) {
eventBus.addListener { event: RegisterClientTooltipComponentFactoriesEvent ->
event.register(HTMemoryDiscTooltipComponent::class.java, ::HTMemoryDiscClientTooltipComponent)
}
eventBus.addListener(::registerTooltipAppenders)

configScreen(container)
}
Expand All @@ -60,10 +73,10 @@ data object RagiumClient : HTClientMod() {
}

override fun registerWidgetRenderer(event: HTRegisterWidgetRendererEvent) {
event.register(RagiumWidgetTypes.ENERGY, ::HTEnergySlotWidgetRenderer)
event.register(RagiumWidgetTypes.FLUID, ::HTFluidWidgetRenderer)
event.register(RagiumWidgetTypes.ITEM, ::HTItemWidgetRenderer)
event.register(RagiumWidgetTypes.PROGRESS, ::HTProgressWidgetRenderer)
event.register(RagiumWidgetTypes.ENERGY.get(), ::HTEnergySlotWidgetRenderer)
event.register(RagiumWidgetTypes.FLUID.get(), ::HTFluidWidgetRenderer)
event.register(RagiumWidgetTypes.ITEM.get(), ::HTItemWidgetRenderer)
event.register(RagiumWidgetTypes.PROGRESS.get(), ::HTProgressWidgetRenderer)
}

override fun registerFluidModels(register: HTFluidModelRegister) {
Expand All @@ -83,7 +96,7 @@ data object RagiumClient : HTClientMod() {
register.register(RagiumFluids.POTION) {
dull()
tintSource = FluidStackTintSource { stack: FluidStack ->
ARGB.opaque(HTPotionHelper.getContents(stack).color)
ARGB.opaque(HTPotionHelper.getContentsOrEmpty(stack).color)
}
}
register.register(RagiumFluids.OMINOUS_FLUX) {
Expand Down Expand Up @@ -112,6 +125,10 @@ data object RagiumClient : HTClientMod() {
transparent()
colorTint(Color(0x003399))
}
register.register(RagiumFluids.NITROGEN) {
transparent()
colorTint(Color(0x009999))
}
register.register(RagiumFluids.OXYGEN) {
transparent()
colorTint(Color(0x3399cc))
Expand All @@ -129,6 +146,14 @@ data object RagiumClient : HTClientMod() {
molten()
colorTint(Color(0x333366))
}
register.register(RagiumFluids.ALCOHOL) {
transparent()
colorTint(Color(0xcc99ff))
}
register.register(RagiumFluids.ALDEHYDE) {
transparent()
colorTint(Color(0xcc66ff))
}
register.register(RagiumFluids.AROMATIC_COMPOUND) {
transparent()
colorTint(Color(0xffcc99))
Expand All @@ -149,6 +174,10 @@ data object RagiumClient : HTClientMod() {
dull()
colorTint(Color(0xff9933))
}
register.register(RagiumFluids.MOLTEN_PLASTIC) {
molten()
colorTint(Color(0xccccdd))
}
register.register(RagiumFluids.SYNTHETIC_RESIN) {
molten()
colorTint(Color(0xff6633))
Expand All @@ -170,6 +199,10 @@ data object RagiumClient : HTClientMod() {
colorTint(Color(0x33cc66))
}

register.register(RagiumFluids.SALT_WATER) {
dull()
tintSource = FluidTintSources.water()
}
register.register(RagiumFluids.NAOH_SOLUTION) {
dull()
colorTint(Color(0x003366))
Expand Down Expand Up @@ -202,13 +235,6 @@ data object RagiumClient : HTClientMod() {
dull()
colorTint(Color(0xccff99))
}

register.register(RagiumFluids.ORE_SLURRY) {
still = Material(vanillaId(HTConstants.BLOCK, "white_concrete_powder"))
tintSource = FluidStackTintSource { stack: FluidStack ->
ARGB.opaque(HTOreSlurryDataHelper.getData(stack)?.color ?: 0x333300)
}
}
}

override fun registerScreens(event: RegisterMenuScreensEvent) {
Expand All @@ -217,6 +243,56 @@ data object RagiumClient : HTClientMod() {

override fun registerEntityRenderer(event: EntityRenderersEvent.RegisterRenderers) {
event.registerBlockEntityRenderer(RagiumBlockEntityTypes.TANK.get(), ::HTTankBlockEntityRenderer)
event.registerBlockEntityRenderer(RagiumBlockEntityTypes.POTION_TANK.get(), ::HTTankBlockEntityRenderer)
event.registerBlockEntityRenderer(RagiumBlockEntityTypes.CREATIVE_TANK.get(), ::HTTankBlockEntityRenderer)
}

@JvmStatic
private fun registerTooltipAppenders(event: RegisterTooltipAppendersEvent) {
event.registerAppender(
TooltipLocation.HEAD
) { stack: ItemStack, _, _, _, _, builder: Consumer<Text> ->
if (!stack.`is`(RagiumTags.Items.SHOW_FLUID_TOOLTIPS)) return@registerAppender
val view: HTFluidView = HTFluidCapabilities.getSlot(stack, 0) ?: return@registerAppender
val isCreative: Boolean = stack.`is`(RagiumTags.BlockItems.STORAGES_CREATIVE.item)
// Fluid Name
val resource: FluidResource = view.resource
when {
resource.isEmpty -> HTCommonTranslation.EMPTY.translateColored(ChatFormatting.RED)

isCreative -> HTCommonTranslation.STORED.translateColored(
ChatFormatting.LIGHT_PURPLE,
resource.hoverName,
ChatFormatting.GRAY,
HTCommonTranslation.INFINITE
)

else -> HTCommonTranslation.STORED_MB.translateColored(
ChatFormatting.LIGHT_PURPLE,
resource.hoverName,
ChatFormatting.GRAY,
view.amount
)
}.let(builder::accept)
// Tank Capacity
when (isCreative) {
true -> HTCommonTranslation.CAPACITY.translateColored(
ChatFormatting.BLUE,
ChatFormatting.GRAY,
HTCommonTranslation.INFINITE
)

false -> HTCommonTranslation.CAPACITY_MB.translateColored(
ChatFormatting.BLUE,
ChatFormatting.GRAY,
view.currentCapacity
)
}.let(builder::accept)
}
event.registerAppender(
TooltipLocation.HEAD
) { stack: ItemStack, _, _, _, _, builder: Consumer<Text> ->
HTClientChemicalHelper.addToTooltip(stack, builder::accept)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package hiiragi283.ragium.client.event

import hiiragi283.lib.item.alchemy.HTPotionHelper
import hiiragi283.lib.text.Text
import hiiragi283.ragium.api.RagiumAPI
import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper
import hiiragi283.ragium.common.fluid.RagiumFluids
import net.neoforged.api.distmarker.Dist
import net.neoforged.bus.api.SubscribeEvent
Expand All @@ -14,8 +16,12 @@ data object RagiumClientEventHandler {
@SubscribeEvent
fun onFluidTooltip(event: FluidTooltipEvent) {
val stack: FluidStack = event.fluidStack
val appender: (Text) -> Unit = event.toolTip::add
// Potion Fluid
if (RagiumFluids.POTION.isOf(stack)) {
HTPotionHelper.getContents(stack).addToTooltip(event.context, event.toolTip::add, event.flags, stack)
HTPotionHelper.getContentsNotEmpty(stack)?.addToTooltip(event.context, appender, event.flags, stack)
}
// Chemical Tooltip
HTClientChemicalHelper.addToTooltip(stack, appender)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,7 @@ class HTEnergySlotWidgetRenderer(gui: HTGuiAccess, widget: HTEnergySlotWidget) :

override fun shouldRender(): Boolean = !widget.isEmpty

override fun getSprite(): TextureAtlasSprite = getSprite(AtlasIds.BLOCKS, SPRITE)

override fun getColor(): Int = -1
override fun getSpriteAndColor(): Pair<TextureAtlasSprite, Int> = getSprite(AtlasIds.BLOCKS, SPRITE) to -1

override fun getLevel(): Float = widget.filledLevel

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,15 @@ class HTFluidWidgetRenderer(gui: HTGuiAccess, widget: HTFluidWidget) :

override fun shouldRender(): Boolean = !widget.isEmpty

override fun getSprite(): TextureAtlasSprite? = HTGuiRenderHelper.getSprite(widget.resource)

override fun getColor(): Int = HTGuiRenderHelper.getColor(widget.getFluidStack())
override fun getSpriteAndColor(): Pair<TextureAtlasSprite, Int>? =
HTGuiRenderHelper.getSpriteAndColor(widget.getFluidStack())

override fun getLevel(): Float = when (widget) {
is HTFluidWidget.Slot -> 1f
is HTFluidWidget.Tank -> widget.currentFilledLevel
}.coerceAtMost(1f)

override fun collectTooltips(consumer: Consumer<Text>, context: Item.TooltipContext, flag: TooltipFlag) {
HTStorageHelper.addFluidTooltip(widget.getFluidStack(), consumer, context, null, flag, false)
HTStorageHelper.addFluidTooltip(widget.getFluidStack(), consumer, context, flag, false)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package hiiragi283.ragium.client.gui.widget

import hiiragi283.lib.gui.HTBounds
import hiiragi283.lib.gui.HTGuiAccess
import hiiragi283.lib.gui.HTGuiRenderHelper
import hiiragi283.lib.gui.widget.HTAbstractWidgetRenderer
import hiiragi283.lib.gui.widget.HTWidget
import hiiragi283.lib.text.Text
Expand All @@ -15,7 +16,6 @@ import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling
import net.minecraft.resources.Identifier
import net.minecraft.world.item.Item
import net.minecraft.world.item.TooltipFlag
import net.neoforged.neoforge.client.ClientTooltipFlag
import java.util.function.Consumer

abstract class HTSpriteWidgetRenderer<WIDGET : HTWidget>(gui: HTGuiAccess, widget: WIDGET) :
Expand All @@ -38,9 +38,11 @@ abstract class HTSpriteWidgetRenderer<WIDGET : HTWidget>(gui: HTGuiAccess, widge
graphics.setTooltipForNextFrame(
font,
buildList {
collectTooltips({ text: Text ->
this.add(text.visualOrderText)
}, Item.TooltipContext.EMPTY, getTooltipFlag())
collectTooltips(
{ text: Text -> this.add(text.visualOrderText) },
HTGuiRenderHelper.getTooltipContext(),
HTGuiRenderHelper.getTooltipFlag()
)
},
mouseX,
mouseY
Expand All @@ -50,8 +52,7 @@ abstract class HTSpriteWidgetRenderer<WIDGET : HTWidget>(gui: HTGuiAccess, widge

private fun renderSprite(bounds: HTBounds, graphics: GuiGraphicsExtractor) {
if (!shouldRender()) return
val sprite: TextureAtlasSprite = getSprite() ?: return
val color: Int = getColor()
val (sprite: TextureAtlasSprite, color: Int) = getSpriteAndColor() ?: return
val fillLevel: Int = getScaledLevel().toInt()

val spriteContents: SpriteContents = sprite.contents()
Expand Down Expand Up @@ -81,27 +82,18 @@ abstract class HTSpriteWidgetRenderer<WIDGET : HTWidget>(gui: HTGuiAccess, widge
graphics.disableScissor()
}

protected fun getTooltipFlag(): TooltipFlag = ClientTooltipFlag.of(
when (Minecraft.getInstance().options.advancedItemTooltips) {
true -> TooltipFlag.ADVANCED
false -> TooltipFlag.NORMAL
}
)

protected abstract fun renderBackground(bounds: HTBounds, graphics: GuiGraphicsExtractor)

protected abstract fun shouldRender(): Boolean

protected abstract fun getSprite(): TextureAtlasSprite?
protected abstract fun getSpriteAndColor(): Pair<TextureAtlasSprite, Int>?

protected fun getSprite(atlasId: Identifier, id: Identifier): TextureAtlasSprite = Minecraft
.getInstance()
.atlasManager
.getAtlasOrThrow(atlasId)
.getSprite(id)

protected abstract fun getColor(): Int

protected open fun getScaledLevel(): Float = getLevel() * (widget.bounds.height - 2)

protected abstract fun getLevel(): Float
Expand Down
Loading
Loading