Skip to content

Commit 73f6cc9

Browse files
committed
Something something transparency not working so annoying. ALso tinting works.
1 parent 09949d2 commit 73f6cc9

File tree

6 files changed

+96
-66
lines changed

6 files changed

+96
-66
lines changed

common/src/main/java/generations/gg/generations/core/generationscore/common/client/GenerationsCoreClient.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,14 @@ object GenerationsCoreClient {
532532
.get() /*&& Minecraft.getInstance().options.renderDebugCharts*/ && !Minecraft.getInstance().options.hideGui
533533
}
534534

535+
fun renderRareCandySolid() {
536+
renderRareCandy(RenderStage.SOLID, false)
537+
}
538+
539+
fun renderRareCandyTransparent(clear: Boolean = false) {
540+
renderRareCandy(RenderStage.TRANSPARENT, clear)
541+
}
542+
535543
fun renderRareCandy(stage: RenderStage, clear: Boolean) {
536544
if (GenerationsCore.CONFIG.client.useVanilla) return
537545

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package generations.gg.generations.core.generationscore.common.client.render
2+
3+
import com.mojang.blaze3d.platform.GlStateManager
4+
import com.mojang.blaze3d.systems.RenderSystem
5+
6+
object RenderStateRecord {
7+
var blendEnabled: Boolean = false
8+
var srcRgb: Int = 0
9+
var dstRgb: Int = 0
10+
var srcAlpha: Int = 0
11+
var dstAlpha: Int = 0
12+
13+
var depthTestEnabled: Boolean = false
14+
var depthMask: Boolean = false
15+
var depthFunc: Int = 0
16+
17+
var cullEnabled: Boolean = false
18+
19+
fun push() {
20+
// Blend
21+
blendEnabled = GlStateManager.BLEND.mode.enabled
22+
srcRgb = GlStateManager.BLEND.srcRgb
23+
dstRgb = GlStateManager.BLEND.dstRgb
24+
srcAlpha = GlStateManager.BLEND.srcAlpha
25+
dstAlpha = GlStateManager.BLEND.dstAlpha
26+
27+
// Depth
28+
depthTestEnabled = GlStateManager.DEPTH.mode.enabled
29+
depthMask = GlStateManager.DEPTH.mask
30+
depthFunc = GlStateManager.DEPTH.func
31+
32+
// Cull
33+
cullEnabled = GlStateManager.CULL.enable.enabled
34+
}
35+
36+
fun pop() {
37+
// Blend
38+
if (blendEnabled) RenderSystem.enableBlend() else RenderSystem.disableBlend()
39+
RenderSystem.blendFuncSeparate(srcRgb, dstRgb, srcAlpha, dstAlpha)
40+
41+
// Depth
42+
if (depthTestEnabled) RenderSystem.enableDepthTest() else RenderSystem.disableDepthTest()
43+
RenderSystem.depthMask(depthMask)
44+
RenderSystem.depthFunc(depthFunc)
45+
46+
// Cull
47+
if (cullEnabled) RenderSystem.enableCull() else RenderSystem.disableCull()
48+
}
49+
}

common/src/main/java/generations/gg/generations/core/generationscore/common/client/render/rarecandy/Pipelines.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,11 @@ object Pipelines {
124124
ctx.uniform().upload2i(light and 0xFFFF, light shr 16 and 0xFFFF)
125125
}
126126

127-
.supplyVec3("tint") { /*it.instance.instanceOrNull<CobblemonInstance>()?.tint?.takeIf { it != ZERO } ?:*/ ONE }
127+
.supplyVec3("tint") { it.instance.instanceOrNull<CobblemonInstance>()?.tint?.takeIf { it != ZERO } ?: ONE }
128128

129129
.supplyInt("frame") { pingpong(MinecraftClientGameProvider.getTimePassed()).toInt() }
130130

131-
.supplyVec3("baseColor1") { ctx -> ctx.takeIf { !it.isStatueMaterial }?.material?.values()?.baseColor1 ?: ONE }
131+
.supplyVec3("baseColor1") { ctx -> ctx.instance.instanceOrNull<TintProvider>()?.tint ?: ctx.takeIf { !it.isStatueMaterial }?.material?.values()?.baseColor1 ?: ONE }
132132
.supplyVec3("baseColor2") { ctx -> ctx.takeIf { !it.isStatueMaterial }?.material?.values()?.baseColor2 ?: ONE }
133133
.supplyVec3("baseColor3") { ctx -> ctx.takeIf { !it.isStatueMaterial }?.material?.values()?.baseColor3 ?: ONE }
134134
.supplyVec3("baseColor4") { ctx -> ctx.takeIf { !it.isStatueMaterial }?.material?.values()?.baseColor4 ?: ONE }
@@ -137,7 +137,7 @@ object Pipelines {
137137
.supplyVec3("emiColor2") { it.takeIf { !it.isStatueMaterial }?.material?.values()?.emiColor2 ?: ONE }
138138
.supplyVec3("emiColor3") { it.takeIf { !it.isStatueMaterial }?.material?.values()?.emiColor3 ?: ONE }
139139
.supplyVec3("emiColor4") { it.takeIf { !it.isStatueMaterial }?.material?.values()?.emiColor4 ?: ONE }
140-
.supplyVec3("emiColor5") { it.instance.instanceOrNull<TintProvider>()?.tint ?: it.material.values().emiColor5 }
140+
.supplyVec3("emiColor5") { it.takeIf { !it.isStatueMaterial }?.material?.values()?.emiColor5 ?: ONE }
141141
.supplyFloatUniform("emiIntensity1") { it.takeIf { !it.isStatueMaterial }?.material?.values()?.emiIntensity1 ?: 0.0f }
142142
.supplyFloatUniform("emiIntensity2") { it.takeIf { !it.isStatueMaterial }?.material?.values()?.emiIntensity2 ?: 0.0f }
143143
.supplyFloatUniform("emiIntensity3") { it.takeIf { !it.isStatueMaterial }?.material?.values()?.emiIntensity3 ?: 0.0f }

common/src/main/java/generations/gg/generations/core/generationscore/common/mixin/client/LevelRendererMixin.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@
1818

1919
package generations.gg.generations.core.generationscore.common.mixin.client;
2020

21+
import com.mojang.blaze3d.systems.RenderSystem;
2122
import com.mojang.blaze3d.vertex.PoseStack;
23+
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient;
24+
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClientKt;
25+
import generations.gg.generations.core.generationscore.common.client.render.RenderStateRecord;
26+
import gg.generations.rarecandy.renderer.rendering.RenderStage;
2227
import net.minecraft.client.Camera;
2328
import net.minecraft.client.DeltaTracker;
2429
import net.minecraft.client.multiplayer.ClientLevel;
@@ -38,10 +43,13 @@
3843
@Mixin(LevelRenderer.class)
3944
public abstract class LevelRendererMixin {
4045

41-
@Shadow @Nullable
46+
@Shadow
47+
@Nullable
4248
private ClientLevel level;
4349

44-
@Shadow @Final private static Logger LOGGER;
50+
@Shadow
51+
@Final
52+
private static Logger LOGGER;
4553

4654
@Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/debug/DebugRenderer;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;DDD)V"))
4755
private void pokecraft$rksRender(DeltaTracker deltaTracker, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f frustumMatrix, Matrix4f projectionMatrix, CallbackInfo ci) {

fabric/src/main/java/generations/gg/generations/core/generationscore/fabric/client/GenerationsCoreClientFabric.kt

Lines changed: 15 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ import generations.gg.generations.core.generationscore.common.client.Generations
1313
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.registerLayerDefinitions
1414
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderHighlightedPath
1515
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderRareCandy
16+
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderRareCandySolid
17+
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderRareCandyTransparent
1618
import generations.gg.generations.core.generationscore.common.client.MatrixCache
19+
import generations.gg.generations.core.generationscore.common.client.render.RenderStateRecord
1720
import generations.gg.generations.core.generationscore.common.world.level.block.GenerationsBlocks
1821
import generations.gg.generations.core.generationscore.common.world.level.block.GenerationsMushroomBlock
1922
import generations.gg.generations.core.generationscore.common.world.level.block.GenerationsWood
@@ -63,33 +66,28 @@ class GenerationsCoreClientFabric : ClientModInitializer {
6366
renderHighlightedPath(
6467
context.matrixStack()!!, Minecraft.getInstance().levelRenderer.ticks, context.camera()
6568
)
69+
70+
RenderStateRecord.push()
71+
RenderSystem.enableDepthTest()
72+
RenderSystem.defaultBlendFunc()
73+
RenderSystem.enableBlend()
74+
renderRareCandyTransparent(true)
75+
RenderStateRecord.pop()
6676
})
6777

68-
WorldRenderEvents.BEFORE_ENTITIES.register {
69-
MatrixCache.projectionMatrix = RenderSystem.getProjectionMatrix()
70-
}
78+
WorldRenderEvents.BEFORE_DEBUG_RENDER.register {
7179

72-
WorldRenderEvents.AFTER_ENTITIES.register {
80+
MatrixCache.projectionMatrix = RenderSystem.getProjectionMatrix()
7381
MatrixCache.viewMatrix = RenderSystem.getModelViewMatrix()
74-
}
7582

76-
WorldRenderEvents.BEFORE_DEBUG_RENDER.register {
7783
RenderStateRecord.push()
7884

79-
renderRareCandy(RenderStage.SOLID, false)
80-
renderRareCandy(RenderStage.TRANSPARENT, false)
85+
renderRareCandySolid()
86+
renderRareCandyTransparent()
8187

8288
RenderStateRecord.pop()
8389
}
8490

85-
WorldRenderEvents.AFTER_TRANSLUCENT.register {
86-
RenderStateRecord.push()
87-
88-
renderRareCandy(RenderStage.TRANSPARENT, true)
89-
RenderStateRecord.pop()
90-
91-
}
92-
9391
GenerationsFabricNetwork.registerClientHandlers()
9492

9593
onInitialize(Minecraft.getInstance())
@@ -125,49 +123,6 @@ class GenerationsCoreClientFabric : ClientModInitializer {
125123
renderLayerMap.putBlock(GenerationsBlocks.POINTED_CHARGE_DRIPSTONE.get(), RenderType.cutout())
126124
}
127125
}
126+
}
128127

129-
private object RenderStateRecord {
130-
var blendEnabled: Boolean = false
131-
var srcRgb: Int = 0
132-
var dstRgb: Int = 0
133-
var srcAlpha: Int = 0
134-
var dstAlpha: Int = 0
135-
136-
var depthTestEnabled: Boolean = false
137-
var depthMask: Boolean = false
138-
var depthFunc: Int = 0
139-
140-
var cullEnabled: Boolean = false
141-
142-
fun push() {
143-
// Blend
144-
blendEnabled = GlStateManager.BLEND.mode.enabled
145-
srcRgb = GlStateManager.BLEND.srcRgb
146-
dstRgb = GlStateManager.BLEND.dstRgb
147-
srcAlpha = GlStateManager.BLEND.srcAlpha
148-
dstAlpha = GlStateManager.BLEND.dstAlpha
149-
150-
// Depth
151-
depthTestEnabled = GlStateManager.DEPTH.mode.enabled
152-
depthMask = GlStateManager.DEPTH.mask
153-
depthFunc = GlStateManager.DEPTH.func
154-
155-
// Cull
156-
cullEnabled = GlStateManager.CULL.enable.enabled
157-
}
158-
159-
fun pop() {
160-
// Blend
161-
if (blendEnabled) RenderSystem.enableBlend() else RenderSystem.disableBlend()
162-
RenderSystem.blendFuncSeparate(srcRgb, dstRgb, srcAlpha, dstAlpha)
163-
164-
// Depth
165-
if (depthTestEnabled) RenderSystem.enableDepthTest() else RenderSystem.disableDepthTest()
166-
RenderSystem.depthMask(depthMask)
167-
RenderSystem.depthFunc(depthFunc)
168128

169-
// Cull
170-
if (cullEnabled) RenderSystem.enableCull() else RenderSystem.disableCull()
171-
}
172-
}
173-
}

