Skip to content

Commit 687a667

Browse files
authored
Merge pull request #5 from Hiiragi283/transfer_rework
Release v0.10
2 parents cf3a9a8 + 016641e commit 687a667

File tree

265 files changed

+5006
-1841
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

265 files changed

+5006
-1841
lines changed

build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
}
1010

1111
group = "hiiragi283.ragium"
12-
version = "0.9.2+121x"
12+
version = "0.10.0+121x"
1313

1414
sourceSets {
1515
main {

gradle/libs.versions.toml

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
[versions]
2-
kotlin = "2.0.+"
2+
kotlin = "2.1.0"
33
minecraft = "1.21.1"
4-
fabric-loom = "1.8-SNAPSHOT"
4+
fabric-loom = "1.9-SNAPSHOT"
55
fabric-loader = "0.16.+"
66
fabric-api = "0.110.0+1.21.1"
77
fabric-yarn = "1.21.1+build.3"
8-
fabric-kotlin = "1.12.+"
8+
fabric-kotlin = "1.13.+"
9+
10+
ktlint = "12.1.2"
911

1012
energy = "4.1.0"
1113
jade = "15.8.3+fabric"
@@ -30,7 +32,6 @@ mods-fabric = [
3032
"fabric-api",
3133
"fabric-kotlin",
3234
"fabric-loader",
33-
"rs-fabric"
3435
]
3536
mods-include = [
3637
"energy"
@@ -44,4 +45,4 @@ mods-runtime = [
4445

4546
[plugins]
4647
fabric-loom = { id = "fabric-loom", version.ref = "fabric-loom" }
47-
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version = "12.1.1" }
48+
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }

gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt

+74-2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,17 @@ import hiiragi283.ragium.api.machine.block.HTMachineBlock
1313
import hiiragi283.ragium.api.machine.block.HTMachineBlockEntityBase
1414
import hiiragi283.ragium.client.extension.getBlockEntity
1515
import hiiragi283.ragium.client.extension.registerClientReceiver
16-
import hiiragi283.ragium.client.gui.*
16+
import hiiragi283.ragium.client.extension.world
17+
import hiiragi283.ragium.client.gui.HTFluidFilterScreen
18+
import hiiragi283.ragium.client.gui.HTItemFilterScreen
19+
import hiiragi283.ragium.client.gui.machine.*
1720
import hiiragi283.ragium.client.model.HTFluidCubeModel
1821
import hiiragi283.ragium.client.model.HTProcessorMachineModel
1922
import hiiragi283.ragium.client.renderer.*
2023
import hiiragi283.ragium.common.RagiumContents
24+
import hiiragi283.ragium.common.block.storage.HTCrateBlockEntity
2125
import hiiragi283.ragium.common.init.*
26+
import hiiragi283.ragium.common.network.HTCratePreviewPayload
2227
import hiiragi283.ragium.common.network.HTFloatingItemPayload
2328
import hiiragi283.ragium.common.network.HTFluidSyncPayload
2429
import hiiragi283.ragium.common.network.HTInventoryPayload
@@ -36,32 +41,44 @@ import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry
3641
import net.fabricmc.fabric.api.client.render.fluid.v1.SimpleFluidRenderHandler
3742
import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry
3843
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry
44+
import net.fabricmc.fabric.api.event.player.UseItemCallback
3945
import net.fabricmc.fabric.api.transfer.v1.context.ContainerItemContext
4046
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant
47+
import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant
4148
import net.minecraft.block.Block
4249
import net.minecraft.block.BlockState
4350
import net.minecraft.block.entity.BlockEntityType
51+
import net.minecraft.client.MinecraftClient
4452
import net.minecraft.client.gui.screen.Screen
4553
import net.minecraft.client.gui.screen.ingame.HandledScreens
54+
import net.minecraft.client.network.ClientPlayerEntity
4655
import net.minecraft.client.render.RenderLayer
4756
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories
4857
import net.minecraft.client.render.entity.FlyingItemEntityRenderer
4958
import net.minecraft.client.render.model.ModelRotation
5059
import net.minecraft.client.render.model.UnbakedModel
5160
import net.minecraft.client.render.model.json.ModelVariant
5261
import net.minecraft.client.render.model.json.WeightedUnbakedModel
62+
import net.minecraft.entity.player.PlayerEntity
5363
import net.minecraft.inventory.Inventory
5464
import net.minecraft.item.Item
5565
import net.minecraft.item.ItemStack
5666
import net.minecraft.item.tooltip.TooltipType
67+
import net.minecraft.particle.ParticleType
68+
import net.minecraft.particle.SimpleParticleType
5769
import net.minecraft.registry.Registries
70+
import net.minecraft.registry.entry.RegistryEntry
71+
import net.minecraft.sound.SoundEvent
5872
import net.minecraft.state.property.Properties
5973
import net.minecraft.text.Text
6074
import net.minecraft.util.Formatting
75+
import net.minecraft.util.Hand
6176
import net.minecraft.util.Identifier
77+
import net.minecraft.util.TypedActionResult
6278
import net.minecraft.util.math.BlockPos
6379
import net.minecraft.util.math.Direction
6480
import net.minecraft.world.BlockRenderView
81+
import net.minecraft.world.World
6582
import team.reborn.energy.api.EnergyStorage
6683

6784
@Environment(EnvType.CLIENT)
@@ -89,13 +106,19 @@ object RagiumClient : ClientModInitializer {
89106
addAll(RagiumContents.Hulls.entries)
90107
addAll(RagiumContents.Exporters.entries)
91108
addAll(RagiumContents.Pipes.entries)
109+
addAll(RagiumContents.CrossPipes.entries)
110+
addAll(RagiumContents.PipeStations.entries)
111+
addAll(RagiumContents.FilteringPipe.entries)
112+
addAll(RagiumContents.Crates.entries)
92113
}.map(HTContent<Block>::value).forEach(::registerCutoutMipped)
93114

94115
RagiumAPI
95116
.getInstance()
96117
.machineRegistry.blocks
97118
.forEach(::registerCutoutMipped)
98119

120+
registerCutoutMipped(RagiumBlocks.CREATIVE_CRATE)
121+
registerCutoutMipped(RagiumBlocks.CREATIVE_EXPORTER)
99122
registerCutoutMipped(RagiumBlocks.CROSS_WHITE_LINE)
100123
registerCutoutMipped(RagiumBlocks.ITEM_DISPLAY)
101124
registerCutoutMipped(RagiumBlocks.POROUS_NETHERRACK)
@@ -105,6 +128,8 @@ object RagiumClient : ClientModInitializer {
105128
registerCutoutMipped(RagiumBlocks.WHITE_LINE)
106129
// block entity renderer
107130
BlockEntityRendererFactories.register(RagiumBlockEntityTypes.BEDROCK_MINER) { HTBedrockMinerBlockEntityRenderer }
131+
BlockEntityRendererFactories.register(RagiumBlockEntityTypes.CRATE, ::HTCrateBlockEntityRenderer)
132+
BlockEntityRendererFactories.register(RagiumBlockEntityTypes.CREATIVE_CRATE) { HTCreativeCrateBlockEntityRenderer }
108133
BlockEntityRendererFactories.register(RagiumBlockEntityTypes.MANUAL_FORGE) { HTManualForgeBlockEntityRenderer }
109134
BlockEntityRendererFactories.register(RagiumBlockEntityTypes.ITEM_DISPLAY) { HTItemDisplayBlockEntityRenderer }
110135
BlockEntityRendererFactories.register(RagiumBlockEntityTypes.LARGE_PROCESSOR) { HTLargeProcessorBlockEntityRenderer }
@@ -182,6 +207,29 @@ object RagiumClient : ClientModInitializer {
182207

183208
@JvmStatic
184209
private fun registerEvents() {
210+
UseItemCallback.EVENT.register { player: PlayerEntity, world: World, hand: Hand ->
211+
val stack: ItemStack = player.getStackInHand(hand)
212+
if (world.isClient) {
213+
if (HTItemFilterScreen.openScreen(stack, world)) {
214+
return@register TypedActionResult.success(stack, true)
215+
}
216+
if (HTFluidFilterScreen.openScreen(stack, world)) {
217+
return@register TypedActionResult.success(stack, true)
218+
}
219+
}
220+
TypedActionResult.pass(stack)
221+
}
222+
223+
ItemTooltipCallback.EVENT.register {
224+
stack: ItemStack,
225+
context: Item.TooltipContext,
226+
tooltipType: TooltipType,
227+
lines: MutableList<Text>,
228+
->
229+
stack.get(RagiumComponentTypes.ITEM_FILTER)?.let(RagiumTexts::itemFilter)?.let(lines::add)
230+
stack.get(RagiumComponentTypes.FLUID_FILTER)?.let(RagiumTexts::fluidFilter)?.let(lines::add)
231+
}
232+
185233
ModelLoadingPlugin.register { context: ModelLoadingPlugin.Context ->
186234
// register block state resolver
187235
RagiumAPI.getInstance().machineRegistry.entryMap.forEach { (_: HTMachineKey, entry: HTMachineRegistry.Entry) ->
@@ -276,8 +324,32 @@ object RagiumClient : ClientModInitializer {
276324

277325
@JvmStatic
278326
private fun registerNetworks() {
327+
RagiumNetworks.CRATE_PREVIEW.registerClientReceiver { payload: HTCratePreviewPayload, context: ClientPlayNetworking.Context ->
328+
val (pos: BlockPos, variant: ItemVariant, amount: Long) = payload
329+
(context.getBlockEntity(pos) as? HTCrateBlockEntity)?.itemStorage?.apply {
330+
this.variant = variant
331+
this.amount = amount
332+
}
333+
}
334+
279335
RagiumNetworks.FLOATING_ITEM.registerClientReceiver { payload: HTFloatingItemPayload, context: ClientPlayNetworking.Context ->
280-
context.client().gameRenderer.showFloatingItem(payload.stack)
336+
val (stack: ItemStack, particle: RegistryEntry<ParticleType<*>>, soundEvent: RegistryEntry<SoundEvent>) = payload
337+
val client: MinecraftClient = context.client()
338+
val player: ClientPlayerEntity = context.player()
339+
(particle.value() as? SimpleParticleType)?.let { type: SimpleParticleType ->
340+
client.particleManager.addEmitter(player, type, 30)
341+
}
342+
context.world?.playSound(
343+
player.x,
344+
player.y,
345+
player.z,
346+
soundEvent.value(),
347+
player.soundCategory,
348+
1.0F,
349+
1.0F,
350+
false,
351+
)
352+
client.gameRenderer.showFloatingItem(stack)
281353
}
282354

283355
RagiumNetworks.FLUID_SYNC.registerClientReceiver { payload: HTFluidSyncPayload, context: ClientPlayNetworking.Context ->

src/client/kotlin/hiiragi283/ragium/client/extension/RagiumRenderExtensions.kt

+70-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package hiiragi283.ragium.client.extension
22

33
import hiiragi283.ragium.api.RagiumAPI
4+
import hiiragi283.ragium.api.extension.getOrNull
45
import hiiragi283.ragium.api.machine.HTMachineTier
5-
import hiiragi283.ragium.api.machine.multiblock.HTMultiblockController
6+
import hiiragi283.ragium.api.machine.multiblock.HTMultiblockPatternProvider
67
import hiiragi283.ragium.client.renderer.HTMultiblockRenderer
78
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandler
89
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry
910
import net.minecraft.block.Block
11+
import net.minecraft.block.entity.BlockEntity
1012
import net.minecraft.client.MinecraftClient
1113
import net.minecraft.client.render.OverlayTexture
1214
import net.minecraft.client.render.VertexConsumerProvider
@@ -23,6 +25,7 @@ import net.minecraft.fluid.Fluid
2325
import net.minecraft.item.ItemStack
2426
import net.minecraft.registry.Registries
2527
import net.minecraft.resource.Resource
28+
import net.minecraft.state.property.Properties
2629
import net.minecraft.util.DyeColor
2730
import net.minecraft.util.Identifier
2831
import net.minecraft.util.math.Direction
@@ -65,6 +68,7 @@ fun renderItem(
6568
scale: Float = 1.0f,
6669
pitch: Float = 0.0f,
6770
yaw: Float = 0.0f,
71+
light: Int = 15728880,
6872
) {
6973
if (world == null) return
7074
matrices.push()
@@ -76,7 +80,7 @@ fun renderItem(
7680
MinecraftClient.getInstance().itemRenderer.renderItem(
7781
stack,
7882
ModelTransformationMode.FIXED,
79-
15728880,
83+
light,
8084
OverlayTexture.DEFAULT_UV,
8185
matrices,
8286
vertexConsumers,
@@ -86,16 +90,30 @@ fun renderItem(
8690
matrices.pop()
8791
}
8892

89-
fun <T : HTMultiblockController> renderMultiblock(
90-
controller: T,
93+
fun <T> renderMultiblock(
94+
provider: T,
95+
matrices: MatrixStack,
96+
vertexConsumers: VertexConsumerProvider,
97+
) where T : HTMultiblockPatternProvider, T : BlockEntity {
98+
renderMultiblock(
99+
provider,
100+
provider.world,
101+
provider.world?.getBlockState(provider.pos)?.getOrNull(Properties.HORIZONTAL_FACING),
102+
matrices,
103+
vertexConsumers,
104+
)
105+
}
106+
107+
fun <T : HTMultiblockPatternProvider> renderMultiblock(
108+
provider: T,
91109
world: World?,
92110
facing: Direction?,
93111
matrices: MatrixStack,
94112
vertexConsumers: VertexConsumerProvider,
95113
) {
96-
if (!controller.showPreview) return
114+
if (!provider.multiblockManager.showPreview) return
97115
world?.let {
98-
controller.buildMultiblock(HTMultiblockRenderer(it, matrices, vertexConsumers).rotate(facing))
116+
provider.buildMultiblock(HTMultiblockRenderer(it, matrices, vertexConsumers).rotate(facing))
99117
}
100118
}
101119

@@ -122,6 +140,52 @@ fun renderBeam(
122140
)
123141
}
124142

143+
/*fun renderSide(
144+
matrices: MatrixStack,
145+
vertexConsumer: VertexConsumerProvider,
146+
layer: RenderLayer,
147+
side: Direction,
148+
yTop: Float = 1f,
149+
yBottom: Float = 0f
150+
) {
151+
renderSide(matrices.peek().positionMatrix, vertexConsumer.getBuffer(layer), side, yTop, yBottom)
152+
}
153+
154+
fun renderSide(
155+
matrix: Matrix4f,
156+
vertexConsumer: VertexConsumer,
157+
side: Direction,
158+
yTop: Float = 1f,
159+
yBottom: Float = 0f
160+
) {
161+
when (side) {
162+
Direction.DOWN -> renderSide(matrix, vertexConsumer, 0f, 1f, yBottom, yBottom, 0f, 0f, 1f, 1f)
163+
Direction.UP -> renderSide(matrix, vertexConsumer, 0f, 1f, yTop, yTop, 1f, 1f, 0f, 0f)
164+
Direction.NORTH -> renderSide(matrix, vertexConsumer, 0f, 1f, 1f, 0f, 0f, 0f, 0f, 0f)
165+
Direction.SOUTH -> renderSide(matrix, vertexConsumer, 0f, 1f, 0f, 1f, 1f, 1f, 1f, 1f)
166+
Direction.WEST -> renderSide(matrix, vertexConsumer, 0f, 0f, 0f, 1f, 0f, 1f, 1f, 0f)
167+
Direction.EAST -> renderSide(matrix, vertexConsumer, 1f, 1f, 1f, 0f, 0f, 1f, 1f, 0f)
168+
}
169+
}
170+
171+
private fun renderSide(
172+
matrix: Matrix4f,
173+
vertexConsumer: VertexConsumer,
174+
x1: Float,
175+
x2: Float,
176+
y1: Float,
177+
y2: Float,
178+
z1: Float,
179+
z2: Float,
180+
z3: Float,
181+
z4: Float
182+
) {
183+
vertexConsumer.vertex(matrix, x1, y1, z1)
184+
vertexConsumer.vertex(matrix, x2, y1, z2)
185+
vertexConsumer.vertex(matrix, x2, y2, z3)
186+
vertexConsumer.vertex(matrix, x1, y2, z4)
187+
}*/
188+
125189
// Fluid //
126190

127191
fun Fluid.getSpriteAndColor(): Pair<Sprite, Int>? {

0 commit comments

Comments
 (0)