Skip to content

Commit 793dad3

Browse files
committed
Provisional redesing for RenderStateRecord.
1 parent 7dd08da commit 793dad3

File tree

6 files changed

+104
-32
lines changed

6 files changed

+104
-32
lines changed

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

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package generations.gg.generations.core.generationscore.common.client.render
22

33
import com.mojang.blaze3d.platform.GlStateManager
44
import com.mojang.blaze3d.systems.RenderSystem
5+
import generations.gg.generations.core.generationscore.common.client.render.rarecandy.read
56

67
object RenderStateRecord {
8+
private var readOnly = false
9+
710
var blendEnabled: Boolean = false
811
var srcRgb: Int = 0
912
var dstRgb: Int = 0
@@ -16,24 +19,29 @@ object RenderStateRecord {
1619

1720
var cullEnabled: Boolean = false
1821

22+
fun isActive() = readOnly
23+
1924
fun push() {
25+
readOnly = true;
2026
// 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
27+
// blendEnabled = GlStateManager.BLEND.mode.enabled
28+
// srcRgb = GlStateManager.BLEND.srcRgb
29+
// dstRgb = GlStateManager.BLEND.dstRgb
30+
// srcAlpha = GlStateManager.BLEND.srcAlpha
31+
// dstAlpha = GlStateManager.BLEND.dstAlpha
32+
//
33+
// // Depth
34+
// depthTestEnabled = GlStateManager.DEPTH.mode.enabled
35+
// depthMask = GlStateManager.DEPTH.mask
36+
// depthFunc = GlStateManager.DEPTH.func
37+
//
38+
// // Cull
39+
// cullEnabled = GlStateManager.CULL.enable.enabled
3440
}
3541

3642
fun pop() {
43+
readOnly = false
44+
3745
// Blend
3846
if (blendEnabled) RenderSystem.enableBlend() else RenderSystem.disableBlend()
3947
RenderSystem.blendFuncSeparate(srcRgb, dstRgb, srcAlpha, dstAlpha)
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package generations.gg.generations.core.generationscore.common.mixin.client;
2+
3+
import com.mojang.blaze3d.platform.GlStateManager;
4+
import com.mojang.blaze3d.systems.RenderSystem;
5+
import generations.gg.generations.core.generationscore.common.client.render.RenderStateRecord;
6+
import net.minecraft.client.renderer.RenderStateShard;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.Unique;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
13+
@Mixin(RenderSystem.class)
14+
public class RenderSystemMixin {
15+
@Inject(method = "enableBlend", at = @At("HEAD"))
16+
private static void onEnableBlend(CallbackInfo ci) {
17+
if(!isActive()) RenderStateRecord.INSTANCE.setBlendEnabled(true);
18+
}
19+
20+
@Inject(method = "disableBlend", at = @At("HEAD"))
21+
private static void onDisableBlend(CallbackInfo ci) {
22+
if(!isActive()) RenderStateRecord.INSTANCE.setBlendEnabled(false);
23+
}
24+
25+
@Inject(method = "blendFuncSeparate(Lcom/mojang/blaze3d/platform/GlStateManager$SourceFactor;Lcom/mojang/blaze3d/platform/GlStateManager$DestFactor;Lcom/mojang/blaze3d/platform/GlStateManager$SourceFactor;Lcom/mojang/blaze3d/platform/GlStateManager$DestFactor;)V", at = @At("HEAD"))
26+
private static void onBlendFuncSeparateEnum(GlStateManager.SourceFactor srcFactor, GlStateManager.DestFactor dstFactor, GlStateManager.SourceFactor srcFactor2, GlStateManager.DestFactor destFactor2, CallbackInfo ci) {
27+
if(!isActive()) {
28+
RenderStateRecord.INSTANCE.setSrcRgb(srcFactor.value);
29+
RenderStateRecord.INSTANCE.setDstRgb(dstFactor.value);
30+
RenderStateRecord.INSTANCE.setSrcAlpha(srcFactor2.value);
31+
RenderStateRecord.INSTANCE.setDstAlpha(destFactor2.value);
32+
}
33+
}
34+
35+
@Inject(method = "blendFuncSeparate(IIII)V", at = @At("HEAD"))
36+
private static void onBlendFuncSeparate(int srcFactor, int dstFactor, int srcFactor2, int destFactor2, CallbackInfo ci) {
37+
if(!isActive()) {
38+
RenderStateRecord.INSTANCE.setSrcRgb(srcFactor);
39+
RenderStateRecord.INSTANCE.setDstRgb(dstFactor);
40+
RenderStateRecord.INSTANCE.setSrcAlpha(srcFactor2);
41+
RenderStateRecord.INSTANCE.setDstAlpha(destFactor2);
42+
}
43+
}
44+
45+
@Inject(method = "enableDepthTest", at = @At("HEAD"))
46+
private static void onEnableDepth(CallbackInfo ci) {
47+
if(!isActive()) RenderStateRecord.INSTANCE.setDepthTestEnabled(true);
48+
}
49+
50+
@Inject(method = "disableDepthTest", at = @At("HEAD"))
51+
private static void onDisableDepth(CallbackInfo ci) {
52+
if(!isActive()) RenderStateRecord.INSTANCE.setBlendEnabled(false);
53+
}
54+
55+
@Inject(method = "depthMask", at = @At("HEAD"))
56+
private static void setDepthMask(boolean depthMask, CallbackInfo ci) {
57+
if(!isActive()) RenderStateRecord.INSTANCE.setDepthMask(depthMask);
58+
}
59+
60+
@Inject(method = "depthFunc", at = @At("HEAD"))
61+
private static void setDepthFunc(int depthFunc, CallbackInfo ci) {
62+
if(!isActive()) RenderStateRecord.INSTANCE.setDepthFunc(depthFunc);
63+
}
64+
65+
@Inject(method = "enableCull", at = @At("HEAD"))
66+
private static void onEnableCull(CallbackInfo ci) {
67+
if(!isActive()) RenderStateRecord.INSTANCE.setCullEnabled(true);
68+
}
69+
70+
@Inject(method = "disableCull", at = @At("HEAD"))
71+
private static void onDisableCull(CallbackInfo ci) {
72+
if(!isActive()) RenderStateRecord.INSTANCE.setBlendEnabled(false);
73+
}
74+
75+
@Unique
76+
private static boolean isActive() {
77+
return RenderStateRecord.INSTANCE.isActive();
78+
}
79+
80+
}

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/PokemonInteractBlockItem.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ open class PokemonInteractBlockItem(block: Block, properties: Item.Properties, v
2121
feature.enabled = !feature.enabled
2222
feature.apply(entity)
2323
player.sendSystemMessage("generations_core.ability.formchange".asTranslated(entity.pokemon.getDisplayName().string), true)
24+
25+
return true
2426
}
2527

2628
}

common/src/main/resources/GenerationsCore-common.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"client.PokemonOnShoulderRendererCompanionAccessorMixin",
3636
"client.PokemonOnShoulderRenderMixin",
3737
"client.PosableStateMixin",
38+
"client.RenderSystemMixin",
3839
"client.SummaryMixin"
3940
],
4041
"injectors": {

common/src/main/resources/generationscore.accesswidener

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,6 @@ accessible field net/minecraft/client/renderer/entity/EntityRenderer shadowStren
3939
accessible field net/minecraft/world/level/block/entity/BlockEntityType validBlocks Ljava/util/Set;
4040
mutable field net/minecraft/world/level/block/entity/BlockEntityType validBlocks Ljava/util/Set;
4141

42-
accessible field com/mojang/blaze3d/platform/GlStateManager BLEND Lcom/mojang/blaze3d/platform/GlStateManager$BlendState;
43-
accessible field com/mojang/blaze3d/platform/GlStateManager CULL Lcom/mojang/blaze3d/platform/GlStateManager$CullState;
44-
accessible class com/mojang/blaze3d/platform/GlStateManager$CullState
45-
accessible field com/mojang/blaze3d/platform/GlStateManager DEPTH Lcom/mojang/blaze3d/platform/GlStateManager$DepthState;
46-
accessible class com/mojang/blaze3d/platform/GlStateManager$DepthState
47-
48-
accessible class com/mojang/blaze3d/platform/GlStateManager$BlendState
49-
accessible field com/mojang/blaze3d/platform/GlStateManager$BooleanState enabled Z
50-
5142
extendable class net/minecraft/client/model/geom/ModelPart
5243
accessible field net/minecraft/server/network/ServerCommonPacketListenerImpl connection Lnet/minecraft/network/Connection;
5344

neoforge/src/main/resources/META-INF/accesstransformer.cfg

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,6 @@ public net.minecraft.client.renderer.entity.EntityRenderer shadowStrength # shad
3333

3434
public-f net.minecraft.world.level.block.entity.BlockEntityType validBlocks # validBlocks
3535

36-
public com.mojang.blaze3d.platform.GlStateManager BLEND # BLEND
37-
public com.mojang.blaze3d.platform.GlStateManager CULL # CULL
38-
public com.mojang.blaze3d.platform.GlStateManager$CullState enable # enable
39-
public com.mojang.blaze3d.platform.GlStateManager DEPTH # DEPTH
40-
public com.mojang.blaze3d.platform.GlStateManager$DepthState mask # mask
41-
42-
43-
public com.mojang.blaze3d.platform.GlStateManager$BlendState
44-
public com.mojang.blaze3d.platform.GlStateManager$BooleanState enabled # enabled
45-
4636
public-f net.minecraft.client.model.geom.ModelPart
4737
public net.minecraft.server.network.ServerCommonPacketListenerImpl connection # connection
4838

0 commit comments

Comments
 (0)