Skip to content

Commit c6a12bf

Browse files
committed
ichorium crown
1 parent 945df6d commit c6a12bf

File tree

8 files changed

+85
-119
lines changed

8 files changed

+85
-119
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package dev.sterner.client.model
2+
3+
import com.mojang.blaze3d.vertex.PoseStack
4+
import com.mojang.blaze3d.vertex.VertexConsumer
5+
import dev.sterner.VoidBound
6+
import net.minecraft.client.model.EntityModel
7+
import net.minecraft.client.model.HumanoidModel
8+
import net.minecraft.client.model.Model
9+
import net.minecraft.client.model.geom.ModelLayerLocation
10+
import net.minecraft.client.model.geom.ModelPart
11+
import net.minecraft.client.model.geom.PartNames
12+
import net.minecraft.client.model.geom.PartPose
13+
import net.minecraft.client.model.geom.builders.CubeDeformation
14+
import net.minecraft.client.model.geom.builders.CubeListBuilder
15+
import net.minecraft.client.model.geom.builders.LayerDefinition
16+
import net.minecraft.client.model.geom.builders.MeshDefinition
17+
import net.minecraft.client.renderer.RenderType
18+
import net.minecraft.resources.ResourceLocation
19+
import net.minecraft.world.entity.LivingEntity
20+
import java.util.function.Function
21+
22+
class IchoriumCircletModel<T : LivingEntity>(root: ModelPart) :
23+
HumanoidModel<T>(root, RenderType::entityTranslucent) {
24+
25+
private val base: ModelPart = root.getChild("head").getChild("base")
26+
27+
override fun renderToBuffer(
28+
poseStack: PoseStack,
29+
vertexConsumer: VertexConsumer,
30+
packedLight: Int,
31+
packedOverlay: Int,
32+
red: Float,
33+
green: Float,
34+
blue: Float,
35+
alpha: Float
36+
) {
37+
base.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha)
38+
}
39+
40+
companion object {
41+
// This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor
42+
val LAYER_LOCATION: ModelLayerLocation =
43+
ModelLayerLocation(VoidBound.id("ichorium_circlet"), "main")
44+
45+
fun createBodyLayer(): LayerDefinition {
46+
val data = createMesh(CubeDeformation.NONE, 0f)
47+
val root = data.root
48+
val head = root.getChild(PartNames.HEAD)
49+
50+
val base = head.addOrReplaceChild(
51+
"base",
52+
CubeListBuilder.create().texOffs(27, 9)
53+
.addBox(-4.5f, -1.0f, -4.5f, 9.0f, 9.0f, 9.0f, CubeDeformation(0.25f))
54+
.texOffs(0, 18).addBox(-4.5f, -1.0f, -4.5f, 9.0f, 9.0f, 9.0f, CubeDeformation(0.0f))
55+
.texOffs(0, 0).addBox(-4.5f, -1.0f, -4.5f, 9.0f, 9.0f, 9.0f, CubeDeformation(0.5f)),
56+
PartPose.offset(0.0f, 16.0f, 0.0f)
57+
)
58+
59+
return LayerDefinition.create(data, 64, 64)
60+
}
61+
}
62+
}
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
package dev.sterner.client.renderer
22

33
import com.mojang.blaze3d.vertex.PoseStack
4-
import com.sammy.malum.common.item.curiosities.armor.MalumArmorItem
5-
import dev.sterner.registry.VoidBoundBlockRegistry
4+
import dev.sterner.VoidBound
5+
import dev.sterner.client.model.HallowedGogglesModel
6+
import dev.sterner.client.model.IchoriumCircletModel
7+
import dev.sterner.client.renderer.HallowedGogglesRenderer.Companion
68
import net.fabricmc.fabric.api.client.rendering.v1.ArmorRenderer
79
import net.minecraft.client.Minecraft
810
import net.minecraft.client.model.HumanoidModel
11+
import net.minecraft.client.model.MinecartModel
912
import net.minecraft.client.renderer.MultiBufferSource
10-
import net.minecraft.client.renderer.texture.OverlayTexture
1113
import net.minecraft.world.entity.EquipmentSlot
1214
import net.minecraft.world.entity.LivingEntity
15+
import net.minecraft.world.entity.player.Player
1316
import net.minecraft.world.item.ItemStack
1417

1518
class IchoriumCircletRenderer : ArmorRenderer {
1619

20+
var model: IchoriumCircletModel<LivingEntity>? = null
21+
1722
override fun render(
1823
matrices: PoseStack,
1924
vertexConsumers: MultiBufferSource,
@@ -24,8 +29,19 @@ class IchoriumCircletRenderer : ArmorRenderer {
2429
contextModel: HumanoidModel<LivingEntity>?
2530
) {
2631
if (slot == EquipmentSlot.HEAD) {
27-
val state = VoidBoundBlockRegistry.ICHORIUM_CIRCLET.get().defaultBlockState()
28-
Minecraft.getInstance().blockRenderer.renderSingleBlock(state, matrices, vertexConsumers, light, OverlayTexture.NO_OVERLAY)
32+
matrices.pushPose()
33+
34+
if (model == null) {
35+
model = IchoriumCircletModel(
36+
Minecraft.getInstance().entityModels.bakeLayer(IchoriumCircletModel.LAYER_LOCATION)
37+
)
38+
} else {
39+
contextModel!!.head.translateAndRotate(matrices)
40+
matrices.translate(0.0,-1.7,0.0)
41+
ArmorRenderer.renderPart(matrices, vertexConsumers, light, stack, model, VoidBound.id("textures/entity/ichorium_circlet.png"))
42+
}
43+
44+
matrices.popPose()
2945
}
3046
}
3147
}

Diff for: src/main/kotlin/dev/sterner/common/block/IchoriumCircletBlock.kt

-6
This file was deleted.

Diff for: src/main/kotlin/dev/sterner/registry/VoidBoundBlockRegistry.kt

-5
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,6 @@ object VoidBoundBlockRegistry {
7575
TearBlock(TearBlock.Type.BRIMSTONE, FabricBlockSettings.create().noOcclusion())
7676
}
7777

78-
var ICHORIUM_CIRCLET: RegistryObject<IchoriumCircletBlock> = BLOCKS.register("ichorium_circlet") {
79-
IchoriumCircletBlock(FabricBlockSettings.create().noOcclusion())
80-
}
81-
82-
8378

8479
val ELDRITCH_OBELISK: RegistryObject<EldritchObeliskBlock> = BLOCKS.register(
8580
"eldritch_obelisk"

Diff for: src/main/kotlin/dev/sterner/registry/VoidBoundModelLayers.kt

+2
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,7 @@ object VoidBoundModelLayers {
2222
EntityModelLayerRegistry.registerModelLayer(ObeliskCoreModel.LAYER_LOCATION) { ObeliskCoreModel.createBodyLayer() }
2323
EntityModelLayerRegistry.registerModelLayer(ObeliskModel.LAYER_LOCATION) { ObeliskModel.createBodyLayer() }
2424

25+
EntityModelLayerRegistry.registerModelLayer(IchoriumCircletModel.LAYER_LOCATION) { IchoriumCircletModel.createBodyLayer() }
26+
2527
}
2628
}

Diff for: src/main/resources/assets/voidbound/blockstates/ichorium_circlet.json

-7
This file was deleted.

Diff for: src/main/resources/assets/voidbound/models/block/ichorium_circlet.json

-96
This file was deleted.
Loading

0 commit comments

Comments
 (0)