From d80bcbfcf1c2daefd246d2699a73206dd985f22e Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Fri, 2 Oct 2026 07:16:02 -0400 Subject: [PATCH 01/12] fix MC-122110: BufferBuilder not expanding under specific conditions (#30) --- .../sarcio/mixin/bugfix/render/BufferBuilderMixin.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/BufferBuilderMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/BufferBuilderMixin.java index bbe6b04..43f9eed 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/BufferBuilderMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/BufferBuilderMixin.java @@ -2,10 +2,12 @@ import java.nio.IntBuffer; import net.minecraft.client.render.vertex.BufferBuilder; +import net.minecraft.client.render.vertex.VertexFormat; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(BufferBuilder.class) @@ -16,8 +18,16 @@ public abstract class BufferBuilderMixin { @Shadow protected abstract int getBufferIndex(); + @Shadow + private VertexFormat format; + @Inject(method = {"nextVertex", "vertices"}, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/vertex/BufferBuilder;grow(I)V")) private void sarcio$syncBufferPosition(CallbackInfo ci) { this.intBuffer.clear().position(this.getBufferIndex()); } + + @ModifyArg(method = "vertices", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/vertex/BufferBuilder;grow(I)V")) + private int sarcio$buildBuffer(int amount) { + return amount + this.format.getIntSize(); + } } From 9b7d6bd217b60808546d99623260239ffb4db083 Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Fri, 2 Oct 2026 07:16:35 -0400 Subject: [PATCH 02/12] fix MC-117075: Performance issue with unloading large number of block entities (#29) --- .../dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java index 05c6a28..b894d3b 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java @@ -1,6 +1,7 @@ package dev.rdh.sarcio.mixin.bugfix.world; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.minecraft.util.math.BlockPos; import net.minecraft.world.LightType; import net.minecraft.world.World; @@ -9,8 +10,12 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.util.Collection; +import java.util.List; + @Mixin(World.class) public abstract class WorldMixin { @Shadow public abstract boolean isAreaLoaded(BlockPos center, int radius, boolean allowEmpty); @@ -30,4 +35,10 @@ public abstract class WorldMixin { private int setVariableRange(int original) { return this.sarcio$range; } + + @SuppressWarnings("SuspiciousMethodCalls") + @Redirect(method = "tickEntities", at = @At(value = "INVOKE", target = "Ljava/util/List;removeAll(Ljava/util/Collection;)Z")) + private boolean sarcio$hashRemoveAll(List list, Collection removed) { + return !removed.isEmpty() && list.removeAll(new ObjectOpenHashSet<>(removed)); + } } From 615fb9cded8e5130deafbceee3e4884a230d3218 Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Fri, 2 Oct 2026 07:17:01 -0400 Subject: [PATCH 03/12] fix MC-30845: third-person camera clipping into tall grass and other collision-less blocks (#27) --- .../sarcio/mixin/bugfix/render/GameRendererMixin.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java index dc887a0..ac4f11f 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java @@ -1,12 +1,17 @@ package dev.rdh.sarcio.mixin.bugfix.render; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; import com.llamalad7.mixinextras.sugar.ref.LocalFloatRef; import net.minecraft.client.Minecraft; import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.world.ClientWorld; import net.minecraft.resource.Identifier; import net.minecraft.util.math.BlockPos; import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.HitResult; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -35,4 +40,9 @@ public class GameRendererMixin { green.set(Math.min(green.get(), 1.0F)); blue.set(Math.min(blue.get(), 1.0F)); } + + @WrapOperation(method = "transformCamera", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;rayTrace(Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/world/HitResult;")) + private HitResult sarcio$ignoreCollisionlessBlocks(ClientWorld instance, Vec3d start, Vec3d end, Operation original) { + return instance.rayTrace(start, end, false, true, false); + } } From fb5504b5e83e284d11b135a8f75998e20fb6b37a Mon Sep 17 00:00:00 2001 From: Microcontrollers <66657148+MicrocontrollersDev@users.noreply.github.com> Date: Fri, 2 Oct 2026 07:17:15 -0400 Subject: [PATCH 04/12] fix full screen not saving and make language switching fast (#31) --- .../rdh/sarcio/mixin/bugfix/MinecraftMixin.java | 11 +++++++++++ .../gui/LanguageSelectionListWidgetMixin.java | 16 ++++++++++++++++ src/main/resources/sarcio.classtweaker | 1 + src/main/resources/sarcio.mixins.json | 1 + 4 files changed, 29 insertions(+) create mode 100644 src/main/java/dev/rdh/sarcio/mixin/bugfix/gui/LanguageSelectionListWidgetMixin.java diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java index 9ddeb6a..dccb53e 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java @@ -3,9 +3,12 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.ProgressScreen; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.options.GameOptions; import net.minecraft.client.options.KeyBinding; import org.lwjgl.input.Keyboard; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; @@ -13,6 +16,9 @@ @Mixin(Minecraft.class) public class MinecraftMixin { + @Shadow + public GameOptions options; + @Inject(method = "openScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;lockMouse()V")) private void sarcio$reapplyKeybinds(Screen guiScreenIn, CallbackInfo ci) { for (KeyBinding keyBinding : KeyBinding.ALL) { @@ -27,4 +33,9 @@ public class MinecraftMixin { private Screen sarcio$showWorkingScreen(Screen guiScreenIn) { return new ProgressScreen(); } + + @Inject(method = "toggleFullscreen", at = @At(value = "FIELD", target = "Lnet/minecraft/client/options/GameOptions;fullscreen:Z", opcode = Opcodes.PUTFIELD, shift = At.Shift.AFTER)) + private void sarcio$saveFullscreen(CallbackInfo ci) { + this.options.save(); + } } diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/gui/LanguageSelectionListWidgetMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/gui/LanguageSelectionListWidgetMixin.java new file mode 100644 index 0000000..07b8136 --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/gui/LanguageSelectionListWidgetMixin.java @@ -0,0 +1,16 @@ +package dev.rdh.sarcio.mixin.bugfix.gui; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.menu.options.LanguageOptionsScreen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(LanguageOptionsScreen.LanguageSelectionListWidget.class) +public class LanguageSelectionListWidgetMixin { + @WrapOperation(method = "entryClicked", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;reloadResources()V")) + private void sarcio$fixReload(Minecraft instance, Operation original) { + instance.getLanguageManager().reload(instance.getResourceManager()); + } +} diff --git a/src/main/resources/sarcio.classtweaker b/src/main/resources/sarcio.classtweaker index 6476155..99e425c 100644 --- a/src/main/resources/sarcio.classtweaker +++ b/src/main/resources/sarcio.classtweaker @@ -2,3 +2,4 @@ classTweaker v2 named accessible field net/minecraft/client/options/KeyBinding ALL Ljava/util/List; accessible class net/minecraft/client/render/block/entity/BannerRenderer$CachedTexture +accessible class net/minecraft/client/gui/screen/menu/options/LanguageOptionsScreen$LanguageSelectionListWidget diff --git a/src/main/resources/sarcio.mixins.json b/src/main/resources/sarcio.mixins.json index 0ceb4bd..e01c545 100644 --- a/src/main/resources/sarcio.mixins.json +++ b/src/main/resources/sarcio.mixins.json @@ -85,6 +85,7 @@ "bugfix.gui.AddServerScreenMixin", "bugfix.gui.BookEditScreenMixin", "bugfix.gui.ScreenMixin", + "bugfix.gui.LanguageSelectionListWidgetMixin", "bugfix.render.entity.StuckArrowLayerMixin", "bugfix.render.entity.CreeperChargeLayerMixin", "bugfix.render.entity.ItemInHandLayerMixin", From 66f4eb47e215a4a8f805f1fc023b6e799df7f374 Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Fri, 2 Oct 2026 07:19:57 -0400 Subject: [PATCH 05/12] fix MC-149308 and add instant world swapping (#28) --- .../entity/FishingBobberRendererMixin.java | 7 +++++++ .../render/entity/ItemSpriteRendererMixin.java | 18 ++++++++++++++++++ .../tweaks/ClientPlayNetworkHandlerMixin.java | 16 ++++++++++++++++ .../sarcio/mixin/tweaks/MinecraftMixin.java | 7 +++++++ src/main/resources/sarcio.mixins.json | 2 ++ 5 files changed, 50 insertions(+) create mode 100644 src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/ItemSpriteRendererMixin.java create mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/ClientPlayNetworkHandlerMixin.java diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/FishingBobberRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/FishingBobberRendererMixin.java index c3512e3..a5f7786 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/FishingBobberRendererMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/FishingBobberRendererMixin.java @@ -10,6 +10,13 @@ @Mixin(FishingBobberRenderer.class) public class FishingBobberRendererMixin { + @Inject(method = "render(Lnet/minecraft/entity/FishingBobberEntity;DDDFF)V", at = @At("HEAD"), cancellable = true) + private void sarcio$delayBobberRendering(FishingBobberEntity entity, double dx, double dy, double dz, float yaw, float tickDelta, CallbackInfo ci) { + if (entity.ticks < 2 && dx * dx + dy * dy + dz * dz < 12.25) { + ci.cancel(); + } + } + @Inject(method = "render(Lnet/minecraft/entity/FishingBobberEntity;DDDFF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/platform/GlStateManager;translatef(FFF)V")) private void sarcio$restoreAlpha(FishingBobberEntity entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) { GlStateManager.enableAlphaTest(); diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/ItemSpriteRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/ItemSpriteRendererMixin.java new file mode 100644 index 0000000..74a5bd7 --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/ItemSpriteRendererMixin.java @@ -0,0 +1,18 @@ +package dev.rdh.sarcio.mixin.bugfix.render.entity; + +import net.minecraft.client.render.entity.ItemSpriteRenderer; +import net.minecraft.entity.Entity; +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.CallbackInfo; + +@Mixin(ItemSpriteRenderer.class) +public class ItemSpriteRendererMixin { + @Inject(method = "render", at = @At("HEAD"), cancellable = true) + private void sarcio$delayProjectileRendering(T entity, double dx, double dy, double dz, float yaw, float tickDelta, CallbackInfo ci) { + if (entity.ticks < 2 && dx * dx + dy * dy + dz * dz < 12.25) { + ci.cancel(); + } + } +} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/ClientPlayNetworkHandlerMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/ClientPlayNetworkHandlerMixin.java new file mode 100644 index 0000000..dbdf15c --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/tweaks/ClientPlayNetworkHandlerMixin.java @@ -0,0 +1,16 @@ +package dev.rdh.sarcio.mixin.tweaks; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.network.handler.ClientPlayNetworkHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(ClientPlayNetworkHandler.class) +public class ClientPlayNetworkHandlerMixin { + @WrapWithCondition(method = "handlePlayerRespawn", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;openScreen(Lnet/minecraft/client/gui/screen/Screen;)V")) + private boolean sarcio$skipTerrainScreen(Minecraft instance, Screen screen) { + return false; + } +} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/MinecraftMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/MinecraftMixin.java index b2f0539..d851c68 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/tweaks/MinecraftMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/tweaks/MinecraftMixin.java @@ -1,6 +1,8 @@ package dev.rdh.sarcio.mixin.tweaks; import net.minecraft.client.Minecraft; +import net.minecraft.client.render.ProgressRenderer; +import net.minecraft.client.world.ClientWorld; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.twitch.ErrorTwitchStream; import net.minecraft.client.twitch.TwitchStream; @@ -34,4 +36,9 @@ public class MinecraftMixin { private boolean sarcio$removeStreamCalls(TwitchStream instance) { return false; } + + @WrapWithCondition(method = "setWorld(Lnet/minecraft/client/world/ClientWorld;Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/ProgressRenderer;progressStage(Ljava/lang/String;)V")) + private boolean sarcio$skipWorldSwapProgress(ProgressRenderer instance, String message, ClientWorld world) { + return world == null; + } } diff --git a/src/main/resources/sarcio.mixins.json b/src/main/resources/sarcio.mixins.json index e01c545..894f5a7 100644 --- a/src/main/resources/sarcio.mixins.json +++ b/src/main/resources/sarcio.mixins.json @@ -105,6 +105,7 @@ "bugfix.render.RenderItemGlintMixin", "bugfix.render.entity.EntityRendererMixin", "bugfix.render.entity.FishingBobberRendererMixin", + "bugfix.render.entity.ItemSpriteRendererMixin", "bugfix.render.entity.ArrowRendererMixin", "bugfix.render.EntityRenderDispatcherMixin", "bugfix.render.entity.WitherRendererMixin", @@ -136,6 +137,7 @@ "textures.HttpTextureMixin", "tweaks.TitleScreenMixin", "tweaks.MinecraftMixin", + "tweaks.ClientPlayNetworkHandlerMixin", "tweaks.ServerListEntryWidgetMixin", "tweaks.ConnectionMixin", "tweaks.MultiplayerServerListPingerMixin", From 531462cb9438ba77ed00aa9f29f3f7981157cbaf Mon Sep 17 00:00:00 2001 From: Julian Chang Date: Fri, 2 Oct 2026 07:47:22 -0400 Subject: [PATCH 06/12] correct fixes --- .../entity/RemoteClientPlayerEntityMixin.java | 16 --------------- .../render/TextRendererMixin.java | 2 +- .../world/WorldCollisionMixin.java | 8 +------- .../ClientPlayNetworkHandlerMixin.java | 4 ++-- .../render/entity/EntityRendererMixin.java | 5 +++++ .../render/tileentity/SkullRendererMixin.java | 5 +++++ .../textures/HttpTextureDownloaderMixin.java | 20 +++++++++++++++++++ src/main/resources/sarcio.mixins.json | 2 +- 8 files changed, 35 insertions(+), 27 deletions(-) delete mode 100644 src/main/java/dev/rdh/sarcio/mixin/allocation_rate/entity/RemoteClientPlayerEntityMixin.java create mode 100644 src/main/java/dev/rdh/sarcio/mixin/textures/HttpTextureDownloaderMixin.java diff --git a/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/entity/RemoteClientPlayerEntityMixin.java b/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/entity/RemoteClientPlayerEntityMixin.java deleted file mode 100644 index df42f17..0000000 --- a/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/entity/RemoteClientPlayerEntityMixin.java +++ /dev/null @@ -1,16 +0,0 @@ -package dev.rdh.sarcio.mixin.allocation_rate.entity; - -import net.minecraft.client.entity.living.player.RemoteClientPlayerEntity; -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.CallbackInfo; - -@Mixin(RemoteClientPlayerEntity.class) -abstract class RemoteClientPlayerEntityMixin { - // the server already sends this stuff for remote players - @Inject(method = "mobTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/living/player/RemoteClientPlayerEntity;updateArmSwing()V", shift = At.Shift.AFTER), cancellable = true) - private void sarcio$skipRemoteAnimations(CallbackInfo ci) { - ci.cancel(); - } -} diff --git a/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/render/TextRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/render/TextRendererMixin.java index 6845a84..f227794 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/render/TextRendererMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/render/TextRendererMixin.java @@ -18,7 +18,7 @@ private String skipWholeStringLowercase(String text, Locale locale) { @Redirect( method = "drawLayer(Ljava/lang/String;Z)V", - at = @At(value = "INVOKE", target = "Ljava/lang/String;indexOf(I)I") + at = @At(value = "INVOKE", target = "Ljava/lang/String;indexOf(I)I", ordinal = 0) ) private int findFormattingCode(String codes, int code) { return codes.indexOf(Character.toLowerCase((char)code)); diff --git a/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/world/WorldCollisionMixin.java b/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/world/WorldCollisionMixin.java index 21a68cc..e58d318 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/world/WorldCollisionMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/allocation_rate/world/WorldCollisionMixin.java @@ -5,11 +5,7 @@ import java.util.List; import net.minecraft.block.Blocks; import net.minecraft.block.state.BlockState; -import net.minecraft.client.entity.particle.Particle; import net.minecraft.entity.Entity; -import net.minecraft.entity.FallingBlockEntity; -import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.PrimedTntEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; @@ -66,9 +62,7 @@ public List getCollisions(Entity entity, Box box) { } } - if (!(entity instanceof PrimedTntEntity || entity instanceof FallingBlockEntity || entity instanceof ItemEntity || entity instanceof Particle)) { - EntityQuery.addCollisionBoxes((World) (Object) this, entity, box.grown(0.25, 0.25, 0.25), box, boxes); - } + EntityQuery.addCollisionBoxes((World) (Object) this, entity, box.grown(0.25, 0.25, 0.25), box, boxes); return boxes; } diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/network/ClientPlayNetworkHandlerMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/network/ClientPlayNetworkHandlerMixin.java index ed49711..bb79154 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/network/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/network/ClientPlayNetworkHandlerMixin.java @@ -23,10 +23,10 @@ public class ClientPlayNetworkHandlerMixin { return false; } - @Inject(method = "", at = @At("TAIL")) + @Inject(method = "handleLogin", at = @At("TAIL")) private void sarcio$clearTitles(CallbackInfo ci) { GameGui ingameGUI = Minecraft.getInstance().gui; - ingameGUI.setTitles("", "", -1, -1, -1); + ingameGUI.setTitles(null, null, -1, -1, -1); ingameGUI.resetTitleTimes(); } } diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/EntityRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/EntityRendererMixin.java index f9e9181..3e37ad3 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/EntityRendererMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/entity/EntityRendererMixin.java @@ -16,4 +16,9 @@ public class EntityRendererMixin { GlStateManager.blendFunc(770, 771); GlStateManager.enableAlphaTest(); } + + @Inject(method = "renderOnFire", at = @At("RETURN")) + private void sarcio$resetBlending(CallbackInfo ci) { + GlStateManager.disableBlend(); + } } diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/tileentity/SkullRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/tileentity/SkullRendererMixin.java index 46e4649..83b6afa 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/tileentity/SkullRendererMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/tileentity/SkullRendererMixin.java @@ -15,4 +15,9 @@ public class SkullRendererMixin { GlStateManager.enableBlend(); GlStateManager.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); } + + @Inject(method = "render(FFFLnet/minecraft/util/math/Direction;FILcom/mojang/authlib/GameProfile;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/model/Model;render(Lnet/minecraft/entity/Entity;FFFFFF)V", shift = At.Shift.AFTER)) + private void sarcio$disableBlending(CallbackInfo ci) { + GlStateManager.disableBlend(); + } } diff --git a/src/main/java/dev/rdh/sarcio/mixin/textures/HttpTextureDownloaderMixin.java b/src/main/java/dev/rdh/sarcio/mixin/textures/HttpTextureDownloaderMixin.java new file mode 100644 index 0000000..da8ffdb --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/textures/HttpTextureDownloaderMixin.java @@ -0,0 +1,20 @@ +package dev.rdh.sarcio.mixin.textures; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(targets = "net.minecraft.client.render.texture.HttpTexture$34366662") +abstract class HttpTextureDownloaderMixin { + @WrapOperation(method = "run", at = @At(value = "INVOKE", target = "Ljava/net/URL;openConnection(Ljava/net/Proxy;)Ljava/net/URLConnection;")) + private URLConnection addTimeouts(URL url, Proxy proxy, Operation original) { + URLConnection connection = original.call(url, proxy); + connection.setConnectTimeout(10_000); + connection.setReadTimeout(10_000); + return connection; + } +} diff --git a/src/main/resources/sarcio.mixins.json b/src/main/resources/sarcio.mixins.json index 894f5a7..47f044b 100644 --- a/src/main/resources/sarcio.mixins.json +++ b/src/main/resources/sarcio.mixins.json @@ -56,7 +56,6 @@ "client": [ "allocation_rate.entity.EntityDisplayNameMixin", "allocation_rate.render.ParticleManagerMixin", - "allocation_rate.entity.RemoteClientPlayerEntityMixin", "allocation_rate.render.TextRendererMixin", "allocation_rate.render.AbstractArmorLayerMixin", "allocation_rate.render.LivingEntityRendererMixin", @@ -135,6 +134,7 @@ "textures.TextureManagerMixin", "textures.TextureUtilMixin", "textures.HttpTextureMixin", + "textures.HttpTextureDownloaderMixin", "tweaks.TitleScreenMixin", "tweaks.MinecraftMixin", "tweaks.ClientPlayNetworkHandlerMixin", From c1bbb604f82c1d8e2c3c7216c290093c16ad9344 Mon Sep 17 00:00:00 2001 From: Julian Chang Date: Fri, 2 Oct 2026 07:52:10 -0400 Subject: [PATCH 07/12] fix mappings --- .../mixin/memory_management/network/NetHandlerPlayMixin.java | 2 +- .../network/PacketThreadUtilRunnableMixin.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/NetHandlerPlayMixin.java b/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/NetHandlerPlayMixin.java index b5cdea2..aba575c 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/NetHandlerPlayMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/NetHandlerPlayMixin.java @@ -13,7 +13,7 @@ @Mixin({ClientPlayNetworkHandler.class, ServerPlayNetworkHandler.class}) public class NetHandlerPlayMixin { - @WrapMethod(method = {"handleCustomPayload", "processVanilla250Packet"}) + @WrapMethod(method = "handleCustomPayload") private void releaseCustomPayload(@Coerce Packet packet, Operation original) { original.call(packet); PacketByteBuf data = switch (packet) { diff --git a/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/PacketThreadUtilRunnableMixin.java b/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/PacketThreadUtilRunnableMixin.java index 7a8859a..4821aec 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/PacketThreadUtilRunnableMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/memory_management/network/PacketThreadUtilRunnableMixin.java @@ -12,11 +12,11 @@ @Mixin(targets = "net.minecraft.network.PacketUtils$48215440") abstract class PacketThreadUtilRunnableMixin { - @Shadow(remap = false, aliases = "f_54564080") @Final private Packet packet; + @Shadow(remap = false) @Final private Packet f_54564080; // packet, unnamed in feather @Inject(method = "run", at = @At("HEAD"), cancellable = true) private void dropPacketsWithoutWorld(CallbackInfo ci) { - if (Minecraft.getInstance().world == null && !(this.packet instanceof LoginS2CPacket)) { + if (Minecraft.getInstance().world == null && !(this.f_54564080 instanceof LoginS2CPacket)) { ci.cancel(); } } From 9e5bc840b8beb1e5d37ff7e9fe91571ba8d37deb Mon Sep 17 00:00:00 2001 From: Julian Chang Date: Fri, 2 Oct 2026 08:05:40 -0400 Subject: [PATCH 08/12] force on fullbright --- src/main/java/dev/rdh/sarcio/SarcioMod.java | 6 +++ .../ArgentumChunkRenderContextMixin.java | 19 ++++++++++ .../tweaks/fullbright/GameRendererMixin.java | 26 +++++++++++++ .../tweaks/fullbright/WorldChunkMixin.java | 21 +++++++++++ .../mixin/tweaks/fullbright/WorldMixin.java | 37 +++++++++++++++++++ src/main/resources/sarcio.mixins.json | 4 ++ 6 files changed, 113 insertions(+) create mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java create mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java create mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java create mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java diff --git a/src/main/java/dev/rdh/sarcio/SarcioMod.java b/src/main/java/dev/rdh/sarcio/SarcioMod.java index 53eabfe..6cfdabc 100644 --- a/src/main/java/dev/rdh/sarcio/SarcioMod.java +++ b/src/main/java/dev/rdh/sarcio/SarcioMod.java @@ -4,6 +4,7 @@ import net.fabricmc.api.ModInitializer; import net.minecraft.client.Minecraft; +import net.minecraft.server.MinecraftServer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -35,4 +36,9 @@ public void onInitialize() { } } } + + public static boolean isFullbright() { + MinecraftServer server = MinecraftServer.getInstance(); + return server == null || !server.isOnSameThread(); + } } diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java new file mode 100644 index 0000000..a56845b --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java @@ -0,0 +1,19 @@ +package dev.rdh.sarcio.mixin.tweaks.fullbright; + +import dev.rdh.sarcio.SarcioMod; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Pseudo +@Mixin(targets = "dev.rdh.argentum.impl.world.cloned.ChunkRenderContext", remap = false) +public class ArgentumChunkRenderContextMixin { + @Inject(method = "getBrightness", at = @At("HEAD"), cancellable = true) + private void sarcio$fullbright(CallbackInfoReturnable cir) { + if (SarcioMod.isFullbright()) { + cir.setReturnValue(15); + } + } +} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java new file mode 100644 index 0000000..ecfcf1e --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java @@ -0,0 +1,26 @@ +package dev.rdh.sarcio.mixin.tweaks.fullbright; + +import net.minecraft.client.render.GameRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(GameRenderer.class) +public class GameRendererMixin { + @Unique + private boolean sarcio$createdLightmap; + + @Inject(method = "updateLightMap", at = @At("HEAD"), cancellable = true) + private void sarcio$cancelLightmapBuild(CallbackInfo ci) { + if (this.sarcio$createdLightmap) { + ci.cancel(); + } + } + + @Inject(method = "updateLightMap", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;pop()V")) + private void sarcio$setCreatedLightmap(CallbackInfo ci) { + this.sarcio$createdLightmap = true; + } +} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java new file mode 100644 index 0000000..32d25b2 --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java @@ -0,0 +1,21 @@ +package dev.rdh.sarcio.mixin.tweaks.fullbright; + +import dev.rdh.sarcio.SarcioMod; +import net.minecraft.world.chunk.WorldChunk; +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(WorldChunk.class) +public class WorldChunkMixin { + @Inject(method = { + "getLight(Lnet/minecraft/world/LightType;Lnet/minecraft/util/math/BlockPos;)I", + "getLight(Lnet/minecraft/util/math/BlockPos;I)I" + }, at = @At("HEAD"), cancellable = true) + private void sarcio$fullbright(CallbackInfoReturnable cir) { + if (SarcioMod.isFullbright()) { + cir.setReturnValue(15); + } + } +} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java new file mode 100644 index 0000000..8287f49 --- /dev/null +++ b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java @@ -0,0 +1,37 @@ +package dev.rdh.sarcio.mixin.tweaks.fullbright; + +import dev.rdh.sarcio.SarcioMod; +import net.minecraft.client.Minecraft; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(World.class) +public class WorldMixin { + @Inject(method = "updateLight", at = @At("HEAD"), cancellable = true) + private void sarcio$updateLight_fullbright(CallbackInfoReturnable cir) { + if (sarcio$checkFullbright()) { + cir.setReturnValue(true); + } + } + + @Inject(method = { + "getBrightness(Lnet/minecraft/world/LightType;Lnet/minecraft/util/math/BlockPos;)I", + "getRawBrightness(Lnet/minecraft/util/math/BlockPos;)I", + "getRawBrightness(Lnet/minecraft/util/math/BlockPos;Z)I", + "getActualLight", "findLight" + }, at = @At("HEAD"), cancellable = true) + private void sarcio$getLight_fullbright(CallbackInfoReturnable cir) { + if (sarcio$checkFullbright()) { + cir.setReturnValue(15); + } + } + + @Unique + private static boolean sarcio$checkFullbright() { + return SarcioMod.isFullbright() && Minecraft.getInstance().isOnSameThread(); + } +} diff --git a/src/main/resources/sarcio.mixins.json b/src/main/resources/sarcio.mixins.json index 47f044b..a5bc862 100644 --- a/src/main/resources/sarcio.mixins.json +++ b/src/main/resources/sarcio.mixins.json @@ -137,6 +137,10 @@ "textures.HttpTextureDownloaderMixin", "tweaks.TitleScreenMixin", "tweaks.MinecraftMixin", + "tweaks.fullbright.ArgentumChunkRenderContextMixin", + "tweaks.fullbright.GameRendererMixin", + "tweaks.fullbright.WorldMixin", + "tweaks.fullbright.WorldChunkMixin", "tweaks.ClientPlayNetworkHandlerMixin", "tweaks.ServerListEntryWidgetMixin", "tweaks.ConnectionMixin", From 56e40bfc83e2af37f83d254e5b33101f97a32876 Mon Sep 17 00:00:00 2001 From: Julian Chang Date: Fri, 2 Oct 2026 08:06:39 -0400 Subject: [PATCH 09/12] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c1c8387..bc83901 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.jvmargs=-Xmx2G org.gradle.configuration-cache=true -mod_version=1.0.0 \ No newline at end of file +mod_version=1.0.1 \ No newline at end of file From e1024a1d2fefd27cc7395667c814df7b29cad2d8 Mon Sep 17 00:00:00 2001 From: Julian Chang Date: Fri, 2 Oct 2026 11:41:48 -0400 Subject: [PATCH 10/12] fix --- src/main/java/dev/rdh/sarcio/SarcioMod.java | 1 + .../mixin/bugfix/render/GameRendererMixin.java | 8 +++++++- .../sarcio/mixin/bugfix/world/WorldMixin.java | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/rdh/sarcio/SarcioMod.java b/src/main/java/dev/rdh/sarcio/SarcioMod.java index 6cfdabc..3ea51fa 100644 --- a/src/main/java/dev/rdh/sarcio/SarcioMod.java +++ b/src/main/java/dev/rdh/sarcio/SarcioMod.java @@ -11,6 +11,7 @@ public class SarcioMod implements ModInitializer { public static final Logger LOGGER = LogManager.getLogger(); public static final SarcioConfig CONFIG = SarcioConfig.load(); + public static boolean cameraRayTrace; @Override public void onInitialize() { diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java index ac4f11f..a089096 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/render/GameRendererMixin.java @@ -4,6 +4,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; import com.llamalad7.mixinextras.sugar.ref.LocalFloatRef; +import dev.rdh.sarcio.SarcioMod; import net.minecraft.client.Minecraft; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.world.ClientWorld; @@ -43,6 +44,11 @@ public class GameRendererMixin { @WrapOperation(method = "transformCamera", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;rayTrace(Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/world/HitResult;")) private HitResult sarcio$ignoreCollisionlessBlocks(ClientWorld instance, Vec3d start, Vec3d end, Operation original) { - return instance.rayTrace(start, end, false, true, false); + SarcioMod.cameraRayTrace = true; + try { + return instance.rayTrace(start, end, false, true, false); + } finally { + SarcioMod.cameraRayTrace = false; + } } } diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java index b894d3b..311cdc8 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java @@ -1,10 +1,19 @@ package dev.rdh.sarcio.mixin.bugfix.world; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.rdh.sarcio.SarcioMod; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import net.minecraft.block.Block; +import net.minecraft.block.GlassBlock; +import net.minecraft.block.PaneBlock; +import net.minecraft.block.StainedGlassBlock; +import net.minecraft.block.state.BlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.world.LightType; import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -19,8 +28,17 @@ @Mixin(World.class) public abstract class WorldMixin { @Shadow public abstract boolean isAreaLoaded(BlockPos center, int radius, boolean allowEmpty); + @Shadow @Final public boolean isClient; @Unique private int sarcio$range = 17; + @WrapOperation(method = "rayTrace(Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/math/Vec3d;ZZZ)Lnet/minecraft/world/HitResult;", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;canRayTrace(Lnet/minecraft/block/state/BlockState;Z)Z")) + private boolean sarcio$cameraIgnoresGlass(Block block, BlockState state, boolean stopOnLiquid, Operation original) { + if (SarcioMod.cameraRayTrace && this.isClient && (block instanceof GlassBlock || block instanceof StainedGlassBlock || block instanceof PaneBlock)) { + return false; + } + return original.call(block, state, stopOnLiquid); + } + @Inject(method = "updateLight", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V", ordinal = 0)) private void sarcio$updateRange(LightType lightType, BlockPos pos, CallbackInfoReturnable cir) { this.sarcio$range = this.isAreaLoaded(pos, 18, false) ? 17 : 15; From 58b7dace5bc200e0f9c41e5a4cd8b0973c0fb27e Mon Sep 17 00:00:00 2001 From: Julian Chang Date: Fri, 2 Oct 2026 11:42:10 -0400 Subject: [PATCH 11/12] 1.0.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index bc83901..c5308cc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.jvmargs=-Xmx2G org.gradle.configuration-cache=true -mod_version=1.0.1 \ No newline at end of file +mod_version=1.0.2 \ No newline at end of file From 9c01b25a756397174e46586b235ceb2e5b7c545d Mon Sep 17 00:00:00 2001 From: Julian Chang Date: Fri, 2 Oct 2026 11:44:04 -0400 Subject: [PATCH 12/12] Revert "force on fullbright" This reverts commit 9e5bc840b8beb1e5d37ff7e9fe91571ba8d37deb. --- src/main/java/dev/rdh/sarcio/SarcioMod.java | 6 --- .../ArgentumChunkRenderContextMixin.java | 19 ---------- .../tweaks/fullbright/GameRendererMixin.java | 26 ------------- .../tweaks/fullbright/WorldChunkMixin.java | 21 ----------- .../mixin/tweaks/fullbright/WorldMixin.java | 37 ------------------- src/main/resources/sarcio.mixins.json | 4 -- 6 files changed, 113 deletions(-) delete mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java delete mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java delete mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java delete mode 100644 src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java diff --git a/src/main/java/dev/rdh/sarcio/SarcioMod.java b/src/main/java/dev/rdh/sarcio/SarcioMod.java index 3ea51fa..cee1370 100644 --- a/src/main/java/dev/rdh/sarcio/SarcioMod.java +++ b/src/main/java/dev/rdh/sarcio/SarcioMod.java @@ -4,7 +4,6 @@ import net.fabricmc.api.ModInitializer; import net.minecraft.client.Minecraft; -import net.minecraft.server.MinecraftServer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -37,9 +36,4 @@ public void onInitialize() { } } } - - public static boolean isFullbright() { - MinecraftServer server = MinecraftServer.getInstance(); - return server == null || !server.isOnSameThread(); - } } diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java deleted file mode 100644 index a56845b..0000000 --- a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/ArgentumChunkRenderContextMixin.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.rdh.sarcio.mixin.tweaks.fullbright; - -import dev.rdh.sarcio.SarcioMod; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Pseudo -@Mixin(targets = "dev.rdh.argentum.impl.world.cloned.ChunkRenderContext", remap = false) -public class ArgentumChunkRenderContextMixin { - @Inject(method = "getBrightness", at = @At("HEAD"), cancellable = true) - private void sarcio$fullbright(CallbackInfoReturnable cir) { - if (SarcioMod.isFullbright()) { - cir.setReturnValue(15); - } - } -} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java deleted file mode 100644 index ecfcf1e..0000000 --- a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/GameRendererMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.rdh.sarcio.mixin.tweaks.fullbright; - -import net.minecraft.client.render.GameRenderer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(GameRenderer.class) -public class GameRendererMixin { - @Unique - private boolean sarcio$createdLightmap; - - @Inject(method = "updateLightMap", at = @At("HEAD"), cancellable = true) - private void sarcio$cancelLightmapBuild(CallbackInfo ci) { - if (this.sarcio$createdLightmap) { - ci.cancel(); - } - } - - @Inject(method = "updateLightMap", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;pop()V")) - private void sarcio$setCreatedLightmap(CallbackInfo ci) { - this.sarcio$createdLightmap = true; - } -} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java deleted file mode 100644 index 32d25b2..0000000 --- a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldChunkMixin.java +++ /dev/null @@ -1,21 +0,0 @@ -package dev.rdh.sarcio.mixin.tweaks.fullbright; - -import dev.rdh.sarcio.SarcioMod; -import net.minecraft.world.chunk.WorldChunk; -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(WorldChunk.class) -public class WorldChunkMixin { - @Inject(method = { - "getLight(Lnet/minecraft/world/LightType;Lnet/minecraft/util/math/BlockPos;)I", - "getLight(Lnet/minecraft/util/math/BlockPos;I)I" - }, at = @At("HEAD"), cancellable = true) - private void sarcio$fullbright(CallbackInfoReturnable cir) { - if (SarcioMod.isFullbright()) { - cir.setReturnValue(15); - } - } -} diff --git a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java b/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java deleted file mode 100644 index 8287f49..0000000 --- a/src/main/java/dev/rdh/sarcio/mixin/tweaks/fullbright/WorldMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -package dev.rdh.sarcio.mixin.tweaks.fullbright; - -import dev.rdh.sarcio.SarcioMod; -import net.minecraft.client.Minecraft; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(World.class) -public class WorldMixin { - @Inject(method = "updateLight", at = @At("HEAD"), cancellable = true) - private void sarcio$updateLight_fullbright(CallbackInfoReturnable cir) { - if (sarcio$checkFullbright()) { - cir.setReturnValue(true); - } - } - - @Inject(method = { - "getBrightness(Lnet/minecraft/world/LightType;Lnet/minecraft/util/math/BlockPos;)I", - "getRawBrightness(Lnet/minecraft/util/math/BlockPos;)I", - "getRawBrightness(Lnet/minecraft/util/math/BlockPos;Z)I", - "getActualLight", "findLight" - }, at = @At("HEAD"), cancellable = true) - private void sarcio$getLight_fullbright(CallbackInfoReturnable cir) { - if (sarcio$checkFullbright()) { - cir.setReturnValue(15); - } - } - - @Unique - private static boolean sarcio$checkFullbright() { - return SarcioMod.isFullbright() && Minecraft.getInstance().isOnSameThread(); - } -} diff --git a/src/main/resources/sarcio.mixins.json b/src/main/resources/sarcio.mixins.json index a5bc862..47f044b 100644 --- a/src/main/resources/sarcio.mixins.json +++ b/src/main/resources/sarcio.mixins.json @@ -137,10 +137,6 @@ "textures.HttpTextureDownloaderMixin", "tweaks.TitleScreenMixin", "tweaks.MinecraftMixin", - "tweaks.fullbright.ArgentumChunkRenderContextMixin", - "tweaks.fullbright.GameRendererMixin", - "tweaks.fullbright.WorldMixin", - "tweaks.fullbright.WorldChunkMixin", "tweaks.ClientPlayNetworkHandlerMixin", "tweaks.ServerListEntryWidgetMixin", "tweaks.ConnectionMixin",