diff --git a/api/ctjs.api b/api/ctjs.api index 7f55adc8..6278c7b8 100644 --- a/api/ctjs.api +++ b/api/ctjs.api @@ -3018,7 +3018,6 @@ public final class com/v5/api/V5Auth { public final class com/v5/event/Context { public field camera Lnet/minecraft/client/render/Camera; public field consumers Lnet/minecraft/client/render/VertexConsumerProvider; - public field frustum Lnet/minecraft/client/render/Frustum; public fun ()V public final fun getCamera ()Lnet/minecraft/client/render/Camera; public final fun getConsumers ()Lnet/minecraft/client/render/VertexConsumerProvider; @@ -3120,6 +3119,10 @@ public class com/v5/mixins/BlockModelRendererMixin { public fun ()V } +public abstract class com/v5/mixins/BlockRenderLayersMixin { + public fun ()V +} + public abstract class com/v5/mixins/CameraMixin { public fun ()V protected abstract fun setPos (Lnet/minecraft/util/math/Vec3d;)V @@ -3204,10 +3207,6 @@ public class com/v5/mixins/PlayerListHudMixin { public fun ()V } -public abstract class com/v5/mixins/RenderLayersMixin { - public fun ()V -} - public abstract class com/v5/mixins/ScreenPanoramaMixin { public fun ()V } @@ -3610,8 +3609,8 @@ public final class com/v5/render/objects/RenderLayers { public static final field INSTANCE Lcom/v5/render/objects/RenderLayers; public static final field LINE_LIST Lnet/minecraft/client/render/RenderLayer; public static final field LINE_LIST_ESP Lnet/minecraft/client/render/RenderLayer; - public static final field TRIANGLE_STRIP Lnet/minecraft/client/render/RenderLayer$MultiPhase; - public static final field TRIANGLE_STRIP_ESP Lnet/minecraft/client/render/RenderLayer$MultiPhase; + public static final field TRIANGLE_STRIP Lnet/minecraft/client/render/RenderLayer; + public static final field TRIANGLE_STRIP_ESP Lnet/minecraft/client/render/RenderLayer; } public final class com/v5/render/objects/RenderPipelines { @@ -3751,6 +3750,12 @@ public final class com/v5/swift/integration/HypixelManager { public final fun onDisconnect ()V } +public final class com/v5/swift/integration/WynncraftManager { + public static final field INSTANCE Lcom/v5/swift/integration/WynncraftManager; + public final fun init ()V + public final fun onDisconnect ()V +} + public final class com/v5/swift/io/WorldSerializer { public static final field INSTANCE Lcom/v5/swift/io/WorldSerializer; public final fun load (Ljava/lang/String;)Ljava/util/concurrent/ConcurrentHashMap; diff --git a/build.gradle.kts b/build.gradle.kts index 47f4e475..f07babfe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,6 @@ import org.jetbrains.dokka.versioning.VersioningPlugin import org.jetbrains.kotlin.gradle.dsl.JvmTarget import java.net.HttpURLConnection import java.net.URL -import java.io.ByteArrayOutputStream buildscript { dependencies { @@ -113,6 +112,14 @@ apiValidation { } tasks { + named("check") { + dependsOn("apiDump") + } + + named("apiCheck") { + enabled = false + } + processResources { val flkVersion = libs.versions.fabric.kotlin.get() val yarnVersion = libs.versions.yarn.get() @@ -190,7 +197,7 @@ tasks { sourceLink { localDirectory.set(file("src/main/kotlin")) - remoteUrl.set(URL("https://github.com/ChatTriggers/ctjs/blob/$branch/src/main/kotlin")) + remoteUrl.set(URL("https://github.com/Synnerz/ctjs/blob/$branch/src/main/kotlin")) remoteLineSuffix.set("#L") } @@ -251,10 +258,8 @@ fun downloadFile(url: String): ByteArray { } fun getBranch(): String { - val stdout = ByteArrayOutputStream() - exec { - commandLine("git", "rev-parse", "HEAD") - standardOutput = stdout - } - return stdout.toString().trim() + val process = ProcessBuilder("git", "rev-parse", "HEAD") + .redirectErrorStream(true) + .start() + return process.inputStream.bufferedReader().use { it.readText().trim() } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2d011647..7fa04517 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,12 +1,11 @@ [versions] # Library versions -minecraft = "1.21.10" -yarn = "1.21.10+build.1" +minecraft = "1.21.11" +yarn="1.21.11+build.3" lwjgl = "3.3.3" - -loader = "0.17.2" -fabric-api = "0.134.1+1.21.10" +loader = "0.17.3" +fabric-api = "0.140.0+1.21.11" fabric-kotlin = "1.13.2+kotlin.2.1.20" mapping-io = "0.6.1" @@ -16,7 +15,7 @@ textarea = "3.2.0" serialization = "1.5.1" koffee = "315bc11234" -universalcraft = "436" +universalcraft = "475" elementa = "710" vigilance = "312" @@ -26,7 +25,7 @@ dokka = "1.9.20" # Plugin Versions kotlin = "2.1.20" -loom = "1.12.0-alpha.37" +loom = "1.15.5" validator = "0.17.0" ksp = "2.1.20-1.0.32" @@ -47,7 +46,7 @@ textarea = { module = "com.fifesoft:rsyntaxtextarea", version.ref = "textarea" } serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } koffee = { module = "com.github.ChatTriggers:koffee", version.ref = "koffee" } -universalcraft = { module = "gg.essential:universalcraft-1.21.9-fabric", version.ref = "universalcraft" } +universalcraft = { module = "gg.essential:universalcraft-1.21.11-fabric", version.ref = "universalcraft" } elementa = { module = "gg.essential:elementa", version.ref = "elementa" } vigilance = { module = "gg.essential:vigilance", version.ref = "vigilance" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ca025c83..c61a118f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudMixin.java index 5bb87765..5b1ed59a 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudMixin.java @@ -31,7 +31,7 @@ private void injectClear(boolean clearHistory, CallbackInfo ci) { method = "addMessage(Lnet/minecraft/client/gui/hud/ChatHudLine;)V", at = @At( value = "INVOKE", - target = "Ljava/util/List;remove(I)Ljava/lang/Object;", + target = "Ljava/util/List;removeLast()Ljava/lang/Object;", shift = At.Shift.BEFORE ) ) diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/WorldRendererMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/WorldRendererMixin.java index 4bc7fc44..2e080d1c 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/WorldRendererMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/WorldRendererMixin.java @@ -49,7 +49,7 @@ private void beforeRender(ObjectAllocator allocator, RenderTickCounter tickCount } @Inject(method = "method_62214", at = @At("RETURN")) - private void afterRender(GpuBufferSlice gpuBufferSlice, WorldRenderState worldRenderState, Profiler profiler, Matrix4f matrix4f, Handle handle, Handle handle2, boolean bl, Frustum frustum, Handle handle3, Handle handle4, CallbackInfo ci) { + private void afterRender(GpuBufferSlice gpuBufferSlice, WorldRenderState worldRenderState, Profiler profiler, Matrix4f matrix4f, Handle handle, Handle handle2, boolean bl, Handle handle3, Handle handle4, CallbackInfo ci) { WorldListener.INSTANCE.triggerRenderLast(); } } diff --git a/src/main/java/com/v5/mixins/AbstractBlockStateMixin.java b/src/main/java/com/v5/mixins/AbstractBlockStateMixin.java index 53fad711..da03b42c 100644 --- a/src/main/java/com/v5/mixins/AbstractBlockStateMixin.java +++ b/src/main/java/com/v5/mixins/AbstractBlockStateMixin.java @@ -1,24 +1,22 @@ package com.v5.mixins; import com.v5.qol.Xray; +import net.minecraft.block.AbstractBlock.AbstractBlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import net.minecraft.block.AbstractBlock.AbstractBlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockView; - - @Mixin(AbstractBlockState.class) public class AbstractBlockStateMixin { - @Inject(at = @At("TAIL"), method = { - "getAmbientOcclusionLightLevel(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;)F" }, cancellable = true) - private void onGetAmbientOcclusionLightLevel(BlockView blockView, BlockPos blockPos, CallbackInfoReturnable cir) { - if (Xray.isEnabled) { - cir.setReturnValue(1F); - } - } + @Inject(at = @At("TAIL"), method = { + "getAmbientOcclusionLightLevel(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;)F"}, cancellable = true) + private void onGetAmbientOcclusionLightLevel(BlockView blockView, BlockPos blockPos, CallbackInfoReturnable cir) { + if (Xray.isEnabled) { + cir.setReturnValue(1F); + } + } } diff --git a/src/main/java/com/v5/mixins/AbstractTerrainRenderContextMixin.java b/src/main/java/com/v5/mixins/AbstractTerrainRenderContextMixin.java index a27e84b7..0d4eddc3 100644 --- a/src/main/java/com/v5/mixins/AbstractTerrainRenderContextMixin.java +++ b/src/main/java/com/v5/mixins/AbstractTerrainRenderContextMixin.java @@ -18,32 +18,29 @@ @SuppressWarnings("UnstableApiUsage") @Mixin(AbstractTerrainRenderContext.class) public abstract class AbstractTerrainRenderContextMixin { - @Final - @Shadow(remap = false) - protected BlockRenderInfo blockInfo; + @Final + @Shadow(remap = false) + protected BlockRenderInfo blockInfo; - @Inject(method = "bufferQuad", at = @At(value = "INVOKE", target = "Lnet/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractTerrainRenderContext;bufferQuad(Lnet/fabricmc/fabric/impl/client/indigo/renderer/mesh/MutableQuadViewImpl;Lnet/minecraft/client/render/VertexConsumer;)V"), cancellable = true) - private void cancelRenders(MutableQuadViewImpl quad, CallbackInfo ci) { - if (Xray.isEnabled) { - Block block = blockInfo.blockState.getBlock(); - int alpha = Xray.returnAlpha(blockInfo.blockPos, blockInfo.blockState); + @Inject(method = "bufferQuad", at = @At(value = "INVOKE", target = "Lnet/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractTerrainRenderContext;bufferQuad(Lnet/fabricmc/fabric/impl/client/indigo/renderer/mesh/MutableQuadViewImpl;Lnet/minecraft/client/render/VertexConsumer;)V"), cancellable = true) + private void cancelRenders(MutableQuadViewImpl quad, CallbackInfo ci) { + if (Xray.isEnabled) { + Block block = blockInfo.blockState.getBlock(); + int alpha = Xray.returnAlpha(blockInfo.blockPos, blockInfo.blockState); + if (!(block instanceof StainedGlassPaneBlock || block instanceof StainedGlassBlock)) { + if (alpha == 0) ci.cancel(); + else if (alpha != -1) { + for (int i = 0; i < 4; i++) { + quad.color(i, setAlpha(quad.color(i), alpha)); + } + } + } + } + } - if (block instanceof StainedGlassPaneBlock || block instanceof StainedGlassBlock) { - // do nothing / render - } else { - if (alpha == 0) ci.cancel(); - else if (alpha != -1) { - for (int i = 0; i < 4; i++) { - quad.color(i, setAlpha(quad.color(i), alpha)); - } - } - } - } - } - - @Unique - private int setAlpha(int color, int alpha) { - return ((alpha & 0xFF) << 24) | (color & 0x00FFFFFF); - } + @Unique + private int setAlpha(int color, int alpha) { + return ((alpha & 0xFF) << 24) | (color & 0x00FFFFFF); + } } diff --git a/src/main/java/com/v5/mixins/BlockModelRendererMixin.java b/src/main/java/com/v5/mixins/BlockModelRendererMixin.java index 46826af2..6a3d3571 100644 --- a/src/main/java/com/v5/mixins/BlockModelRendererMixin.java +++ b/src/main/java/com/v5/mixins/BlockModelRendererMixin.java @@ -33,9 +33,10 @@ private void onRenderSmooth(BlockRenderView world, List parts, B } } - @ModifyArgs(method = "renderQuad", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumer;quad(Lnet/minecraft/client/util/math/MatrixStack$Entry;Lnet/minecraft/client/render/model/BakedQuad;[FFFFF[IIZ)V")) + @ModifyArgs(method = "renderQuad", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumer;quad(Lnet/minecraft/client/util/math/MatrixStack$Entry;Lnet/minecraft/client/render/model/BakedQuad;[FFFFF[II)V")) private void modifyXrayAlpha(final Args args) { final int alpha = alphas.get(); args.set(6, alpha == -1 ? args.get(6) : alpha / 255f); } + } diff --git a/src/main/java/com/v5/mixins/BlockRenderLayersMixin.java b/src/main/java/com/v5/mixins/BlockRenderLayersMixin.java new file mode 100644 index 00000000..888f0851 --- /dev/null +++ b/src/main/java/com/v5/mixins/BlockRenderLayersMixin.java @@ -0,0 +1,39 @@ +package com.v5.mixins; + +import com.v5.qol.Xray; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.client.render.BlockRenderLayer; +import net.minecraft.client.render.BlockRenderLayers; +import net.minecraft.fluid.FluidState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BlockRenderLayers.class) +public abstract class BlockRenderLayersMixin { + @Inject(method = "getBlockLayer", at = @At("HEAD"), cancellable = true) + private static void onGetBlockLayer(BlockState state, CallbackInfoReturnable cir) { + if (Xray.isEnabled) { + int alpha = Xray.returnAlpha(null, state); + if (state.isOf(Blocks.GOLD_BLOCK) || state.isOf(Blocks.BEDROCK)) + return; + + if (alpha > 0 && alpha < 255) { + cir.setReturnValue(BlockRenderLayer.TRANSLUCENT); + } + } + } + + @Inject(method = "getFluidLayer", at = @At("HEAD"), cancellable = true) + private static void onGetFluidLayer(FluidState state, CallbackInfoReturnable cir) { + int alpha = Xray.returnAlpha(null, state.getBlockState()); + if (Xray.isEnabled) { + if (alpha > 0 && alpha < 255) { + cir.setReturnValue(BlockRenderLayer.TRANSLUCENT); + } + } + } +} + diff --git a/src/main/java/com/v5/mixins/CameraMixin.java b/src/main/java/com/v5/mixins/CameraMixin.java index 967684e4..41e38fd8 100644 --- a/src/main/java/com/v5/mixins/CameraMixin.java +++ b/src/main/java/com/v5/mixins/CameraMixin.java @@ -4,7 +4,7 @@ import net.minecraft.client.render.Camera; import net.minecraft.entity.Entity; import net.minecraft.util.math.Vec3d; -import net.minecraft.world.BlockView; +import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -17,13 +17,7 @@ public abstract class CameraMixin { protected abstract void setPos(Vec3d pos); @Inject(method = "update", at = @At("TAIL")) - private void v5$applyCameraOverride( - BlockView area, - Entity focusedEntity, - boolean thirdPerson, - boolean inverseView, - float tickProgress, - CallbackInfo ci) { + private void v5$applyCameraOverride(World area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickProgress, CallbackInfo ci) { Object override = V5MixinStorage.get("cameraOverridePos", null); if (override instanceof Vec3d pos) { this.setPos(pos); diff --git a/src/main/java/com/v5/mixins/GameRendererMixin.java b/src/main/java/com/v5/mixins/GameRendererMixin.java index 7f11cd87..d4e9fc13 100644 --- a/src/main/java/com/v5/mixins/GameRendererMixin.java +++ b/src/main/java/com/v5/mixins/GameRendererMixin.java @@ -4,6 +4,7 @@ import com.v5.render.NVGRenderer; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.render.RenderTickCounter; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -13,12 +14,13 @@ public class GameRendererMixin { @ModifyExpressionValue( - method = "render", - at = - @At( - value = "FIELD", - target = - "Lnet/minecraft/client/option/GameOptions;pauseOnLostFocus:Z")) + method = "render", + at = @At( + value = "FIELD", + target = "Lnet/minecraft/client/option/GameOptions;pauseOnLostFocus:Z", + opcode = Opcodes.GETFIELD + ) + ) private boolean v5$render(boolean original) { return false; } diff --git a/src/main/java/com/v5/mixins/RenderLayersMixin.java b/src/main/java/com/v5/mixins/RenderLayersMixin.java deleted file mode 100644 index 4b208cd1..00000000 --- a/src/main/java/com/v5/mixins/RenderLayersMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.v5.mixins; - -import com.v5.qol.Xray; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.render.BlockRenderLayer; -import net.minecraft.client.render.RenderLayers; -import net.minecraft.fluid.FluidState; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(RenderLayers.class) -public abstract class RenderLayersMixin { - @Inject(method = "getBlockLayer", at = @At("HEAD"), cancellable = true) - private static void onGetBlockLayer(BlockState state, CallbackInfoReturnable cir) { - if (Xray.isEnabled) { - int alpha = Xray.returnAlpha(null, state); - if (state.isOf(Blocks.GOLD_BLOCK) || state.isOf(Blocks.BEDROCK)) - return; - - if (alpha > 0 && alpha < 255) { - cir.setReturnValue(BlockRenderLayer.TRANSLUCENT); - } - } - } - - @Inject(method = "getFluidLayer", at = @At("HEAD"), cancellable = true) - private static void onGetFluidLayer(FluidState state, CallbackInfoReturnable cir) { - int alpha = Xray.returnAlpha(null, state.getBlockState()); - if (Xray.isEnabled) { - if (alpha > 0 && alpha < 255) { - cir.setReturnValue(BlockRenderLayer.TRANSLUCENT); - } - } - } -} - diff --git a/src/main/java/com/v5/mixins/WorldRendererMixin.java b/src/main/java/com/v5/mixins/WorldRendererMixin.java index 75adca4d..881cf414 100644 --- a/src/main/java/com/v5/mixins/WorldRendererMixin.java +++ b/src/main/java/com/v5/mixins/WorldRendererMixin.java @@ -5,6 +5,8 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.v5.event.Context; import com.v5.event.WorldRenderEvent; +import net.fabricmc.fabric.api.client.rendering.v1.world.WorldExtractionContext; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; import net.minecraft.client.render.state.WorldRenderState; import net.minecraft.client.util.Handle; @@ -48,9 +50,15 @@ private void render(ObjectAllocator allocator, RenderTickCounter tickCounter, bo } @Inject(method = "method_62214", at = @At("RETURN")) - private void postRender(GpuBufferSlice gpuBufferSlice, WorldRenderState worldRenderState, Profiler profiler, Matrix4f matrix4f, Handle handle, Handle handle2, boolean bl, Frustum frustum, Handle handle3, Handle handle4, CallbackInfo ci) { + private void postRender(GpuBufferSlice gpuBufferSlice, WorldRenderState worldRenderState, Profiler profiler, Matrix4f matrix4f, Handle handle, Handle handle2, boolean bl, Handle handle3, Handle handle4, CallbackInfo ci) { Context c = getCtx(); - c.setFrustum(frustum); + + Frustum frustum = MinecraftClient.getInstance().worldRenderer.getCapturedFrustum(); + + if (frustum != null) { + c.setFrustum(frustum); + } + WorldRenderEvent.LAST.invoker().trigger(c); } @@ -61,18 +69,7 @@ private MatrixStack setInternalStack(MatrixStack original) { } @Inject(method = "method_62214", at = @At("HEAD"), cancellable = true) - private void v5$renderMain( - GpuBufferSlice gpuBufferSlice, - WorldRenderState worldRenderState, - Profiler profiler, - Matrix4f matrix4f, - Handle handle, - Handle handle2, - boolean bl, - Frustum frustum, - Handle handle3, - Handle handle4, - CallbackInfo ci) { + private void v5$renderMain(GpuBufferSlice gpuBufferSlice, WorldRenderState worldRenderState, Profiler profiler, Matrix4f matrix4f, Handle handle, Handle handle2, boolean bl, Handle handle3, Handle handle4, CallbackInfo ci) { if (V5MixinStorage.getBoolean("macroEnabled", false) && "No Render".equals(V5MixinStorage.getString("renderLimiter", "Off"))) { ci.cancel(); diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/Mappings.kt b/src/main/kotlin/com/chattriggers/ctjs/api/Mappings.kt index bf93aa2d..2eeb3f20 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/Mappings.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/Mappings.kt @@ -34,7 +34,7 @@ object Mappings { val mappingVersion = if (container.isPresent) { container.get().metadata.getCustomValue("${CTJS.MOD_ID}:yarn-mappings").asString } else { - "1.21.10+build.1" + "1.21.11+build.3" } val jarName = "yarn-$mappingVersion-v2.jar".urlEncode() diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt index 6f6fa3f2..d4b9c4b4 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt @@ -342,10 +342,10 @@ object Client { } class CameraWrapper { - fun getX(): Double = getMinecraft().gameRenderer.camera.pos.x + fun getX(): Double = getMinecraft().gameRenderer.camera.cameraPos.x - fun getY(): Double = getMinecraft().gameRenderer.camera.pos.y + fun getY(): Double = getMinecraft().gameRenderer.camera.cameraPos.y - fun getZ(): Double = getMinecraft().gameRenderer.camera.pos.z + fun getZ(): Double = getMinecraft().gameRenderer.camera.cameraPos.z } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Settings.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Settings.kt index 1b4aba4f..6a5c77e9 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Settings.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/Settings.kt @@ -138,10 +138,10 @@ object Settings { } class VideoWrapper { - fun getGraphicsMode() = GraphicsMode.fromMC(toMC().graphicsMode.value) + fun getGraphicsMode() = GraphicsMode.fromMC(toMC().preset.value) fun setGraphicsMode(mode: GraphicsMode) { - toMC().graphicsMode.value = mode.toMC() + toMC().preset.value = mode.toMC() } fun getRenderDistance() = toMC().viewDistance.value diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt b/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt index 071516d0..fc490c9b 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt @@ -40,6 +40,7 @@ import net.minecraft.command.CommandSource import net.minecraft.command.EntitySelector import net.minecraft.command.argument.* import net.minecraft.command.argument.AngleArgumentType.Angle +import net.minecraft.command.permission.PermissionPredicate import net.minecraft.entity.player.PlayerEntity import net.minecraft.item.ItemStack import net.minecraft.registry.BuiltinRegistries @@ -682,7 +683,7 @@ object DynamicCommands : CommandCollection() { Player.getPos().toVec3d(), Player.getRotation(), null, - 0, + PermissionPredicate.NONE, Player.getName(), Player.getDisplayName(), null, diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt b/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt index 1133d876..3ceafb01 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt @@ -1,11 +1,13 @@ package com.chattriggers.ctjs.api.message import com.chattriggers.ctjs.api.client.Client +import com.chattriggers.ctjs.api.client.Settings.toMC import com.chattriggers.ctjs.api.render.Renderer import com.chattriggers.ctjs.internal.listeners.ClientListener import com.chattriggers.ctjs.internal.mixins.ChatHudAccessor import com.chattriggers.ctjs.internal.utils.asMixin import net.fabricmc.fabric.impl.command.client.ClientCommandInternals +import net.minecraft.client.gui.hud.ChatHud import net.minecraft.client.gui.hud.ChatHudLine import net.minecraft.client.gui.hud.MessageIndicator import org.mozilla.javascript.regexp.NativeRegExp @@ -129,7 +131,7 @@ object ChatLib { */ @JvmStatic fun getChatWidth(): Int { - return Client.getChatGui()?.width ?: 0 + return ChatHud.getWidth(toMC().chatWidth.getValue()) } /** diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/LegacyPipelineBuilder.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/LegacyPipelineBuilder.kt index 5004d16f..c1fcb200 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/LegacyPipelineBuilder.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/LegacyPipelineBuilder.kt @@ -6,6 +6,7 @@ import com.mojang.blaze3d.platform.DepthTestFunction import com.mojang.blaze3d.platform.DestFactor import com.mojang.blaze3d.platform.SourceFactor import net.minecraft.client.render.RenderLayer +import net.minecraft.client.render.RenderSetup object LegacyPipelineBuilder { private val layerList = mutableMapOf() @@ -81,17 +82,18 @@ object LegacyPipelineBuilder { 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 + // FIXME: icba to do this +// val layer = RenderLayer.of( +// "ctjs/custom/layer${hashCode()}", +// 1536, +// build(), +// RenderLayer.MultiPhaseParameters +// .builder() +// .build(false) +// ) +// layerList[state()] = layer + + throw Error("LegacyPipelineBuilder#layer currently not supported") } fun state(): String { diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt index 5031d6db..c9c9dfd2 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt @@ -11,7 +11,6 @@ import com.chattriggers.ctjs.engine.printToConsole 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 import gg.essential.elementa.dsl.component3 @@ -312,7 +311,7 @@ object Renderer { @JvmStatic @JvmOverloads fun pos(x: Float, y: Float, z: Float = 0f) = apply { - val camera = Client.getMinecraft().gameRenderer.camera.pos + val camera = Client.getMinecraft().gameRenderer.camera.cameraPos Renderer3d.pos(x + camera.x.toFloat(), y + camera.y.toFloat(), z + camera.z.toFloat()) } @@ -563,7 +562,8 @@ object Renderer { scale(1f, 1f, 50f) - RenderSystem.setShaderTexture(0, image.getTexture()?.glTextureView) + // FIXME: icba to do this +// RenderSystem.setShaderTexture(0, image.getTexture()?.glTextureView) begin(DrawMode.QUADS, VertexFormat.POSITION_TEXTURE_COLOR, snippet = RenderSnippet.POSITION_TEX_COLOR_SNIPPET) pos(x, y + height, 0f).tex(0f, 1f).color(colorized!!) diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer3d.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer3d.kt index 8bdb04bf..5d1547d4 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer3d.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer3d.kt @@ -62,7 +62,7 @@ object Renderer3d { begin() if (!firstVertex) worldRenderer.endVertex() - val camera = Client.getMinecraft().gameRenderer.camera.pos + val camera = Client.getMinecraft().gameRenderer.camera.cameraPos worldRenderer.pos(Renderer.matrixStack, x.toDouble() - camera.x, y.toDouble() - camera.y, z.toDouble() - camera.z) firstVertex = false } @@ -165,8 +165,9 @@ object Renderer3d { * @return [Renderer3d] to allow for method chaining */ @JvmStatic + @Deprecated("removed since 1.21.11") fun lineWidth(width: Float) = apply { - RenderSystem.lineWidth(width) +// RenderSystem.lineWidth(width) } /** @@ -221,9 +222,9 @@ object Renderer3d { val fontRenderer = Renderer.getFontRenderer() val camera = Client.getMinecraft().gameRenderer.camera val renderPos = Vec3f( - x - camera.pos.x.toFloat(), - y - camera.pos.y.toFloat(), - z - camera.pos.z.toFloat(), + x - camera.cameraPos.x.toFloat(), + y - camera.cameraPos.y.toFloat(), + z - camera.cameraPos.z.toFloat(), ) val lScale = scale * if (increase) { @@ -339,7 +340,7 @@ object Renderer3d { Renderer.pushMatrix() .disableDepth() .disableCull() - RenderSystem.lineWidth(thickness) +// RenderSystem.lineWidth(thickness) val (r, g, b, a) = Color(color.toInt(), true) @@ -350,7 +351,7 @@ object Renderer3d { pos(x2, y2, z2).color(r, g, b, a).normal(normalVec.x, normalVec.y, normalVec.z) draw() - RenderSystem.lineWidth(1f) +// RenderSystem.lineWidth(1f) Renderer .enableCull() .enableDepth() diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/world/World.kt b/src/main/kotlin/com/chattriggers/ctjs/api/world/World.kt index 27c122f4..f104eb95 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/world/World.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/world/World.kt @@ -75,7 +75,8 @@ object World { fun getDifficulty(): Settings.Difficulty? = toMC()?.difficulty?.let(Settings.Difficulty::fromMC) @JvmStatic - fun getMoonPhase(): Int = toMC()?.moonPhase ?: -1 + // FIXME: icba to do this + fun getMoonPhase(): Int = -1 // toMC()?.moonPhase?.index ?: -1 /** * Gets the [Block] at a location in the world. diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/engine/CTEvents.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/engine/CTEvents.kt index 6a3f92b1..438e91ba 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/engine/CTEvents.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/engine/CTEvents.kt @@ -171,7 +171,7 @@ internal object CTEvents { } } - private inline fun make(noinline reducer: (Array) -> T): Event { + private inline fun make(noinline reducer: (Array) -> T): Event { return EventFactory.createArrayBacked(T::class.java, reducer) } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/generation/Utils.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/launch/generation/Utils.kt index 80b7e7e0..1d30acd0 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/generation/Utils.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/launch/generation/Utils.kt @@ -63,7 +63,7 @@ internal object Utils { visit("longValue", constant.longValue) if (constant.doubleValue != null) visit("doubleValue", constant.doubleValue) - if (constant.stringValue != null) + if (constant.stringValue != null) visit("stringValue", constant.stringValue) if (constant.classValue != null) { val name = Mappings.getMappedClassName(constant.classValue) diff --git a/src/main/kotlin/com/v5/event/Context.kt b/src/main/kotlin/com/v5/event/Context.kt index 1b4442e4..36f142fc 100644 --- a/src/main/kotlin/com/v5/event/Context.kt +++ b/src/main/kotlin/com/v5/event/Context.kt @@ -10,6 +10,6 @@ class Context { var matrixStack: MatrixStack? = null lateinit var consumers: VertexConsumerProvider lateinit var camera: Camera - lateinit var frustum: Frustum + var frustum: Frustum? = null } diff --git a/src/main/kotlin/com/v5/event/PacketEvent.kt b/src/main/kotlin/com/v5/event/PacketEvent.kt index 4cfbf47e..ba17c0d8 100644 --- a/src/main/kotlin/com/v5/event/PacketEvent.kt +++ b/src/main/kotlin/com/v5/event/PacketEvent.kt @@ -13,7 +13,7 @@ object PacketEvent { @JvmField val RECEIVE = bake { v -> ReceiveEvent { ctx -> v.forEach { it.trigger(ctx) } } } - private inline fun bake(noinline v: (Array) -> T): Event = + private inline fun bake(noinline v: (Array) -> T): Event = EventFactory.createArrayBacked(T::class.java, v) } diff --git a/src/main/kotlin/com/v5/render/RenderUtils.kt b/src/main/kotlin/com/v5/render/RenderUtils.kt index 102543e0..0be1c3dd 100644 --- a/src/main/kotlin/com/v5/render/RenderUtils.kt +++ b/src/main/kotlin/com/v5/render/RenderUtils.kt @@ -1,6 +1,5 @@ package com.v5.render -import com.mojang.blaze3d.systems.RenderSystem import com.v5.render.helper.FrustumHolder import com.v5.render.helper.FrustumUtils import com.v5.render.objects.RenderLayers @@ -10,13 +9,14 @@ import net.minecraft.client.font.TextRenderer import net.minecraft.client.render.Frustum import net.minecraft.client.render.VertexConsumer import net.minecraft.client.render.VertexConsumerProvider -import net.minecraft.client.render.VertexRendering import net.minecraft.client.util.BufferAllocator import net.minecraft.client.util.math.MatrixStack import net.minecraft.entity.Entity import net.minecraft.util.math.Box import net.minecraft.util.math.Vec3d import org.joml.Quaternionf +import kotlin.math.max +import kotlin.math.min import kotlin.math.sqrt object RenderUtils { @@ -30,9 +30,10 @@ object RenderUtils { private const val MAX_TEXTS = 1024 private const val BOX_KEY_COUNT = 514 // filled(depth/no depth) + wire(depth 0-255 thickness, no-depth 0-255 thickness) private const val LINE_KEY_COUNT = 512 // depth(0-255 thickness) + no-depth(0-255 thickness) + private const val FULL_BRIGHT = 15728880 private val boxData = DoubleArray(MAX_BOXES * 6) - private val boxColors = FloatArray(MAX_BOXES * 4) + private val boxColors = IntArray(MAX_BOXES) private val boxFlags = IntArray(MAX_BOXES) private val boxOrder = IntArray(MAX_BOXES) private val boxKeyCounts = IntArray(BOX_KEY_COUNT) @@ -87,9 +88,9 @@ object RenderUtils { val camera = context.camera val frustum = FrustumHolder.currentFrustum - cameraX = camera.pos.x - cameraY = camera.pos.y - cameraZ = camera.pos.z + cameraX = camera.cameraPos.x + cameraY = camera.cameraPos.y + cameraZ = camera.cameraPos.z cameraRotation = camera.rotation matrices.push() @@ -110,7 +111,9 @@ object RenderUtils { } bufferSource.draw() - RenderSystem.lineWidth(1.0f) + + // FIXME +// RenderSystem.lineWidth(1.0f) } } @@ -232,7 +235,8 @@ object RenderUtils { val lineWidth = (thicknessRaw / 10f).coerceAtLeast(0.1f) if (lineWidth != currentLineWidth) { bufferSource.draw() - RenderSystem.lineWidth(lineWidth) + // FIXME +// RenderSystem.lineWidth(lineWidth) currentLineWidth = lineWidth } } @@ -241,22 +245,30 @@ object RenderUtils { for (pos in start until end) { val idx = boxOrder[pos] val i = idx * 6 - val ci = idx * 4 + val color = boxColors[idx] + val x1 = boxData[i] - cameraX + val y1 = boxData[i + 1] - cameraY + val z1 = boxData[i + 2] - cameraZ + val x2 = boxData[i + 3] - cameraX + val y2 = boxData[i + 4] - cameraY + val z2 = boxData[i + 5] - cameraZ if (filled) { - VertexRendering.drawFilledBox( - matrices, buffer, - boxData[i].toFloat(), boxData[i + 1].toFloat(), boxData[i + 2].toFloat(), - boxData[i + 3].toFloat(), boxData[i + 4].toFloat(), boxData[i + 5].toFloat(), - boxColors[ci], boxColors[ci + 1], boxColors[ci + 2], boxColors[ci + 3] - ) + // FIXME +// VertexRendering.drawFilledBox( +// matrices, buffer, +// boxData[i].toFloat(), boxData[i + 1].toFloat(), boxData[i + 2].toFloat(), +// boxData[i + 3].toFloat(), boxData[i + 4].toFloat(), boxData[i + 5].toFloat(), +// boxColors[ci], boxColors[ci + 1], boxColors[ci + 2], boxColors[ci + 3] +// ) } else { - VertexRendering.drawBox( - entry, buffer, - boxData[i], boxData[i + 1], boxData[i + 2], - boxData[i + 3], boxData[i + 4], boxData[i + 5], - boxColors[ci], boxColors[ci + 1], boxColors[ci + 2], boxColors[ci + 3] - ) + // FIXME +// VertexRendering.drawBox( +// entry, buffer, +// boxData[i], boxData[i + 1], boxData[i + 2], +// boxData[i + 3], boxData[i + 4], boxData[i + 5], +// boxColors[ci], boxColors[ci + 1], boxColors[ci + 2], boxColors[ci + 3] +// ) } } } @@ -285,20 +297,28 @@ object RenderUtils { bufferSource.draw() currentLayer = layer currentLineWidth = lineWidth - RenderSystem.lineWidth(lineWidth) + // FIXME +// RenderSystem.lineWidth(lineWidth) } val buffer = bufferSource.getBuffer(layer) for (pos in start until end) { val idx = lineOrder[pos] val i = idx * 6 + val x1 = lineData[i] - cameraX + val y1 = lineData[i + 1] - cameraY + val z1 = lineData[i + 2] - cameraZ + val x2 = lineData[i + 3] - cameraX + val y2 = lineData[i + 4] - cameraY + val z2 = lineData[i + 5] - cameraZ writeLine( entry, buffer, - lineData[i], lineData[i + 1], lineData[i + 2], - lineData[i + 3], lineData[i + 4], lineData[i + 5], - lineColors[idx] + x1, y1, z1, + x2, y2, z2, + lineColors[idx], + lineWidth ) } } @@ -306,12 +326,81 @@ object RenderUtils { bufferSource.draw() } - private fun writeLine( + private fun writeFilledBox( entry: MatrixStack.Entry, buffer: VertexConsumer, x1: Double, y1: Double, z1: Double, x2: Double, y2: Double, z2: Double, argb: Int + ) { + val minX = min(x1, x2).toFloat() + val minY = min(y1, y2).toFloat() + val minZ = min(z1, z2).toFloat() + val maxX = max(x1, x2).toFloat() + val maxY = max(y1, y2).toFloat() + val maxZ = max(z1, z2).toFloat() + + quad(buffer, entry, minX, minY, minZ, maxX, minY, minZ, maxX, maxY, minZ, minX, maxY, minZ, argb) + quad(buffer, entry, minX, minY, maxZ, minX, maxY, maxZ, maxX, maxY, maxZ, maxX, minY, maxZ, argb) + quad(buffer, entry, minX, minY, minZ, minX, maxY, minZ, minX, maxY, maxZ, minX, minY, maxZ, argb) + quad(buffer, entry, maxX, minY, minZ, maxX, minY, maxZ, maxX, maxY, maxZ, maxX, maxY, minZ, argb) + quad(buffer, entry, minX, maxY, minZ, maxX, maxY, minZ, maxX, maxY, maxZ, minX, maxY, maxZ, argb) + quad(buffer, entry, minX, minY, minZ, minX, minY, maxZ, maxX, minY, maxZ, maxX, minY, minZ, argb) + } + + private fun quad( + buffer: VertexConsumer, + entry: MatrixStack.Entry, + x1: Float, y1: Float, z1: Float, + x2: Float, y2: Float, z2: Float, + x3: Float, y3: Float, z3: Float, + x4: Float, y4: Float, z4: Float, + argb: Int + ) { + buffer.vertex(entry, x1, y1, z1).color(argb) + buffer.vertex(entry, x2, y2, z2).color(argb) + buffer.vertex(entry, x3, y3, z3).color(argb) + buffer.vertex(entry, x4, y4, z4).color(argb) + } + + private fun writeBox( + entry: MatrixStack.Entry, + buffer: VertexConsumer, + x1: Double, y1: Double, z1: Double, + x2: Double, y2: Double, z2: Double, + argb: Int, + lineWidth: Float + ) { + val minX = min(x1, x2) + val minY = min(y1, y2) + val minZ = min(z1, z2) + val maxX = max(x1, x2) + val maxY = max(y1, y2) + val maxZ = max(z1, z2) + + writeLine(entry, buffer, minX, minY, minZ, maxX, minY, minZ, argb, lineWidth) + writeLine(entry, buffer, maxX, minY, minZ, maxX, minY, maxZ, argb, lineWidth) + writeLine(entry, buffer, maxX, minY, maxZ, minX, minY, maxZ, argb, lineWidth) + writeLine(entry, buffer, minX, minY, maxZ, minX, minY, minZ, argb, lineWidth) + + writeLine(entry, buffer, minX, maxY, minZ, maxX, maxY, minZ, argb, lineWidth) + writeLine(entry, buffer, maxX, maxY, minZ, maxX, maxY, maxZ, argb, lineWidth) + writeLine(entry, buffer, maxX, maxY, maxZ, minX, maxY, maxZ, argb, lineWidth) + writeLine(entry, buffer, minX, maxY, maxZ, minX, maxY, minZ, argb, lineWidth) + + writeLine(entry, buffer, minX, minY, minZ, minX, maxY, minZ, argb, lineWidth) + writeLine(entry, buffer, maxX, minY, minZ, maxX, maxY, minZ, argb, lineWidth) + writeLine(entry, buffer, maxX, minY, maxZ, maxX, maxY, maxZ, argb, lineWidth) + writeLine(entry, buffer, minX, minY, maxZ, minX, maxY, maxZ, argb, lineWidth) + } + + private fun writeLine( + entry: MatrixStack.Entry, + buffer: VertexConsumer, + x1: Double, y1: Double, z1: Double, + x2: Double, y2: Double, z2: Double, + argb: Int, + lineWidth: Float ) { val dx = x2 - x1 val dy = y2 - y1 @@ -322,8 +411,8 @@ object RenderUtils { val ny = (dy * invLen).toFloat() val nz = (dz * invLen).toFloat() - buffer.vertex(entry, x1.toFloat(), y1.toFloat(), z1.toFloat()).color(argb).normal(entry, nx, ny, nz) - buffer.vertex(entry, x2.toFloat(), y2.toFloat(), z2.toFloat()).color(argb).normal(entry, nx, ny, nz) + buffer.vertex(entry, x1.toFloat(), y1.toFloat(), z1.toFloat()).color(argb).normal(entry, nx, ny, nz).lineWidth(lineWidth) + buffer.vertex(entry, x2.toFloat(), y2.toFloat(), z2.toFloat()).color(argb).normal(entry, nx, ny, nz).lineWidth(lineWidth) } private fun renderTextBatch(matrices: MatrixStack, count: Int) { @@ -375,7 +464,7 @@ object RenderUtils { bufferSource, layer, 0, - 15728880 + FULL_BRIGHT ) matrices.pop() @@ -446,9 +535,9 @@ object RenderUtils { val yawRad = Math.toRadians(camera.yaw.toDouble()) val pitchRad = Math.toRadians(camera.pitch.toDouble()) val cosPitch = kotlin.math.cos(pitchRad) - val startX = camera.pos.x + (-kotlin.math.sin(yawRad) * cosPitch) * 0.1 - val startY = camera.pos.y + (-kotlin.math.sin(pitchRad)) * 0.1 - val startZ = camera.pos.z + (kotlin.math.cos(yawRad) * cosPitch) * 0.1 + val startX = camera.cameraPos.x + (-kotlin.math.sin(yawRad) * cosPitch) * 0.1 + val startY = camera.cameraPos.y + (-kotlin.math.sin(pitchRad)) * 0.1 + val startZ = camera.cameraPos.z + (kotlin.math.cos(yawRad) * cosPitch) * 0.1 addLine(startX, startY, startZ, targetPos.x, targetPos.y, targetPos.z, color.packed, thickness, depth, true) } @@ -477,13 +566,10 @@ object RenderUtils { if (!FrustumUtils.isVisible(FrustumHolder.currentFrustum, x1, y1, z1, x2, y2, z2)) return val i = boxCount * 6 - val ci = boxCount * 4 - boxData[i] = x1; boxData[i + 1] = y1; boxData[i + 2] = z1 boxData[i + 3] = x2; boxData[i + 4] = y2; boxData[i + 5] = z2 - boxColors[ci] = color.rf; boxColors[ci + 1] = color.gf - boxColors[ci + 2] = color.bf; boxColors[ci + 3] = color.af + boxColors[boxCount] = color.packed boxFlags[boxCount] = (if (filled) 1 else 0) or (if (depth) 2 else 0) or diff --git a/src/main/kotlin/com/v5/render/objects/RenderLayers.kt b/src/main/kotlin/com/v5/render/objects/RenderLayers.kt index 59da9790..a21155df 100644 --- a/src/main/kotlin/com/v5/render/objects/RenderLayers.kt +++ b/src/main/kotlin/com/v5/render/objects/RenderLayers.kt @@ -4,14 +4,12 @@ import com.mojang.blaze3d.pipeline.BlendFunction import com.mojang.blaze3d.pipeline.RenderPipeline import com.mojang.blaze3d.platform.DepthTestFunction import com.mojang.blaze3d.vertex.VertexFormat.DrawMode +import net.minecraft.client.render.* import net.minecraft.client.gl.RenderPipelines as MinecraftRenderPipelines -import net.minecraft.client.render.RenderLayer -import net.minecraft.client.render.RenderLayer.MultiPhase -import net.minecraft.client.render.RenderPhase -import net.minecraft.client.render.VertexFormats object RenderPipelines { - @JvmField val LINE_LIST: RenderPipeline = MinecraftRenderPipelines.register( + @JvmField + val LINE_LIST: RenderPipeline = MinecraftRenderPipelines.register( RenderPipeline.builder(*arrayOf(MinecraftRenderPipelines.RENDERTYPE_LINES_SNIPPET)) .withLocation("pipeline/lines") .withVertexFormat(VertexFormats.POSITION_COLOR_NORMAL, DrawMode.LINES) @@ -22,7 +20,8 @@ object RenderPipelines { .build() ) - @JvmField val LINE_LIST_ESP: RenderPipeline = MinecraftRenderPipelines.register( + @JvmField + val LINE_LIST_ESP: RenderPipeline = MinecraftRenderPipelines.register( RenderPipeline.builder(*arrayOf(MinecraftRenderPipelines.RENDERTYPE_LINES_SNIPPET)) .withLocation("pipeline/lines") .withShaderDefine("shad") @@ -34,7 +33,8 @@ object RenderPipelines { .build() ) - @JvmField val TRIANGLE_STRIP: RenderPipeline = MinecraftRenderPipelines.register( + @JvmField + val TRIANGLE_STRIP: RenderPipeline = MinecraftRenderPipelines.register( RenderPipeline.builder(*arrayOf(MinecraftRenderPipelines.POSITION_COLOR_SNIPPET)) .withLocation("pipeline/debug_filled_box") .withCull(false) @@ -45,7 +45,8 @@ object RenderPipelines { .build() ) - @JvmField val TRIANGLE_STRIP_ESP: RenderPipeline = MinecraftRenderPipelines.register( + @JvmField + val TRIANGLE_STRIP_ESP: RenderPipeline = MinecraftRenderPipelines.register( RenderPipeline.builder(*arrayOf(MinecraftRenderPipelines.POSITION_COLOR_SNIPPET)) .withLocation("pipeline/debug_filled_box") .withCull(false) @@ -58,39 +59,37 @@ object RenderPipelines { } object RenderLayers { - @JvmField val LINE_LIST: RenderLayer = RenderLayer.of( + @JvmField + val LINE_LIST: RenderLayer = RenderLayer.of( "line-list", - RenderLayer.DEFAULT_BUFFER_SIZE, - RenderPipelines.LINE_LIST, - RenderLayer.MultiPhaseParameters.builder() - .layering(RenderPhase.VIEW_OFFSET_Z_LAYERING) - .build(false) + RenderSetup.builder(RenderPipelines.LINE_LIST) + .layeringTransform(LayeringTransform.VIEW_OFFSET_Z_LAYERING) + .outputTarget(OutputTarget.ITEM_ENTITY_TARGET) + .build() ) - @JvmField val LINE_LIST_ESP: RenderLayer = RenderLayer.of( + @JvmField + val LINE_LIST_ESP: RenderLayer = RenderLayer.of( "line-list-esp", - RenderLayer.DEFAULT_BUFFER_SIZE, - RenderPipelines.LINE_LIST_ESP, - RenderLayer.MultiPhaseParameters.builder().build(false) + RenderSetup.builder(RenderPipelines.LINE_LIST_ESP) + .outputTarget(OutputTarget.ITEM_ENTITY_TARGET) + .build() ) - @JvmField val TRIANGLE_STRIP: MultiPhase = RenderLayer.of( + @JvmField + val TRIANGLE_STRIP: RenderLayer = RenderLayer.of( "triangle_strip", - RenderLayer.DEFAULT_BUFFER_SIZE, - false, - true, - RenderPipelines.TRIANGLE_STRIP, - RenderLayer.MultiPhaseParameters.builder() - .layering(RenderPhase.VIEW_OFFSET_Z_LAYERING) - .build(false) + RenderSetup.builder(RenderPipelines.TRIANGLE_STRIP) + .layeringTransform(LayeringTransform.VIEW_OFFSET_Z_LAYERING) + .translucent() + .build() ) - @JvmField val TRIANGLE_STRIP_ESP: MultiPhase = RenderLayer.of( + @JvmField + val TRIANGLE_STRIP_ESP: RenderLayer = RenderLayer.of( "triangle_strip_esp", - RenderLayer.DEFAULT_BUFFER_SIZE, - false, - true, - RenderPipelines.TRIANGLE_STRIP_ESP, - RenderLayer.MultiPhaseParameters.builder().build(false) + RenderSetup.builder(RenderPipelines.TRIANGLE_STRIP_ESP) + .translucent() + .build() ) } diff --git a/src/main/resources/assets/v5/V5PathJNI.dll b/src/main/resources/assets/v5/V5PathJNI.dll index 86d0c82b..d0c70f4e 100644 Binary files a/src/main/resources/assets/v5/V5PathJNI.dll and b/src/main/resources/assets/v5/V5PathJNI.dll differ diff --git a/src/main/resources/v5.mixins.json b/src/main/resources/v5.mixins.json index e5415d6e..f47e6eae 100644 --- a/src/main/resources/v5.mixins.json +++ b/src/main/resources/v5.mixins.json @@ -4,34 +4,34 @@ "package": "com.v5.mixins", "compatibilityLevel": "JAVA_21", "client": [ + "AbstractBlockStateMixin", + "AbstractTerrainRenderContextMixin", "BlockMixin", + "BlockModelRendererMixin", + "BlockRenderLayersMixin", "CameraMixin", "ChatHudMixin", + "ChunkOcclusionDataBuilderMixin", + "ClientConnectionProxyMixin", + "DrawContextCapture", "EntityRendererMixin", + "FirmamentModAnnouncerMixin", + "FrustumInvoker", + "GameOptionsAccessorMixin", + "GameRendererMixin", + "GlStateManagerMixin", "HorizontalConnectingBlockMixin", "KeyboardInputMixin", + "LightTextureManagerMixin", "MinecraftClientMixin", "MouseMixin", - "PlayerListHudMixin", - "RenderLayersMixin", - "LightTextureManagerMixin", - "AbstractTerrainRenderContextMixin", - "ChunkOcclusionDataBuilderMixin", - "AbstractBlockStateMixin", - "BlockModelRendererMixin", - "YggdrasilServicesKeyInfoMixin", - "GameOptionsAccessorMixin", - "TranslationMixin", - "ClientConnectionProxyMixin", "MultiplayerScreenMixin", + "PlayerListHudMixin", + "ScreenPanoramaMixin", "TitleScreenRedirectMixin", - "GameRendererMixin", - "FirmamentModAnnouncerMixin", - "DrawContextCapture", - "GlStateManagerMixin", - "FrustumInvoker", + "TranslationMixin", "WorldRendererMixin", - "ScreenPanoramaMixin" + "YggdrasilServicesKeyInfoMixin" ], "mixins": [ "ClientConnectionMixin"