diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/mixin')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java | 12 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java | 31 |
2 files changed, 43 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java index 7f1320c8..afe76598 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java @@ -13,6 +13,8 @@ import net.minecraft.entity.ItemEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.network.packet.s2c.play.ParticleS2CPacket; import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; +import net.minecraft.util.Identifier; + import org.slf4j.Logger; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -46,6 +48,16 @@ public abstract class ClientPlayNetworkHandlerMixin { private boolean skyblocker$cancelTeamWarning(Logger instance, String format, Object... arg) { return !Utils.isOnHypixel(); } + + @WrapWithCondition(method = { "onScoreboardScoreUpdate", "onScoreboardScoreReset" }, at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) + private boolean skyblocker$cancelUnknownScoreboardObjectiveWarnings(Logger instance, String message, Object objectiveName) { + return !Utils.isOnHypixel(); + } + + @WrapWithCondition(method = "warnOnUnknownPayload", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) + private boolean skyblocker$dropBadlionPacketWarnings(Logger instance, String message, Object identifier) { + return !(Utils.isOnHypixel() && ((Identifier) identifier).getNamespace().equals("badlion")); + } @Inject(method = "onParticle", at = @At("RETURN")) private void skyblocker$onParticle(ParticleS2CPacket packet) { diff --git a/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java index 29889c28..df0c058e 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java @@ -1,17 +1,30 @@ package de.hysky.skyblocker.mixin; import de.hysky.skyblocker.skyblock.item.HotbarSlotLock; +import de.hysky.skyblocker.utils.JoinWorldPlaceholderScreen; +import de.hysky.skyblocker.utils.ReconfiguringPlaceholderScreen; import de.hysky.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.DownloadingTerrainScreen; +import net.minecraft.client.gui.screen.ReconfiguringScreen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import dev.cbyrne.betterinject.annotations.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(MinecraftClient.class) public abstract class MinecraftClientMixin { + + @Shadow + @Nullable + public abstract ClientPlayNetworkHandler getNetworkHandler(); + @Shadow @Nullable public ClientPlayerEntity player; @@ -22,4 +35,22 @@ public abstract class MinecraftClientMixin { HotbarSlotLock.handleInputEvents(player); } } + + //Remove Downloading Terrain Screen and Reconfiguring Screen + @ModifyVariable(at = @At("HEAD"), method = "setScreen", ordinal = 0, argsOnly = true) + public Screen modifySetScreen(Screen screen) { + if (Utils.isOnSkyblock()) { + if (screen instanceof DownloadingTerrainScreen) { + return null; + } else if (screen instanceof ReconfiguringScreen && this.getNetworkHandler() != null) { + return new ReconfiguringPlaceholderScreen(this.getNetworkHandler().getConnection()); + } + } + return screen; + } + + @ModifyArg(method = "joinWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;reset(Lnet/minecraft/client/gui/screen/Screen;)V"), index = 0) + private Screen modifyJoinWorld(Screen screen) { + return Utils.isOnSkyblock() ? new JoinWorldPlaceholderScreen() : screen; + } }
\ No newline at end of file |