aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/mixin
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java33
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java13
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java44
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java20
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java12
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java40
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java17
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java12
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java30
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java20
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ScoreboardMixin.java16
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/HandledScreenAccessor.java (renamed from src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenAccessor.java)2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/PlayerListHudAccessor.java (renamed from src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java)11
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/RecipeBookWidgetAccessor.java (renamed from src/main/java/me/xmrvizzy/skyblocker/mixin/RecipeBookWidgetAccessor.java)2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/WorldRendererAccessor.java (renamed from src/main/java/me/xmrvizzy/skyblocker/mixin/AccessorWorldRenderer.java)4
17 files changed, 145 insertions, 143 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
index 80c98473..2d109524 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
@@ -1,24 +1,35 @@
package me.xmrvizzy.skyblocker.mixin;
+import com.llamalad7.mixinextras.injector.WrapWithCondition;
+
+import dev.cbyrne.betterinject.annotations.Inject;
import me.xmrvizzy.skyblocker.skyblock.FishingHelper;
-import net.minecraft.client.MinecraftClient;
+import me.xmrvizzy.skyblocker.utils.Utils;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket;
-import org.spongepowered.asm.mixin.Final;
+import org.slf4j.Logger;
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;
@Mixin(ClientPlayNetworkHandler.class)
public abstract class ClientPlayNetworkHandlerMixin {
- @Shadow
- @Final
- private MinecraftClient client;
-
@Inject(method = "onPlaySound", at = @At("RETURN"))
- private void skyblockmod_onPlaySound(PlaySoundS2CPacket packet, CallbackInfo ci) {
- FishingHelper.onSound(client, packet);
+ 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", 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", 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", 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 903d3992..8a57f752 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
@@ -30,16 +30,18 @@ import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+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)) {
@@ -96,7 +98,7 @@ public abstract class HandledScreenMixin extends Screen {
superpairsSolver.setSuperpairsCurrentSlot(ItemStack.EMPTY);
} else if (experimentSolver instanceof UltrasequencerSolver ultrasequencerSolver && slot.getIndex() == ultrasequencerSolver.getUltrasequencerNextSlot()) {
int count = ultrasequencerSolver.getSlots().get(ultrasequencerSolver.getUltrasequencerNextSlot()).getCount() + 1;
- ultrasequencerSolver.getSlots().entrySet().stream().filter(entry -> entry.getValue().getCount() == count).findAny().ifPresentOrElse((entry) -> ultrasequencerSolver.setUltrasequencerNextSlot(entry.getKey()), () -> ultrasequencerSolver.setState(ExperimentSolver.State.END));
+ ultrasequencerSolver.getSlots().entrySet().stream().filter(entry -> entry.getValue().getCount() == count).findAny().map(Map.Entry::getKey).ifPresentOrElse(ultrasequencerSolver::setUltrasequencerNextSlot, () -> ultrasequencerSolver.setState(ExperimentSolver.State.END));
}
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
index 7d9182b5..4cda73aa 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
@@ -1,5 +1,6 @@
package me.xmrvizzy.skyblocker.mixin;
+import com.llamalad7.mixinextras.sugar.Local;
import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.FancyStatusBars;
@@ -11,11 +12,8 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.hud.InGameHud;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
-
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
@@ -26,20 +24,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Environment(EnvType.CLIENT)
@Mixin(InGameHud.class)
public abstract class InGameHudMixin {
- //@Shadow
- //@Final
- //private static Identifier ICONS = new Identifier("textures/gui/icons.png");
@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();
- @Unique
- private DrawContext hotbarContext;
- @Unique
- private int hotbarSlotIndex;
@Shadow
private int scaledHeight;
@@ -47,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) {
@@ -63,26 +52,15 @@ public abstract class InGameHudMixin {
}
}
- @Inject(method = "renderHotbar", at = @At("HEAD"))
- public void skyblocker$renderHotbar(float f, DrawContext context, CallbackInfo ci) {
- if (Utils.isOnSkyblock()) {
- hotbarContext = context;
- hotbarSlotIndex = 0;
- }
- }
-
- @Inject(method = "renderHotbarItem", at = @At("HEAD"))
- public void skyblocker$renderHotbarItem(DrawContext context, int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) {
- if (Utils.isOnSkyblock()) {
- if (HotbarSlotLock.isLocked(hotbarSlotIndex)) {
- hotbarContext.drawTexture(SLOT_LOCK, i, j, 0, 0, 16, 16);
- }
- hotbarSlotIndex++;
+ @Inject(method = "renderHotbar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/InGameHud;renderHotbarItem(Lnet/minecraft/client/gui/DrawContext;IIFLnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/ItemStack;I)V", ordinal = 0))
+ public void skyblocker$renderHotbarItemLock(float tickDelta, DrawContext context, CallbackInfo ci, @Local(ordinal = 4, name = "m") int index, @Local(ordinal = 5, name = "n") int x, @Local(ordinal = 6, name = "o") int y) {
+ if (Utils.isOnSkyblock() && HotbarSlotLock.isLocked(index)) {
+ context.drawTexture(SLOT_LOCK, x, y, 0, 0, 16, 16);
}
}
@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();
}
@@ -96,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 a4098ce5..ec7b6ddd 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.screenbuilder.ScreenMaster;
@@ -17,34 +11,32 @@ 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();
float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f;
w = (int) (w / scale);
@@ -58,7 +50,7 @@ public class PlayerListHudMixin {
// 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
new file mode 100644
index 00000000..a382a58e
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java
@@ -0,0 +1,20 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+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 {
+ @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
new file mode 100644
index 00000000..90edde6f
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScoreboardMixin.java
@@ -0,0 +1,16 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+import com.llamalad7.mixinextras.injector.WrapWithCondition;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.minecraft.scoreboard.Scoreboard;
+import org.slf4j.Logger;
+import org.spongepowered.asm.mixin.Mixin;
+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", 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/accessor/FrustumInvoker.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
index 108a7344..3cde115e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
@@ -1,15 +1,14 @@
package me.xmrvizzy.skyblocker.mixin.accessor;
-import me.xmrvizzy.skyblocker.utils.FrustumUtils;
import net.minecraft.client.render.Frustum;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
/**
- * Use {@link FrustumUtils#isVisible(double, double, double, double, double, double) FrustumUtils#isVisible} which is shorter. For the purpose of avoiding object allocations!
+ * Use {@link me.xmrvizzy.skyblocker.utils.FrustumUtils#isVisible(double, double, double, double, double, double) FrustumUtils#isVisible} which is shorter. For the purpose of avoiding object allocations!
*/
@Mixin(Frustum.class)
public interface FrustumInvoker {
- @Invoker("isVisible")
- boolean isVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ);
+ @Invoker
+ boolean invokeIsVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ);
}
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