diff --git a/gradle.properties b/gradle.properties index c1c8387..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.0 \ No newline at end of file +mod_version=1.0.2 \ No newline at end of file diff --git a/src/main/java/dev/rdh/sarcio/SarcioMod.java b/src/main/java/dev/rdh/sarcio/SarcioMod.java index 53eabfe..cee1370 100644 --- a/src/main/java/dev/rdh/sarcio/SarcioMod.java +++ b/src/main/java/dev/rdh/sarcio/SarcioMod.java @@ -10,6 +10,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/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/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/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/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(); + } } 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..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 @@ -1,12 +1,18 @@ 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 dev.rdh.sarcio.SarcioMod; 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 +41,14 @@ 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) { + 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/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/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/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/bugfix/world/WorldMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java index 05c6a28..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,21 +1,44 @@ 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; 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); + @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; @@ -30,4 +53,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)); + } } 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(); } } 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/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.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..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", @@ -85,6 +84,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", @@ -104,6 +104,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", @@ -133,8 +134,10 @@ "textures.TextureManagerMixin", "textures.TextureUtilMixin", "textures.HttpTextureMixin", + "textures.HttpTextureDownloaderMixin", "tweaks.TitleScreenMixin", "tweaks.MinecraftMixin", + "tweaks.ClientPlayNetworkHandlerMixin", "tweaks.ServerListEntryWidgetMixin", "tweaks.ConnectionMixin", "tweaks.MultiplayerServerListPingerMixin",