diff options
Diffstat (limited to 'src/main/java/me/xmrvizzy')
23 files changed, 124 insertions, 168 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java index 0c27704d..7d187caa 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.gui; import com.mojang.blaze3d.systems.RenderSystem; -import me.xmrvizzy.skyblocker.mixin.HandledScreenAccessor; +import me.xmrvizzy.skyblocker.mixin.accessor.HandledScreenAccessor; import me.xmrvizzy.skyblocker.skyblock.dungeon.CroesusHelper; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.ColorTerminal; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.OrderTerminal; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java index 1d8b6565..2d109524 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java @@ -1,6 +1,8 @@ package me.xmrvizzy.skyblocker.mixin; import com.llamalad7.mixinextras.injector.WrapWithCondition; + +import dev.cbyrne.betterinject.annotations.Inject; import me.xmrvizzy.skyblocker.skyblock.FishingHelper; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.network.ClientPlayNetworkHandler; @@ -8,27 +10,25 @@ import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; import org.slf4j.Logger; 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(ClientPlayNetworkHandler.class) public abstract class ClientPlayNetworkHandlerMixin { @Inject(method = "onPlaySound", at = @At("RETURN")) - private void skyblocker$onPlaySound(PlaySoundS2CPacket packet, CallbackInfo ci) { + private void skyblocker$onPlaySound(PlaySoundS2CPacket packet) { FishingHelper.onSound(packet); } - @WrapWithCondition(method = "onEntityPassengersSet", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;)V")) + @WrapWithCondition(method = "onEntityPassengersSet", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;)V", remap = false)) private boolean skyblocker$cancelEntityPassengersWarning(Logger instance, String msg) { return !Utils.isOnHypixel(); } - @WrapWithCondition(method = "onPlayerList", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V")) + @WrapWithCondition(method = "onPlayerList", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) private boolean skyblocker$cancelPlayerListWarning(Logger instance, String format, Object arg) { return !Utils.isOnHypixel(); } - @WrapWithCondition(method = "onTeam", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;[Ljava/lang/Object;)V")) + @WrapWithCondition(method = "onTeam", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;[Ljava/lang/Object;)V", remap = false)) private boolean skyblocker$cancelTeamWarning(Logger instance, String format, Object... arg) { return !Utils.isOnHypixel(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java index e48e725e..ee1fc5b8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java @@ -1,17 +1,16 @@ package me.xmrvizzy.skyblocker.mixin; import com.mojang.authlib.GameProfile; + +import dev.cbyrne.betterinject.annotations.Inject; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.skyblock.rift.HealingMelonIndicator; import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.world.ClientWorld; 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; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ClientPlayerEntity.class) @@ -21,12 +20,12 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity } @Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true) - public void skyblocker$dropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable<Boolean> cir) { + public void skyblocker$dropSelectedItem(CallbackInfoReturnable<Boolean> cir) { if (Utils.isOnSkyblock()) HotbarSlotLock.handleDropSelectedItem(this.getInventory().selectedSlot, cir); } - @Inject(method = "updateHealth", at = @At("HEAD")) - public void skyblocker$updateHealth(float health, CallbackInfo info) { - HealingMelonIndicator.updateHealth(MinecraftClient.getInstance()); + @Inject(method = "updateHealth", at = @At("RETURN")) + public void skyblocker$updateHealth() { + HealingMelonIndicator.updateHealth(); } }
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java index a8a490b8..cd0ccefd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java @@ -1,40 +1,36 @@ package me.xmrvizzy.skyblocker.mixin; -import java.awt.Color; -import java.util.regex.Pattern; - -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Final; -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.callback.CallbackInfo; - import com.mojang.blaze3d.systems.RenderSystem; +import dev.cbyrne.betterinject.annotations.Arg; +import dev.cbyrne.betterinject.annotations.Inject; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.ItemUtils; import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.util.math.ColorHelper; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import java.awt.*; +import java.util.regex.Pattern; @Mixin(DrawContext.class) public abstract class DrawContextMixin { - @Shadow @Final private MatrixStack matrices; - - @Shadow - public void fill(RenderLayer layer, int x1, int x2, int y1, int y2, int color) { - } - - @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) - public void skyblocker$renderItemBar(TextRenderer textRenderer, ItemStack stack, int x, int y, @Nullable String countOverride, CallbackInfo ci) { + @Shadow + @Final + private MatrixStack matrices; + + @Shadow + public abstract void fill(RenderLayer layer, int x1, int x2, int y1, int y2, int color); + @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) + public void skyblocker$renderItemBar(@Arg ItemStack stack, @Arg(ordinal = 0) int x, @Arg(ordinal = 1) int y) { if (Utils.isOnSkyblock() && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) { if (!stack.isEmpty()) { NbtCompound tag = stack.getNbt(); @@ -42,7 +38,7 @@ public abstract class DrawContextMixin { if (tag.getCompound("ExtraAttributes").contains("drill_fuel")) { float current = 3000.0F; float max = 3000.0F; - + for (String line : ItemUtils.getTooltipStrings(stack)) { if (line.contains("Fuel: ")) { String clear = Pattern.compile("[^0-9 /]").matcher(line).replaceAll("").trim(); @@ -52,17 +48,17 @@ public abstract class DrawContextMixin { break; } } - + matrices.push(); matrices.translate(0f, 0f, 200f); RenderSystem.disableDepthTest(); - + float hue = Math.max(0.0F, 1.0F - (max - current) / max); int width = Math.round(current / max * 13.0F); Color color = Color.getHSBColor(hue / 3.0F, 1.0F, 1.0F); this.fill(RenderLayer.getGuiOverlay(), x + 2, y + 13, x + 15, y + 15, 0xFF000000); this.fill(RenderLayer.getGuiOverlay(), x + 2, y + 13, x + 2 + width, y + 14, ColorHelper.Argb.getArgb(color.getAlpha(), color.getRed(), color.getGreen(), color.getBlue())); - + matrices.pop(); RenderSystem.enableDepthTest(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java index 761f8a68..b07390b7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java @@ -1,34 +1,38 @@ package me.xmrvizzy.skyblocker.mixin; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.FarmlandBlock; -import net.minecraft.block.ShapeContext; import net.minecraft.util.math.BlockPos; import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; +import org.spongepowered.asm.mixin.Final; 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.callback.CallbackInfoReturnable; @Mixin(FarmlandBlock.class) public abstract class FarmlandBlockMixin extends Block { + @Shadow + @Final + protected static VoxelShape SHAPE; + protected FarmlandBlockMixin(Settings settings) { super(settings); } - @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void skyblocker$onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.hitbox.oldFarmlandHitbox) - cir.setReturnValue(Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 16.0, 16.0)); + @ModifyReturnValue(method = "getOutlineShape", at = @At("RETURN")) + private VoxelShape skyblocker$replaceOutlineShape(VoxelShape original) { + return Utils.isOnSkyblock() && SkyblockerConfig.get().general.hitbox.oldFarmlandHitbox ? VoxelShapes.fullCube() : original; } @SuppressWarnings("deprecation") @Override public VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { - return Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 15.0, 16.0); + return SHAPE; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index 13272323..8a57f752 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -34,14 +34,14 @@ import java.util.Map; @Mixin(HandledScreen.class) public abstract class HandledScreenMixin extends Screen { - protected HandledScreenMixin(Text title) { - super(title); - } - @Shadow @Nullable protected Slot focusedSlot; + protected HandledScreenMixin(Text title) { + super(title); + } + @Inject(at = @At("HEAD"), method = "keyPressed") public void skyblocker$keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { if (this.client != null && this.focusedSlot != null && keyCode != 256 && !this.client.options.inventoryKey.matchesKey(keyCode, scanCode) && WikiLookup.wikiLookup.matchesKey(keyCode, scanCode)) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java index 3e2db3e0..4cda73aa 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java @@ -27,7 +27,6 @@ public abstract class InGameHudMixin { @Unique private static final Identifier SLOT_LOCK = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/slot_lock.png"); @Unique - private final StatusBarTracker statusBarTracker = SkyblockerMod.getInstance().statusBarTracker; @Unique private final FancyStatusBars statusBars = new FancyStatusBars(); @@ -38,8 +37,7 @@ public abstract class InGameHudMixin { private int scaledWidth; @Shadow - public void setOverlayMessage(Text message, boolean tinted) { - } + public abstract void setOverlayMessage(Text message, boolean tinted); @Inject(method = "setOverlayMessage(Lnet/minecraft/text/Text;Z)V", at = @At("HEAD"), cancellable = true) private void skyblocker$onSetOverlayMessage(Text message, boolean tinted, CallbackInfo ci) { @@ -62,7 +60,7 @@ public abstract class InGameHudMixin { } @Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true) - private void skyblocker$renderExperienceBar(DrawContext context, int x, CallbackInfo ci) { + private void skyblocker$renderExperienceBar(CallbackInfo ci) { if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars && !Utils.isInTheRift()) ci.cancel(); } @@ -76,12 +74,10 @@ public abstract class InGameHudMixin { if (Utils.isInDungeons() && SkyblockerConfig.get().locations.dungeons.enableMap) DungeonMap.render(context.getMatrices()); - - //RenderSystem.setShaderTexture(0, ICONS); } @Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true) - private void skyblocker$renderMountHealth(DrawContext context, CallbackInfo ci) { + private void skyblocker$renderMountHealth(CallbackInfo ci) { if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars && !Utils.isInTheRift()) ci.cancel(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java index 64a1a4fe..729124fd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.mixin; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemListWidget; import me.xmrvizzy.skyblocker.utils.Utils; @@ -7,21 +8,11 @@ import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(InventoryScreen.class) public abstract class InventoryScreenMixin { - @Redirect( - method = "<init>", - at = @At( - value = "NEW", - target = "net/minecraft/client/gui/screen/recipebook/RecipeBookWidget" - ) - ) - RecipeBookWidget skyblocker$constructor() { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.itemList.enableItemList) - return new ItemListWidget(); - else - return new RecipeBookWidget(); + @ModifyExpressionValue(method = "<init>", at = @At(value = "NEW", target = "net/minecraft/client/gui/screen/recipebook/RecipeBookWidget")) + private RecipeBookWidget skyblocker$replaceRecipeBook(RecipeBookWidget original) { + return SkyblockerConfig.get().general.itemList.enableItemList && Utils.isOnSkyblock() ? new ItemListWidget() : original; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java index 505de202..d65b93a2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java @@ -4,16 +4,15 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.OldLever; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.block.BlockState; import net.minecraft.block.LeverBlock; -import net.minecraft.block.ShapeContext; import net.minecraft.block.WallMountedBlock; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.shape.VoxelShape; -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 dev.cbyrne.betterinject.annotations.Arg; +import dev.cbyrne.betterinject.annotations.Inject; + @Mixin(LeverBlock.class) public abstract class LeverBlockMixin extends WallMountedBlock { protected LeverBlockMixin(Settings settings) { @@ -21,11 +20,10 @@ public abstract class LeverBlockMixin extends WallMountedBlock { } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void skyblocker$onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) { + public void skyblocker$onGetOutlineShape(@Arg BlockState state, CallbackInfoReturnable<VoxelShape> cir) { if (Utils.isOnSkyblock()) { VoxelShape shape = OldLever.getShape(state.get(FACE), state.get(FACING)); - if (shape != null) - cir.setReturnValue(shape); + if (shape != null) cir.setReturnValue(shape); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java index 0c1977fe..85f179e4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java @@ -8,8 +8,7 @@ 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 org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import dev.cbyrne.betterinject.annotations.Inject; @Mixin(MinecraftClient.class) public abstract class MinecraftClientMixin { @@ -18,7 +17,7 @@ public abstract class MinecraftClientMixin { public ClientPlayerEntity player; @Inject(method = "handleInputEvents", at = @At("HEAD")) - public void skyblocker$handleInputEvents(CallbackInfo ci) { + public void skyblocker$handleInputEvents() { if (Utils.isOnSkyblock()) { HotbarSlotLock.handleInputEvents(player); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index ef65190f..819ddb4b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -1,11 +1,5 @@ package me.xmrvizzy.skyblocker.mixin; -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.callback.CallbackInfo; - import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; @@ -16,41 +10,39 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.scoreboard.Scoreboard; -import net.minecraft.scoreboard.ScoreboardObjective; import net.minecraft.text.Text; +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.callback.CallbackInfo; + +import dev.cbyrne.betterinject.annotations.Arg; +import dev.cbyrne.betterinject.annotations.Inject; @Environment(EnvType.CLIENT) @Mixin(PlayerListHud.class) public class PlayerListHudMixin { - @Shadow private Text footer; @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/gui/DrawContext;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) - public void skyblocker$renderTabHud(DrawContext context, int scaledW, Scoreboard sb, ScoreboardObjective sbo, - CallbackInfo info) { - - if (!Utils.isOnSkyblock() - || !SkyblockerConfig.get().general.tabHud.tabHudEnabled - || TabHud.defaultTgl.isPressed()) { + public void skyblocker$renderTabHud(@Arg DrawContext context, @Arg int w, CallbackInfo info) { + if (!Utils.isOnSkyblock() || !SkyblockerConfig.get().general.tabHud.tabHudEnabled || TabHud.defaultTgl.isPressed()) { return; } - MinecraftClient client = MinecraftClient.getInstance(); - ClientPlayNetworkHandler nwH = client.getNetworkHandler(); + ClientPlayNetworkHandler nwH = MinecraftClient.getInstance().getNetworkHandler(); if (nwH == null) { return; } - int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); try { Screen screen = Screen.getCorrect(w, h, footer); screen.render(context); info.cancel(); } catch (Exception e) { - TabHud.LOGGER.error("Drawing default hud. Reason: Screen exception {}", e); + TabHud.LOGGER.error("[Skyblocker] Encountered unknown exception while drawing default hud", e); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java index 5b75eb47..a382a58e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java @@ -1,27 +1,20 @@ package me.xmrvizzy.skyblocker.mixin; -import java.util.concurrent.ExecutorService; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.texture.PlayerSkinProvider; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(PlayerSkinProvider.class) public class PlayerSkinProviderMixin { - - @Redirect(method = "loadSkin(Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/texture/PlayerSkinProvider$SkinTextureAvailableCallback;Z)V", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/ExecutorService;execute(Ljava/lang/Runnable;)V", remap = false)) - private void skyblocker$removeInvalidBase64LogSpam(ExecutorService executor, Runnable runnable) { - executor.execute(() -> { - try { - runnable.run(); - } catch (Throwable t) { - if (!(t instanceof IllegalArgumentException) || !Utils.isOnHypixel()) { - t.printStackTrace(); - } - } - }); - } + @ModifyVariable(method = "loadSkin(Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/texture/PlayerSkinProvider$SkinTextureAvailableCallback;Z)V", at = @At("STORE")) + private Runnable skyblocker$removeInvalidBase64LogSpam(Runnable runnable) { + return Utils.isOnHypixel() ? () -> { + try { + runnable.run(); + } catch (IllegalArgumentException ignored) { + } + } : runnable; + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScoreboardMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScoreboardMixin.java index 6f88821c..90edde6f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScoreboardMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScoreboardMixin.java @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.At; @Mixin(Scoreboard.class) public abstract class ScoreboardMixin { - @WrapWithCondition(method = "addTeam", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V")) + @WrapWithCondition(method = "addTeam", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) private boolean skyblocker$cancelTeamWarning(Logger instance, String format, Object arg) { return !Utils.isOnHypixel(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/HandledScreenAccessor.java index ea497b75..ad35dae6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenAccessor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/HandledScreenAccessor.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.mixin; +package me.xmrvizzy.skyblocker.mixin.accessor; import net.minecraft.client.gui.screen.ingame.HandledScreen; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/PlayerListHudAccessor.java index db329775..7e335d73 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/PlayerListHudAccessor.java @@ -1,18 +1,17 @@ -package me.xmrvizzy.skyblocker.mixin; - -import java.util.Comparator; +package me.xmrvizzy.skyblocker.mixin.accessor; +import net.minecraft.client.gui.hud.PlayerListHud; +import net.minecraft.client.network.PlayerListEntry; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import net.minecraft.client.gui.hud.PlayerListHud; -import net.minecraft.client.network.PlayerListEntry; +import java.util.Comparator; @Mixin(PlayerListHud.class) public interface PlayerListHudAccessor { @Accessor("ENTRY_ORDERING") - public static Comparator<PlayerListEntry> getOrdering() { + static Comparator<PlayerListEntry> getOrdering() { throw new AssertionError(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/RecipeBookWidgetAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/RecipeBookWidgetAccessor.java index 808b2950..0f20d4e4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/RecipeBookWidgetAccessor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/RecipeBookWidgetAccessor.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.mixin; +package me.xmrvizzy.skyblocker.mixin.accessor; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import net.minecraft.client.gui.widget.TextFieldWidget; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/AccessorWorldRenderer.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/WorldRendererAccessor.java index e9067851..831a3385 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/AccessorWorldRenderer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/WorldRendererAccessor.java @@ -1,4 +1,4 @@ -package me.xmrvizzy.skyblocker.mixin; +package me.xmrvizzy.skyblocker.mixin.accessor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -7,7 +7,7 @@ import net.minecraft.client.render.Frustum; import net.minecraft.client.render.WorldRenderer; @Mixin(WorldRenderer.class) -public interface AccessorWorldRenderer { +public interface WorldRendererAccessor { @Accessor Frustum getFrustum(); }
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java index 37320c92..13789fe1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java @@ -7,11 +7,11 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.shape.VoxelShape; public class OldLever { - protected static final VoxelShape FLOOR_SHAPE; - protected static final VoxelShape NORTH_SHAPE; - protected static final VoxelShape SOUTH_SHAPE; - protected static final VoxelShape EAST_SHAPE; - protected static final VoxelShape WEST_SHAPE; + protected static final VoxelShape FLOOR_SHAPE = Block.createCuboidShape(4.0D, 0.0D, 4.0D, 12.0D, 10.0D, 12.0D); + protected static final VoxelShape NORTH_SHAPE = Block.createCuboidShape(5.0D, 3.0D, 10.0D, 11.0D, 13.0D, 16.0D); + protected static final VoxelShape SOUTH_SHAPE = Block.createCuboidShape(5.0D, 3.0D, 0.0D, 11.0D, 13.0D, 6.0D); + protected static final VoxelShape EAST_SHAPE = Block.createCuboidShape(0.0D, 3.0D, 5.0D, 6.0D, 13.0D, 11.0D); + protected static final VoxelShape WEST_SHAPE = Block.createCuboidShape(10.0D, 3.0D, 5.0D, 16.0D, 13.0D, 11.0D); public static VoxelShape getShape(WallMountLocation wallMountLocation, Direction direction) { if (!SkyblockerConfig.get().general.hitbox.oldLeverHitbox) @@ -37,12 +37,4 @@ public class OldLever { } return null; } - - static { - FLOOR_SHAPE = Block.createCuboidShape(4, 0, 4, 12, 10, 12); - NORTH_SHAPE = Block.createCuboidShape(5.0D, 3.0D, 10.0D, 11.0D, 13.0D, 16.0D); - SOUTH_SHAPE = Block.createCuboidShape(5.0D, 3.0D, 0.0D, 11.0D, 13.0D, 6.0D); - WEST_SHAPE = Block.createCuboidShape(10.0D, 3.0D, 5.0D, 16.0D, 13.0D, 11.0D); - EAST_SHAPE = Block.createCuboidShape(0.0D, 3.0D, 5.0D, 6.0D, 13.0D, 11.0D); - } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java index 3a1f91d3..04dc6820 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.itemlist; import com.mojang.blaze3d.systems.RenderSystem; -import me.xmrvizzy.skyblocker.mixin.RecipeBookWidgetAccessor; +import me.xmrvizzy.skyblocker.mixin.accessor.RecipeBookWidgetAccessor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; @@ -15,7 +15,7 @@ import net.minecraft.screen.AbstractRecipeScreenHandler; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -@Environment(value= EnvType.CLIENT) +@Environment(value = EnvType.CLIENT) public class ItemListWidget extends RecipeBookWidget implements Drawable, Selectable { private int parentWidth; private int parentHeight; @@ -23,10 +23,12 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select private TextFieldWidget searchField; private SearchResultsWidget results; - public ItemListWidget() { super(); } + public ItemListWidget() { + super(); + } public void updateSearchResult() { - this.results.updateSearchResult(((RecipeBookWidgetAccessor)this).getSearchText()); + this.results.updateSearchResult(((RecipeBookWidgetAccessor) this).getSearchText()); } @Override @@ -35,7 +37,7 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select this.parentWidth = parentWidth; this.parentHeight = parentHeight; this.leftOffset = narrow ? 0 : 86; - this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField(); + this.searchField = ((RecipeBookWidgetAccessor) this).getSearchField(); int x = (this.parentWidth - 147) / 2 - this.leftOffset; int y = (this.parentHeight - 166) / 2; if (ItemRegistry.filesImported) { @@ -48,14 +50,14 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select public void render(DrawContext context, int mouseX, int mouseY, float delta) { if (this.isOpen()) { MatrixStack matrices = context.getMatrices(); - matrices.push(); + matrices.push(); matrices.translate(0.0D, 0.0D, 100.0D); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField(); + this.searchField = ((RecipeBookWidgetAccessor) this).getSearchField(); int i = (this.parentWidth - 147) / 2 - this.leftOffset; int j = (this.parentHeight - 166) / 2; context.drawTexture(TEXTURE, i, j, 1, 1, 147, 166); - this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField(); + this.searchField = ((RecipeBookWidgetAccessor) this).getSearchField(); if (!ItemRegistry.filesImported && !this.searchField.isFocused() && this.searchField.getText().isEmpty()) { Text hintText = (Text.literal("Loading...")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY); @@ -66,7 +68,7 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select } else { this.searchField.render(context, mouseX, mouseY, delta); } - if (ItemRegistry.filesImported){ + if (ItemRegistry.filesImported) { if (results == null) { int x = (this.parentWidth - 147) / 2 - this.leftOffset; int y = (this.parentHeight - 166) / 2; @@ -88,15 +90,15 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (this.isOpen() && !this.client.player.isSpectator() && ItemRegistry.filesImported && results != null) { - if (this.searchField != null && this.searchField.mouseClicked(mouseX, mouseY, button)) { + if (this.isOpen() && this.client.player != null && !this.client.player.isSpectator() && ItemRegistry.filesImported && this.searchField != null && results != null) { + if (this.searchField.mouseClicked(mouseX, mouseY, button)) { this.results.closeRecipeView(); this.searchField.setFocused(true); return true; - } else - this.searchField.setFocused(false); + } else { + this.searchField.setFocused(false); return this.results.mouseClicked(mouseX, mouseY, button); - } else - return false; + } + } else return false; } }
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java index c02463a3..d9e97976 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.quicknav; import com.mojang.blaze3d.systems.RenderSystem; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.mixin.HandledScreenAccessor; +import me.xmrvizzy.skyblocker.mixin.accessor.HandledScreenAccessor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; @@ -19,7 +19,6 @@ import net.minecraft.util.Identifier; @Environment(value=EnvType.CLIENT) public class QuickNavButton extends ClickableWidget { - private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); private static final Identifier BUTTON_TEXTURE = new Identifier("textures/gui/container/creative_inventory/tabs.png"); private final int index; @@ -42,12 +41,9 @@ public class QuickNavButton extends ClickableWidget { if (screen instanceof HandledScreen<?> handledScreen) { int x = ((HandledScreenAccessor)handledScreen).getX(); int y = ((HandledScreenAccessor)handledScreen).getY(); - int w = ((HandledScreenAccessor)handledScreen).getBackgroundWidth(); int h = ((HandledScreenAccessor)handledScreen).getBackgroundHeight(); if (h > 166) --h; // why is this even a thing - // this.x = x + this.index % 6 * 28 + 4; this.setX(x + this.index % 6 * 26 + 4); - // this.y = this.index < 6 ? y - 28 : y + h - 4; this.setY(this.index < 6 ? y - 26 : y + h - 4); this.u = 26; this.v = (index < 6 ? 0 : 64) + (toggled ? 32 : 0); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java index fed34796..aa730c31 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java @@ -12,12 +12,12 @@ import net.minecraft.util.Formatting; public class HealingMelonIndicator { private static final Title title = new Title("skyblocker.rift.healNow", Formatting.DARK_RED); - public static void updateHealth(MinecraftClient client) { + public static void updateHealth() { if (!SkyblockerConfig.get().slayer.vampireSlayer.enableHealingMelonIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) { TitleContainer.removeTitle(title); return; } - ClientPlayerEntity player = client.player; + ClientPlayerEntity player = MinecraftClient.getInstance().player; if (player != null && player.getHealth() <= SkyblockerConfig.get().slayer.vampireSlayer.healingMelonHealthThreshold * 2F) { RenderHelper.displayInTitleContainerAndPlaySound(title); } else { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java index ee4319dc..d0ce6b72 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java @@ -4,11 +4,10 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import me.xmrvizzy.skyblocker.mixin.PlayerListHudAccessor; +import me.xmrvizzy.skyblocker.mixin.accessor.PlayerListHudAccessor; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java index 565bd7a8..fd8ffdbd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.utils; -import me.xmrvizzy.skyblocker.mixin.AccessorWorldRenderer; +import me.xmrvizzy.skyblocker.mixin.accessor.WorldRendererAccessor; import me.xmrvizzy.skyblocker.mixin.accessor.FrustumInvoker; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.Frustum; @@ -9,7 +9,7 @@ import net.minecraft.util.math.Box; public class FrustumUtils { public static Frustum getFrustum() { - return ((AccessorWorldRenderer) MinecraftClient.getInstance().worldRenderer).getFrustum(); + return ((WorldRendererAccessor) MinecraftClient.getInstance().worldRenderer).getFrustum(); } public static boolean isBoxVisible(Box box) { |