neoforge/src/main/java/generations/gg/generations/core/generationscore/forge/client/GenerationsCoreClientForge.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import generations.gg.generations.core.generationscore.common.client.Generations
1111
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.registerLayerDefinitions
1212
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderHighlightedPath
1313
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderRareCandy
14+
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderRareCandySolid
15+
import generations.gg.generations.core.generationscore.common.client.GenerationsCoreClient.renderRareCandyTransparent
16+
import generations.gg.generations.core.generationscore.common.client.render.RenderStateRecord
17+
import generations.gg.generations.core.generationscore.common.mixin.client.LevelRendererMixin
1418
import net.minecraft.client.DeltaTracker
1519
import net.minecraft.client.Minecraft
1620
import net.minecraft.client.gui.GuiGraphics
@@ -83,8 +87,14 @@ class GenerationsCoreClientForge(eventBus: IEventBus) {
8387
private fun renderHighlightedPath(event: RenderLevelStageEvent) {
8488
if (event.stage === RenderLevelStageEvent.Stage.AFTER_PARTICLES) {
8589
renderHighlightedPath(event.poseStack, event.renderTick, event.camera)
90+
renderRareCandyTransparent(true)
8691
} else if (event.stage === RenderLevelStageEvent.Stage.AFTER_BLOCK_ENTITIES) {
87-
renderRareCandy(Minecraft.getInstance().level!!)
92+
RenderStateRecord.push()
93+
94+
renderRareCandySolid()
95+
renderRareCandyTransparent()
96+
97+
RenderStateRecord.pop()
8898
}
8999
}
90100

0 commit comments

Comments
 (0)