Compare commits

...
Author SHA1 Message Date
Aram 891f984d08 Custom Rendering for Overlay, Am not satisfied yet 2025-04-19 13:15:50 +02:00
3 changed files with 89 additions and 2 deletions

No files matched your search

@@ -1,7 +1,9 @@
package com.cobblemon.mod.common.client.render.block
import com.cobblemon.mod.common.block.entity.GrottoBlockEntity
import com.cobblemon.mod.common.util.cobblemonResource
import com.mojang.blaze3d.vertex.PoseStack
import com.mojang.blaze3d.vertex.VertexConsumer
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.LevelRenderer
import net.minecraft.client.renderer.MultiBufferSource
@@ -12,6 +14,7 @@ import net.minecraft.client.renderer.texture.OverlayTexture
import net.minecraft.world.level.block.state.BlockState
class GrottoBlockRenderer(ctx: BlockEntityRendererProvider.Context) : BlockEntityRenderer<GrottoBlockEntity> {
override fun render(
entity: GrottoBlockEntity,
partialTicks: Float,
@@ -24,6 +27,7 @@ class GrottoBlockRenderer(ctx: BlockEntityRendererProvider.Context) : BlockEntit
val level = entity.level ?: return
poseStack.pushPose()
Minecraft.getInstance().blockRenderer.renderBatched(
stateToRender,
entity.blockPos,
@@ -33,7 +37,90 @@ class GrottoBlockRenderer(ctx: BlockEntityRendererProvider.Context) : BlockEntit
true,
level.random
)
poseStack.popPose()
val overlayTexture = cobblemonResource("textures/block/grotto_overlay.png")
val overlayRenderType = RenderType.entityTranslucentCull(overlayTexture)
val overlayBuffer = bufferSource.getBuffer(overlayRenderType)
renderOverlayCube(
poseStack,
overlayBuffer,
packedLight,
OverlayTexture.NO_OVERLAY
)
poseStack.popPose()
}
}
fun renderOverlayCube(
poseStack: PoseStack,
buffer: VertexConsumer,
light: Int,
overlay: Int
) {
val matrix = poseStack.last().pose()
val min = -0.001f
val max = 1.001f
// Front (Z+)
buffer.addVertex(matrix, min, min, max).setColor(255, 255, 255, 128)
.setUv(min, max).setOverlay(overlay).setLight(light).setNormal(min, min, max)
buffer.addVertex(matrix, max, min, max).setColor(255, 255, 255, 128)
.setUv(max, max).setOverlay(overlay).setLight(light).setNormal(min, min, max)
buffer.addVertex(matrix, max, max, max).setColor(255, 255, 255, 128)
.setUv(max, min).setOverlay(overlay).setLight(light).setNormal(min, min, max)
buffer.addVertex(matrix, min, max, max).setColor(255, 255, 255, 128)
.setUv(min, min).setOverlay(overlay).setLight(light).setNormal(min, min, max)
// Back (Z-)
buffer.addVertex(matrix, max, min, min).setColor(255, 255, 255, 128)
.setUv(min, max).setOverlay(overlay).setLight(light).setNormal(min, min, -max)
buffer.addVertex(matrix, min, min, min).setColor(255, 255, 255, 128)
.setUv(max, max).setOverlay(overlay).setLight(light).setNormal(min, min, -max)
buffer.addVertex(matrix, min, max, min).setColor(255, 255, 255, 128)
.setUv(max, min).setOverlay(overlay).setLight(light).setNormal(min, min, -max)
buffer.addVertex(matrix, max, max, min).setColor(255, 255, 255, 128)
.setUv(min, min).setOverlay(overlay).setLight(light).setNormal(min, min, -max)
// Left (X-)
buffer.addVertex(matrix, min, min, min).setColor(255, 255, 255, 128)
.setUv(min, max).setOverlay(overlay).setLight(light).setNormal(-max, min, min)
buffer.addVertex(matrix, min, min, max).setColor(255, 255, 255, 128)
.setUv(max, max).setOverlay(overlay).setLight(light).setNormal(-max, min, min)
buffer.addVertex(matrix, min, max, max).setColor(255, 255, 255, 128)
.setUv(max, min).setOverlay(overlay).setLight(light).setNormal(-max, min, min)
buffer.addVertex(matrix, min, max, min).setColor(255, 255, 255, 128)
.setUv(min, min).setOverlay(overlay).setLight(light).setNormal(-max, min, min)
// Right (X+)
buffer.addVertex(matrix, max, min, max).setColor(255, 255, 255, 128)
.setUv(min, max).setOverlay(overlay).setLight(light).setNormal(max, min, min)
buffer.addVertex(matrix, max, min, min).setColor(255, 255, 255, 128)
.setUv(max, max).setOverlay(overlay).setLight(light).setNormal(max, min, min)
buffer.addVertex(matrix, max, max, min).setColor(255, 255, 255, 128)
.setUv(max, min).setOverlay(overlay).setLight(light).setNormal(max, min, min)
buffer.addVertex(matrix, max, max, max).setColor(255, 255, 255, 128)
.setUv(min, min).setOverlay(overlay).setLight(light).setNormal(max, min, min)
// Top (Y+)
buffer.addVertex(matrix, min, max, max).setColor(255, 255, 255, 128)
.setUv(min, max).setOverlay(overlay).setLight(light).setNormal(min, max, min)
buffer.addVertex(matrix, max, max, max).setColor(255, 255, 255, 128)
.setUv(max, max).setOverlay(overlay).setLight(light).setNormal(min, max, min)
buffer.addVertex(matrix, max, max, min).setColor(255, 255, 255, 128)
.setUv(max, min).setOverlay(overlay).setLight(light).setNormal(min, max, min)
buffer.addVertex(matrix, min, max, min).setColor(255, 255, 255, 128)
.setUv(min, min).setOverlay(overlay).setLight(light).setNormal(min, max, min)
// Bottom (Y-)
buffer.addVertex(matrix, min, min, min).setColor(255, 255, 255, 128)
.setUv(min, max).setOverlay(overlay).setLight(light).setNormal(min, -max, min)
buffer.addVertex(matrix, max, min, min).setColor(255, 255, 255, 128)
.setUv(max, max).setOverlay(overlay).setLight(light).setNormal(min, -max, min)
buffer.addVertex(matrix, max, min, max).setColor(255, 255, 255, 128)
.setUv(max, min).setOverlay(overlay).setLight(light).setNormal(min, -max, min)
buffer.addVertex(matrix, min, min, max).setColor(255, 255, 255, 128)
.setUv(min, min).setOverlay(overlay).setLight(light).setNormal(min, -max, min)
}
@@ -1,5 +1,5 @@
{
"parent": "block/cube_all",
"parent": "minecraft:block/air",
"textures": {
"all": "minecraft:block/barrier"
},
Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B