Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 47 additions & 2 deletions api/ctjs.api
Original file line number Diff line number Diff line change
Expand Up @@ -1604,6 +1604,21 @@ public final class com/chattriggers/ctjs/api/render/Image$Companion {
public static synthetic fun fromUrl$default (Lcom/chattriggers/ctjs/api/render/Image$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Image;
}

public final class com/chattriggers/ctjs/api/render/LegacyPipelineBuilder {
public static final field INSTANCE Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;)Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public static synthetic fun begin$default (Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun build ()Lcom/mojang/blaze3d/pipeline/RenderPipeline;
public final fun disableBlend ()Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun disableCull ()Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun disableDepth ()Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun enableCull ()Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun enableDepth ()Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun enabledBlend ()Lcom/chattriggers/ctjs/api/render/LegacyPipelineBuilder;
public final fun layer ()Lnet/minecraft/client/render/RenderLayer;
public final fun state ()Ljava/lang/String;
}

public final class com/chattriggers/ctjs/api/render/Rectangle {
public fun <init> (JFFFF)V
public final fun draw ()Lcom/chattriggers/ctjs/api/render/Rectangle;
Expand Down Expand Up @@ -1660,7 +1675,8 @@ public final class com/chattriggers/ctjs/api/render/Renderer {
public static final fun begin ()Lcom/chattriggers/ctjs/api/render/Renderer;
public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;)Lcom/chattriggers/ctjs/api/render/Renderer;
public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;)Lcom/chattriggers/ctjs/api/render/Renderer;
public static synthetic fun begin$default (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;)Lcom/chattriggers/ctjs/api/render/Renderer;
public static synthetic fun begin$default (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
public static final fun bindTexture (Lcom/chattriggers/ctjs/api/render/Image;)Lcom/chattriggers/ctjs/api/render/Renderer;
public static final fun bindTexture (Lcom/chattriggers/ctjs/api/render/Image;I)Lcom/chattriggers/ctjs/api/render/Renderer;
public static synthetic fun bindTexture$default (Lcom/chattriggers/ctjs/api/render/Image;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
Expand Down Expand Up @@ -1765,6 +1781,34 @@ public final class com/chattriggers/ctjs/api/render/Renderer$DrawMode$Companion
public final fun fromUC (Lgg/essential/universal/UGraphics$DrawMode;)Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
}

public final class com/chattriggers/ctjs/api/render/Renderer$RenderSnippet : java/lang/Enum {
public static final field ENTITY_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field FOG_NO_COLOR_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field FOG_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field GUI_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field MATRICES_COLOR_FOG_LIGHT_DIR_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field MATRICES_COLOR_FOG_OFFSET_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field MATRICES_COLOR_FOG_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field MATRICES_COLOR_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field MATRICES_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field PARTICLE_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field POSITION_COLOR_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field POSITION_TEX_COLOR_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field POST_EFFECT_PROCESSOR_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field RENDERTYPE_BEACON_BEAM_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field RENDERTYPE_CLOUDS_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field RENDERTYPE_END_PORTAL_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field RENDERTYPE_LINES_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field RENDERTYPE_OUTLINE_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field TERRAIN_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field TEXT_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static final field WEATHER_SNIPPET Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public final fun getMcSnippet ()Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
public static fun values ()[Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;
}

public final class com/chattriggers/ctjs/api/render/Renderer$ScreenWrapper {
public fun <init> ()V
public final fun getHeight ()I
Expand Down Expand Up @@ -1799,7 +1843,8 @@ public final class com/chattriggers/ctjs/api/render/Renderer3d {
public static final fun begin ()Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static synthetic fun begin$default (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static synthetic fun begin$default (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;Lcom/chattriggers/ctjs/api/render/Renderer$RenderSnippet;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static final fun color (FFF)Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static final fun color (FFFF)Lcom/chattriggers/ctjs/api/render/Renderer3d;
public static final fun color (III)Lcom/chattriggers/ctjs/api/render/Renderer3d;
Expand Down
10 changes: 5 additions & 5 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ textarea = "3.2.0"
serialization = "1.5.1"
koffee = "315bc11234"

universalcraft = "398"
elementa = "657"
vigilance = "299"
universalcraft = "412"
elementa = "708"
vigilance = "306"

modmenu = "14.0.0-rc.2"
devauth = "1.2.1"
Expand Down Expand Up @@ -44,8 +44,8 @@ serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", v
koffee = { module = "com.github.ChatTriggers:koffee", version.ref = "koffee" }

universalcraft = { module = "gg.essential:universalcraft-1.21.5-fabric", version.ref = "universalcraft" }
elementa = { module = "gg.essential:elementa-1.18.1-fabric", version.ref = "elementa" }
vigilance = { module = "gg.essential:vigilance-1.18.1-fabric", version.ref = "vigilance" }
elementa = { module = "gg.essential:elementa", version.ref = "elementa" }
vigilance = { module = "gg.essential:vigilance", version.ref = "vigilance" }

modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" }
devauth = { module = "me.djtheredstoner:DevAuth-fabric", version.ref = "devauth" }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package com.chattriggers.ctjs.api.render

import com.mojang.blaze3d.pipeline.BlendFunction
import com.mojang.blaze3d.pipeline.RenderPipeline
import com.mojang.blaze3d.platform.DepthTestFunction
import com.mojang.blaze3d.platform.DestFactor
import com.mojang.blaze3d.platform.SourceFactor
import net.minecraft.client.render.RenderLayer

object LegacyPipelineBuilder {
private val layerList = mutableMapOf<String, RenderLayer>()
private val pipelineList = mutableMapOf<String, RenderPipeline>()
private var cull: Boolean? = null
private var depth: Boolean? = null
private var blend: Boolean? = null
private var drawMode = Renderer.DrawMode.QUADS
private var vertexFormat = Renderer.VertexFormat.POSITION_COLOR
private var snippet = Renderer.RenderSnippet.POSITION_COLOR_SNIPPET

fun begin(
drawMode: Renderer.DrawMode = Renderer.DrawMode.QUADS,
vertexFormat: Renderer.VertexFormat = Renderer.VertexFormat.POSITION_COLOR,
snippet: Renderer.RenderSnippet = Renderer.RenderSnippet.POSITION_COLOR_SNIPPET
) = apply {
this.drawMode = drawMode
this.vertexFormat = vertexFormat
this.snippet = snippet
}

fun enabledBlend() = apply {
blend = true
}

fun disableBlend() = apply {
blend = false
}

fun enableCull() = apply {
cull = true
}

fun disableCull() = apply {
cull = false
}

fun enableDepth() = apply {
depth = true
}

fun disableDepth() = apply {
depth = false
}

fun build(): RenderPipeline {
if (pipelineList.containsKey(state())) return pipelineList[state()]!!

val basePipeline = RenderPipeline.builder(snippet.mcSnippet)
.withLocation("ctjs/custom/pipeline${hashCode()}")
.withVertexFormat(vertexFormat.toMC(), drawMode.toUC().mcMode)
if (blend == true) basePipeline.withBlend(BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ZERO))

if (cull != null) basePipeline.withCull(cull!!)

if (depth == true) {
basePipeline
.withDepthWrite(depth!!)
.withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST)
}
else if (depth == false) {
basePipeline
.withDepthWrite(depth!!)
.withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST)
}

val pipeline = basePipeline.build()
pipelineList[state()] = pipeline

return pipeline
}

fun layer(): RenderLayer {
if (layerList.containsKey(state())) return layerList[state()]!!

val layer = RenderLayer.of(
"ctjs/custom/layer${hashCode()}",
1536,
build(),
RenderLayer.MultiPhaseParameters
.builder()
.build(false)
)
layerList[state()] = layer

return layer
}

fun state(): String {
return "LegacyPipelineBuilder[" +
"cull=$cull, " +
"depth=$depth, " +
"blend=$blend, " +
"drawMode=${drawMode.name}, " +
"vertexFormat=${vertexFormat.name}, " +
"snippet=${snippet.name}" +
"]"
}
}
56 changes: 37 additions & 19 deletions src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package com.chattriggers.ctjs.api.render

import com.chattriggers.ctjs.MCVertexFormat
import com.chattriggers.ctjs.api.client.Client
import com.chattriggers.ctjs.api.client.Player
import com.chattriggers.ctjs.api.entity.PlayerMP
import com.chattriggers.ctjs.api.message.ChatLib
import com.chattriggers.ctjs.api.vec.Vec3f
import com.chattriggers.ctjs.internal.mixins.EntityRenderDispatcherAccessor
import com.chattriggers.ctjs.MCVertexFormat
import com.chattriggers.ctjs.engine.LogType
import com.chattriggers.ctjs.engine.printToConsole
import com.chattriggers.ctjs.internal.mixins.EntityRenderDispatcherAccessor
import com.chattriggers.ctjs.internal.utils.asMixin
import com.chattriggers.ctjs.internal.utils.getOrDefault
import com.chattriggers.ctjs.internal.utils.toRadians
import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet
import com.mojang.blaze3d.systems.RenderSystem
import gg.essential.elementa.dsl.component1
import gg.essential.elementa.dsl.component2
Expand All @@ -22,27 +23,19 @@ import gg.essential.universal.UMatrixStack
import gg.essential.universal.UMinecraft
import net.minecraft.client.MinecraftClient
import net.minecraft.client.font.TextRenderer
import net.minecraft.client.gl.RenderPipelines
import net.minecraft.client.network.AbstractClientPlayerEntity
import net.minecraft.client.render.DiffuseLighting
import net.minecraft.client.render.Tessellator
import net.minecraft.client.render.VertexConsumerProvider
import net.minecraft.client.render.VertexFormats
import net.minecraft.client.render.entity.EntityRendererFactory
import net.minecraft.client.render.entity.PlayerEntityRenderer
import net.minecraft.client.render.entity.state.LivingEntityRenderState
import net.minecraft.client.render.entity.state.PlayerEntityRenderState
import net.minecraft.client.util.math.MatrixStack
import org.joml.Matrix4f
import org.joml.Quaternionf
import org.mozilla.javascript.NativeObject
import java.awt.Color
import java.util.*
import kotlin.collections.ArrayDeque
import kotlin.math.PI
import kotlin.math.atan
import kotlin.math.atan2
import kotlin.math.cos
import kotlin.math.sin
import kotlin.math.*

object Renderer {
private val NEWLINE_REGEX = """\n|\r\n?""".toRegex()
Expand Down Expand Up @@ -180,10 +173,10 @@ object Renderer {
}

@JvmStatic
fun disableCull() = apply { }
fun disableCull() = apply { LegacyPipelineBuilder.disableCull() }

@JvmStatic
fun enableCull() = apply { }
fun enableCull() = apply { LegacyPipelineBuilder.enableCull() }

@JvmStatic
fun disableLighting() = apply { UGraphics.disableLighting() }
Expand All @@ -192,10 +185,10 @@ object Renderer {
fun enableLighting() = apply { UGraphics.enableLighting() }

@JvmStatic
fun disableDepth() = apply { UGraphics.disableDepth() }
fun disableDepth() = apply { LegacyPipelineBuilder.disableDepth() }

@JvmStatic
fun enableDepth() = apply { UGraphics.enableDepth() }
fun enableDepth() = apply { LegacyPipelineBuilder.enableDepth() }

@JvmStatic
fun depthFunc(func: Int) = apply { UGraphics.depthFunc(func) }
Expand All @@ -204,10 +197,10 @@ object Renderer {
fun depthMask(flag: Boolean) = apply { UGraphics.depthMask(flag) }

@JvmStatic
fun disableBlend() = apply { UGraphics.disableBlend() }
fun disableBlend() = apply { LegacyPipelineBuilder.disableBlend() }

@JvmStatic
fun enableBlend() = apply { UGraphics.enableBlend() }
fun enableBlend() = apply { LegacyPipelineBuilder.enabledBlend() }

@JvmStatic
fun blendFunc(func: Int) = apply { UGraphics.blendEquation(func) }
Expand Down Expand Up @@ -317,8 +310,9 @@ object Renderer {
fun begin(
drawMode: DrawMode = Renderer.DrawMode.QUADS,
vertexFormat: VertexFormat = Renderer.VertexFormat.POSITION,
snippet: Renderer.RenderSnippet = Renderer.RenderSnippet.POSITION_COLOR_SNIPPET
) = apply {
Renderer3d.begin(drawMode, vertexFormat)
Renderer3d.begin(drawMode, vertexFormat, snippet)
}

/**
Expand Down Expand Up @@ -802,6 +796,30 @@ object Renderer {
}
}

enum class RenderSnippet(val mcSnippet: Snippet) {
MATRICES_SNIPPET(RenderPipelines.MATRICES_SNIPPET),
FOG_NO_COLOR_SNIPPET(RenderPipelines.FOG_NO_COLOR_SNIPPET),
FOG_SNIPPET(RenderPipelines.FOG_SNIPPET),
MATRICES_COLOR_SNIPPET(RenderPipelines.MATRICES_COLOR_SNIPPET),
MATRICES_COLOR_FOG_SNIPPET(RenderPipelines.MATRICES_COLOR_FOG_SNIPPET),
MATRICES_COLOR_FOG_OFFSET_SNIPPET(RenderPipelines.MATRICES_COLOR_FOG_OFFSET_SNIPPET),
MATRICES_COLOR_FOG_LIGHT_DIR_SNIPPET(RenderPipelines.MATRICES_COLOR_FOG_LIGHT_DIR_SNIPPET),
TERRAIN_SNIPPET(RenderPipelines.TERRAIN_SNIPPET),
ENTITY_SNIPPET(RenderPipelines.ENTITY_SNIPPET),
RENDERTYPE_BEACON_BEAM_SNIPPET(RenderPipelines.RENDERTYPE_BEACON_BEAM_SNIPPET),
TEXT_SNIPPET(RenderPipelines.TEXT_SNIPPET),
RENDERTYPE_END_PORTAL_SNIPPET(RenderPipelines.RENDERTYPE_END_PORTAL_SNIPPET),
RENDERTYPE_CLOUDS_SNIPPET(RenderPipelines.RENDERTYPE_CLOUDS_SNIPPET),
RENDERTYPE_LINES_SNIPPET(RenderPipelines.RENDERTYPE_LINES_SNIPPET),
POSITION_COLOR_SNIPPET(RenderPipelines.POSITION_COLOR_SNIPPET),
PARTICLE_SNIPPET(RenderPipelines.PARTICLE_SNIPPET),
WEATHER_SNIPPET(RenderPipelines.WEATHER_SNIPPET),
GUI_SNIPPET(RenderPipelines.GUI_SNIPPET),
POSITION_TEX_COLOR_SNIPPET(RenderPipelines.POSITION_TEX_COLOR_SNIPPET),
RENDERTYPE_OUTLINE_SNIPPET(RenderPipelines.RENDERTYPE_OUTLINE_SNIPPET),
POST_EFFECT_PROCESSOR_SNIPPET(RenderPipelines.POST_EFFECT_PROCESSOR_SNIPPET),
}

class ScreenWrapper {
fun getWidth(): Int = UMinecraft.getMinecraft().window.scaledWidth

Expand Down
Loading