Skip to content

Commit

Permalink
GH-33: SlideRenderType is now a CompositeRenderType
Browse files Browse the repository at this point in the history
  • Loading branch information
3TUSK committed Jun 19, 2023
1 parent a235735 commit 4771a7a
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 20 deletions.
10 changes: 8 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ java.toolchain.languageVersion = JavaLanguageVersion.of(17)
teacon {
modId = 'slide_show'
modVersion = '0.8.0'
modLicense = 'BSD-3-Clause'
modLicense = 'LGPL-3.0-only'
modGitHubRepo = 'teaconmc/SlideShow'
modAuthors = ['BloCamLimb', '3TUSK', 'ustc-zzzz']
modDescription = 'Minecraft mod, adding a projector that can display online images.'
Expand All @@ -24,7 +24,7 @@ teacon {
// uncomment these lines if you need
modName = 'Slide Show' // default to repo name
// modGitHubBranch = 1.18-forge // for referring the license
// modifyMemberAccess = true // for access transformer
modifyMemberAccess = true // for access transformer
// useDataGeneration = true // for data generation
publishTask = shadowJar // for shadow jar or other usages
lazyTokens = ['minecraft_classpath': { (project.configurations.shadow - project.configurations.minecraft).asPath }] // for runtime tokens
Expand All @@ -39,13 +39,19 @@ configurations {

repositories {
maven { url 'https://jitpack.io' }
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}

dependencies {
shadow 'org.teacon:urlpattern:1.0.1'
shadow 'net.objecthunter:exp4j:0.4.8'
shadow 'com.machinezoo.noexception:noexception:1.7.1'
shadow 'org.apache.httpcomponents:httpclient-cache:4.5.13'

runtimeOnly fg.deobf("maven.modrinth:oculus:HxUtDCCe") // 1.20-1.6.4
}

shadowJar {
Expand Down
6 changes: 6 additions & 0 deletions gradle/teacon-forge.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ gradle.afterProject { Project current ->
// noinspection GroovyAssignabilityCheck
create(modId) { it.source sourceSets.main }
}
property 'mixin.env.remapRefMap', 'true'
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
// noinspection GroovyAssignabilityCheck
runtimeLazyTokens.each { k, v -> lazyToken(k, v) }
}
Expand All @@ -101,6 +103,8 @@ gradle.afterProject { Project current ->
// noinspection GroovyAssignabilityCheck
create(modId) { it.source sourceSets.main }
}
property 'mixin.env.remapRefMap', 'true'
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
// noinspection GroovyAssignabilityCheck
runtimeLazyTokens.each { k, v -> lazyToken(k, v) }
}
Expand All @@ -114,6 +118,8 @@ gradle.afterProject { Project current ->
// noinspection GroovyAssignabilityCheck
create(modId) { it.source sourceSets.main }
}
property 'mixin.env.remapRefMap', 'true'
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
// noinspection GroovyAssignabilityCheck
runtimeLazyTokens.each { k, v -> lazyToken(k, v) }
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/teacon/slides/ModRegistries.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
@FieldsAreNonnullByDefault
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, modid = SlideShow.ID)
public final class ModRegistries {
/**
* The networking channel version. Since we follow SemVer, this is
Expand Down
90 changes: 73 additions & 17 deletions src/main/java/org/teacon/slides/renderer/SlideRenderType.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
/**
* @author BloCamLimb
*/
public final class SlideRenderType extends RenderType {
public final class SlideRenderType extends RenderType.CompositeRenderType {

private static ShaderInstance sPaletteSlideShader;
private static final ShaderStateShard
Expand Down Expand Up @@ -52,32 +52,88 @@ public final class SlideRenderType extends RenderType {
public SlideRenderType(int texture) {
super(SlideShow.ID, DefaultVertexFormat.BLOCK,
VertexFormat.Mode.QUADS, 256, false, true,
() -> {
GENERAL_STATES.forEach(RenderStateShard::setupRenderState);
RenderSystem.setShaderTexture(0, texture);
},
() -> GENERAL_STATES.forEach(RenderStateShard::clearRenderState));
CompositeState.builder()
.setShaderState(RENDERTYPE_TEXT_SEE_THROUGH_SHADER)
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
.setDepthTestState(LEQUAL_DEPTH_TEST)
.setCullState(CULL)
.setLightmapState(LIGHTMAP)
.setOverlayState(NO_OVERLAY)
.setLayeringState(NO_LAYERING)
.setOutputState(MAIN_TARGET)
.setTexturingState(DEFAULT_TEXTURING)
.setWriteMaskState(COLOR_DEPTH_WRITE)
.setLineState(DEFAULT_LINE)
.createCompositeState(true)
);
var baseSetup = this.setupState;
this.setupState = () -> {
baseSetup.run();
RenderSystem.setShaderTexture(0, texture);
};
// () -> {
// GENERAL_STATES.forEach(RenderStateShard::setupRenderState);
// RenderSystem.setShaderTexture(0, texture);
// },
// () -> GENERAL_STATES.forEach(RenderStateShard::clearRenderState));
}

public SlideRenderType(int imageTexture, int paletteTexture) {
super(SlideShow.ID + "_palette", DefaultVertexFormat.BLOCK,
VertexFormat.Mode.QUADS, 256, false, true,
() -> {
PALETTE_STATES.forEach(RenderStateShard::setupRenderState);
RenderSystem.setShaderTexture(0, imageTexture);
RenderSystem.setShaderTexture(3, paletteTexture);
},
() -> GENERAL_STATES.forEach(RenderStateShard::clearRenderState));
CompositeState.builder()
.setShaderState(RENDERTYPE_PALETTE_SLIDE)
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
.setDepthTestState(LEQUAL_DEPTH_TEST)
.setCullState(CULL)
.setLightmapState(LIGHTMAP)
.setOverlayState(NO_OVERLAY)
.setLayeringState(NO_LAYERING)
.setOutputState(MAIN_TARGET)
.setTexturingState(DEFAULT_TEXTURING)
.setWriteMaskState(COLOR_DEPTH_WRITE)
.setLineState(DEFAULT_LINE)
.createCompositeState(true));
var baseSetup = this.setupState;
this.setupState = () -> {
baseSetup.run();
RenderSystem.setShaderTexture(0, imageTexture);
RenderSystem.setShaderTexture(3, paletteTexture);
};
// () -> {
// PALETTE_STATES.forEach(RenderStateShard::setupRenderState);
// RenderSystem.setShaderTexture(0, imageTexture);
// RenderSystem.setShaderTexture(3, paletteTexture);
// },
// () -> GENERAL_STATES.forEach(RenderStateShard::clearRenderState));
}

public SlideRenderType(ResourceLocation texture) {
super(SlideShow.ID + "_icon", DefaultVertexFormat.BLOCK,
VertexFormat.Mode.QUADS, 256, false, true,
() -> {
GENERAL_STATES.forEach(RenderStateShard::setupRenderState);
RenderSystem.setShaderTexture(0, texture);
},
() -> GENERAL_STATES.forEach(RenderStateShard::clearRenderState));
CompositeState.builder()
.setShaderState(RENDERTYPE_TEXT_SEE_THROUGH_SHADER)
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
.setDepthTestState(LEQUAL_DEPTH_TEST)
.setCullState(CULL)
.setLightmapState(LIGHTMAP)
.setOverlayState(NO_OVERLAY)
.setLayeringState(NO_LAYERING)
.setOutputState(MAIN_TARGET)
.setTexturingState(DEFAULT_TEXTURING)
.setWriteMaskState(COLOR_DEPTH_WRITE)
.setLineState(DEFAULT_LINE)
.createCompositeState(true));
var baseSetup = this.setupState;
this.setupState = () -> {
baseSetup.run();
RenderSystem.setShaderTexture(0, texture);
};
// () -> {
// GENERAL_STATES.forEach(RenderStateShard::setupRenderState);
// RenderSystem.setShaderTexture(0, texture);
// },
// () -> GENERAL_STATES.forEach(RenderStateShard::clearRenderState));
}

@Override
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/META-INF/accesstransformer.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
public-f net.minecraft.client.renderer.RenderType$CompositeRenderType

protected net.minecraft.client.renderer.RenderType$CompositeRenderType <init>(Ljava/lang/String;Lcom/mojang/blaze3d/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/VertexFormat$Mode;IZZLnet/minecraft/client/renderer/RenderType$CompositeState;)V

0 comments on commit 4771a7a

Please sign in to comment.