55
66package meteordevelopment .meteorclient .mixin ;
77
8+ import com .llamalad7 .mixinextras .injector .ModifyExpressionValue ;
89import com .llamalad7 .mixinextras .injector .v2 .WrapWithCondition ;
910import com .mojang .blaze3d .buffers .GpuBufferSlice ;
1011import it .unimi .dsi .fastutil .Stack ;
3536import net .minecraft .client .util .Handle ;
3637import net .minecraft .client .util .ObjectAllocator ;
3738import net .minecraft .client .util .math .MatrixStack ;
39+ import net .minecraft .client .world .ClientWorld ;
3840import net .minecraft .entity .Entity ;
3941import net .minecraft .util .math .Vec3d ;
4042import org .joml .Matrix4f ;
5557
5658@ Mixin (WorldRenderer .class )
5759public abstract class WorldRendererMixin implements IWorldRenderer {
60+
61+ @ Unique private NoRender noRender ;
62+ @ Unique private ESP esp ;
63+
64+ // if a world exists, meteor is initialised
65+ @ Inject (method = "setWorld" , at = @ At ("TAIL" ))
66+ private void onSetWorld (ClientWorld world , CallbackInfo ci ) {
67+ esp = Modules .get ().get (ESP .class );
68+ noRender = Modules .get ().get (NoRender .class );
69+ }
70+
5871 @ Inject (method = "checkEmpty" , at = @ At ("HEAD" ), cancellable = true )
5972 private void onCheckEmpty (MatrixStack matrixStack , CallbackInfo info ) {
6073 info .cancel ();
@@ -74,17 +87,17 @@ private boolean renderSetupTerrainModifyArg(boolean spectator) {
7487
7588 @ WrapWithCondition (method = "method_62216" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/WeatherRendering;renderPrecipitation(Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/client/render/state/WeatherRenderState;)V" ))
7689 private boolean shouldRenderPrecipitation (WeatherRendering instance , VertexConsumerProvider vertexConsumers , Vec3d pos , WeatherRenderState weatherRenderState ) {
77- return !Modules . get (). get ( NoRender . class ) .noWeather ();
90+ return !noRender .noWeather ();
7891 }
7992
8093 @ WrapWithCondition (method = "method_62216" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/WorldBorderRendering;render(Lnet/minecraft/client/render/state/WorldBorderRenderState;Lnet/minecraft/util/math/Vec3d;DD)V" ))
8194 private boolean shouldRenderWorldBorder (WorldBorderRendering instance , WorldBorderRenderState state , Vec3d cameraPos , double viewDistanceBlocks , double farPlaneDistance ) {
82- return !Modules . get (). get ( NoRender . class ) .noWorldBorder ();
95+ return !noRender .noWorldBorder ();
8396 }
8497
8598 @ Inject (method = "hasBlindnessOrDarkness(Lnet/minecraft/client/render/Camera;)Z" , at = @ At ("HEAD" ), cancellable = true )
8699 private void hasBlindnessOrDarkness (Camera camera , CallbackInfoReturnable <Boolean > info ) {
87- if (Modules . get (). get ( NoRender . class ). noBlindness () || Modules . get (). get ( NoRender . class ) .noDarkness ()) info .setReturnValue (null );
100+ if (noRender . noBlindness () || noRender .noDarkness ()) info .setReturnValue (null );
88101 }
89102
90103 // Entity Shaders
@@ -128,7 +141,7 @@ private void onPushEntityRenders(MatrixStack matrices, WorldRenderState worldSta
128141 }
129142
130143 draw (worldState , matrices , PostProcessShaders .CHAMS , entity -> Color .WHITE );
131- draw (worldState , matrices , PostProcessShaders .ENTITY_OUTLINE , entity -> Modules . get (). get ( ESP . class ) .getColor (entity ));
144+ draw (worldState , matrices , PostProcessShaders .ENTITY_OUTLINE , entity -> esp .getColor (entity ));
132145 }
133146
134147 @ Unique
@@ -170,6 +183,12 @@ private void draw(WorldRenderState worldState, MatrixStack matrices, EntityShade
170183 meteor$popEntityOutlineFramebuffer ();
171184 }
172185
186+ @ ModifyExpressionValue (method = "fillEntityRenderStates" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/WorldRenderer;isRenderingReady(Lnet/minecraft/util/math/BlockPos;)Z" ))
187+ boolean fillEntityRenderStatesIsRenderingReady (boolean original ) {
188+ if (esp .forceRender ()) return true ;
189+ return original ;
190+ }
191+
173192 @ Inject (method = "method_62214" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/OutlineVertexConsumerProvider;draw()V" ))
174193 private void onRender (CallbackInfo ci ) {
175194 PostProcessShaders .endRender ();
0 commit comments