diff options
author | Trương Hoàng Long <longtruong2411@gmail.com> | 2023-03-30 04:41:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-30 04:41:29 +0200 |
commit | 3074075c1561163606f441f1a8f582b79082c311 (patch) | |
tree | 16471bf0b37058a12de339dc3544d8c4d8af47bb /src/main/java/me/xmrvizzy/skyblocker/mixin | |
parent | 71d1c240fbde9372afa8e2a2388218fff33eb04b (diff) | |
parent | 5e8a9fdac35232c5b8326250781cc38bb2eb88d2 (diff) | |
download | Skyblocker-3074075c1561163606f441f1a8f582b79082c311.tar.gz Skyblocker-3074075c1561163606f441f1a8f582b79082c311.tar.bz2 Skyblocker-3074075c1561163606f441f1a8f582b79082c311.zip |
Merge pull request #123 from kevinthegreat1/master
Support for 1.19.4 & Cleanup
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
10 files changed, 62 insertions, 73 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/AccessorWorldRenderer.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/AccessorWorldRenderer.java index 02990ea9..e9067851 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/AccessorWorldRenderer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/AccessorWorldRenderer.java @@ -8,8 +8,6 @@ import net.minecraft.client.render.WorldRenderer; @Mixin(WorldRenderer.class) public interface AccessorWorldRenderer { - @Accessor Frustum getFrustum(); - }
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java index eabf0b53..8176a810 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java @@ -17,14 +17,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ChatHud.class) -public class ChatHudListenerMixin { - +public abstract class ChatHudListenerMixin { @Shadow @Final private MinecraftClient client; @Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V", at = @At("HEAD"), cancellable = true) - public void onMessage(Text message, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci) { + public void skyblocker$onMessage(Text message, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci) { if (!Utils.isOnSkyblock) return; String asString = message.getString(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java index 033272db..237f6ba9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java @@ -22,7 +22,7 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity } @Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true) - public void dropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable<Boolean> cir) { + public void skyblocker$dropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable<Boolean> cir) { if (Utils.isOnSkyblock) HotbarSlotLock.handleDropSelectedItem(this.getInventory().selectedSlot, cir); } }
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java index d7ca3686..29da4bd6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java @@ -21,7 +21,7 @@ public abstract class FarmlandBlockMixin extends Block { } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) { + 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)); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index 0cd82aad..44b1b5c8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -6,7 +6,6 @@ import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav; import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNavButton; import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.util.math.MatrixStack; @@ -24,17 +23,16 @@ import java.util.List; @Mixin(HandledScreen.class) public abstract class HandledScreenMixin extends Screen { - @Shadow protected int backgroundWidth; - @Shadow protected int backgroundHeight; - protected HandledScreenMixin(Text title) { super(title); } + @Shadow - @Nullable protected Slot focusedSlot; + @Nullable + protected Slot focusedSlot; @Inject(method = "init()V", at = @At("TAIL")) - private void init(CallbackInfo ci) { + private void skyblocker$init(CallbackInfo ci) { // quicknav if (Utils.isOnSkyblock && SkyblockerConfig.get().quickNav.enableQuickNav) { String screenTitle = super.getTitle().getString().trim(); @@ -42,21 +40,21 @@ public abstract class HandledScreenMixin extends Screen { for (QuickNavButton button : buttons) super.addDrawableChild(button); } // backpack preview - BackpackPreview.updateStorage((HandledScreen<?>)(Object)this); + BackpackPreview.updateStorage((HandledScreen<?>) (Object) this); } - @Inject(at = @At("HEAD"), method = "keyPressed", cancellable = true) - public void keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { - if (this.focusedSlot != null){ - if (keyCode != 256 && !this.client.options.inventoryKey.matchesKey(keyCode, scanCode)){ + @Inject(at = @At("HEAD"), method = "keyPressed") + public void skyblocker$keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { + if (this.focusedSlot != null) { + if (keyCode != 256 && !this.client.options.inventoryKey.matchesKey(keyCode, scanCode)) { if (WikiLookup.wikiLookup.matchesKey(keyCode, scanCode)) WikiLookup.openWiki(this.focusedSlot); } } } @Inject(at = @At("HEAD"), method = "drawMouseoverTooltip", cancellable = true) - public void drawMouseOverTooltip(MatrixStack matrices, int x, int y, CallbackInfo ci) { - String title = ((HandledScreen<?>)(Object)this).getTitle().getString(); + public void skyblocker$drawMouseOverTooltip(MatrixStack matrices, int x, int y, CallbackInfo ci) { + String title = this.getTitle().getString(); boolean shiftDown = SkyblockerConfig.get().general.backpackPreviewWithoutShift ^ Screen.hasShiftDown(); if (shiftDown && title.equals("Storage") && this.focusedSlot != null) { if (this.focusedSlot.inventory == this.client.player.getInventory()) return; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java index 7f25b339..c137e6c8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java @@ -10,7 +10,6 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.util.math.MatrixStack; @@ -18,9 +17,9 @@ 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.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.callback.CallbackInfo; @@ -28,17 +27,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Environment(EnvType.CLIENT) @Mixin(InGameHud.class) public abstract class InGameHudMixin extends DrawableHelper { + @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 MatrixStack hotbarMatrices; + @Unique private int hotbarSlotIndex; @Shadow - @Final - private MinecraftClient client; - @Shadow private int scaledHeight; @Shadow private int scaledWidth; @@ -48,12 +49,12 @@ public abstract class InGameHudMixin extends DrawableHelper { } @Inject(method = "setOverlayMessage(Lnet/minecraft/text/Text;Z)V", at = @At("HEAD"), cancellable = true) - private void onSetOverlayMessage(Text message, boolean tinted, CallbackInfo ci) { + private void skyblocker$onSetOverlayMessage(Text message, boolean tinted, CallbackInfo ci) { if (!Utils.isOnSkyblock || !SkyblockerConfig.get().general.bars.enableBars) return; String msg = message.getString(); String res = statusBarTracker.update(msg, SkyblockerConfig.get().messages.hideMana); - if (msg != res) { + if (!msg.equals(res)) { if (res != null) setOverlayMessage(Text.of(res), tinted); ci.cancel(); @@ -61,7 +62,7 @@ public abstract class InGameHudMixin extends DrawableHelper { } @Inject(method = "renderHotbar", at = @At("HEAD")) - public void renderHotbar(float f, MatrixStack matrices, CallbackInfo ci) { + public void skyblocker$renderHotbar(float f, MatrixStack matrices, CallbackInfo ci) { if (Utils.isOnSkyblock) { hotbarMatrices = matrices; hotbarSlotIndex = 0; @@ -69,27 +70,27 @@ public abstract class InGameHudMixin extends DrawableHelper { } @Inject(method = "renderHotbarItem", at = @At("HEAD")) - public void renderHotbarItem(int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) { + public void skyblocker$renderHotbarItem(MatrixStack matrices, int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) { if (Utils.isOnSkyblock) { if (HotbarSlotLock.isLocked(hotbarSlotIndex)) { - RenderSystem.setShaderTexture(0,SLOT_LOCK); - this.drawTexture(hotbarMatrices, i, j, 0, 0,16, 16); + RenderSystem.setShaderTexture(0, SLOT_LOCK); + DrawableHelper.drawTexture(hotbarMatrices, i, j, 0, 0, 16, 16); } hotbarSlotIndex++; } } @Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true) - private void renderExperienceBar(MatrixStack matrices, int x, CallbackInfo ci) { + private void skyblocker$renderExperienceBar(MatrixStack matrices, int x, CallbackInfo ci) { if (Utils.isOnSkyblock && SkyblockerConfig.get().general.bars.enableBars) ci.cancel(); } @Inject(method = "renderStatusBars", at = @At("HEAD"), cancellable = true) - private void renderStatusBars(MatrixStack matrices, CallbackInfo ci) { - if(!Utils.isOnSkyblock) + private void skyblocker$renderStatusBars(MatrixStack matrices, CallbackInfo ci) { + if (!Utils.isOnSkyblock) return; - if(statusBars.render(matrices, scaledWidth, scaledHeight)) + if (statusBars.render(matrices, scaledWidth, scaledHeight)) ci.cancel(); if (Utils.isInDungeons && SkyblockerConfig.get().locations.dungeons.enableMap) @@ -99,7 +100,7 @@ public abstract class InGameHudMixin extends DrawableHelper { } @Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true) - private void renderMountHealth(MatrixStack matrices, CallbackInfo ci) { + private void skyblocker$renderMountHealth(MatrixStack matrices, CallbackInfo ci) { if (Utils.isOnSkyblock && SkyblockerConfig.get().general.bars.enableBars) 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 4bff2779..8de390cc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java @@ -10,15 +10,15 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(InventoryScreen.class) -public class InventoryScreenMixin { +public abstract class InventoryScreenMixin { @Redirect( - method = "", + method = "<init>", at = @At( value = "NEW", target = "net/minecraft/client/gui/screen/recipebook/RecipeBookWidget" ) ) - RecipeBookWidget constructor() { + RecipeBookWidget skyblocker$constructor() { if (Utils.isOnSkyblock && SkyblockerConfig.get().general.itemList.enableItemList) return new ItemListWidget(); else diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java index 395027bc..b9ddc156 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java @@ -1,32 +1,31 @@ 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.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + import com.mojang.blaze3d.systems.RenderSystem; + 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.render.BufferBuilder; -import net.minecraft.client.render.Tessellator; +import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; -import net.minecraft.util.math.MathHelper; -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 java.util.regex.Pattern; +import net.minecraft.util.math.ColorHelper; @Mixin(ItemRenderer.class) public abstract class ItemRendererMixin { - - @Shadow protected abstract void renderGuiQuad(BufferBuilder buffer, int x, int y, int width, int height, int red, int green, int blue, int alpha); - - @Inject(method = "renderGuiItemOverlay(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) - public void renderItemBar(TextRenderer renderer, ItemStack stack, int x, int y, @Nullable String countLabel, CallbackInfo ci) { + @Inject(method = "renderGuiItemOverlay(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) + public void skyblocker$renderItemBar(MatrixStack matrices, TextRenderer renderer, ItemStack stack, int x, int y, @Nullable String countLabel, CallbackInfo ci) { if (Utils.isOnSkyblock && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) { if (!stack.isEmpty()) { @@ -47,19 +46,11 @@ public abstract class ItemRendererMixin { } RenderSystem.disableDepthTest(); - RenderSystem.disableTexture(); -// RenderSystem.disableAlphaTest(); - RenderSystem.disableBlend(); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); float hue = Math.max(0.0F, 1.0F - (max - current) / max); int width = Math.round(current / max * 13.0F); - int rgb = MathHelper.hsvToRgb(hue / 3.0F, 1.0F, 1.0F); - this.renderGuiQuad(buffer, x + 2, y + 13, 13, 2, 0,0,0,255); - this.renderGuiQuad(buffer, x + 2, y + 13, width, 1, rgb >> 16 & 255, rgb >> 8 & 255, rgb & 255, 255); - RenderSystem.enableBlend(); -// RenderSystem.enableAlphaTest(); - RenderSystem.enableTexture(); + Color color = Color.getHSBColor(hue / 3.0F, 1.0F, 1.0F); + DrawableHelper.fill(matrices, x + 2, y + 13, x + 15, y + 15, 0xFF000000); + DrawableHelper.fill(matrices, x + 2, y + 13, x + 2 + width, y + 14, ColorHelper.Argb.getArgb(color.getAlpha(), color.getRed(), color.getGreen(), color.getBlue())); RenderSystem.enableDepthTest(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java index c3ff287e..c28a7096 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java @@ -21,7 +21,7 @@ public abstract class LeverBlockMixin extends WallMountedBlock { } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) { + public void skyblocker$onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) { if (Utils.isOnSkyblock) { VoxelShape shape = OldLever.getShape(state.get(FACE), state.get(FACING)); if (shape != null) diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java index 6561eb5b..2bc47bba 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java @@ -16,24 +16,26 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MinecraftClient.class) -public class MinecraftClientMixin { +public abstract class MinecraftClientMixin { - @Shadow @Nullable public ClientPlayerEntity player; + @Shadow + @Nullable + public ClientPlayerEntity player; @Inject(method = "tick", at = @At("HEAD")) - public void tick(CallbackInfo ci) { + public void skyblocker$tick(CallbackInfo ci) { SkyblockerMod.getInstance().onTick(); } @Inject(method = "handleInputEvents", at = @At("HEAD")) - public void handleInputEvents(CallbackInfo ci) { + public void skyblocker$handleInputEvents(CallbackInfo ci) { if (Utils.isOnSkyblock) HotbarSlotLock.handleInputEvents(player); } @Inject(method = "setScreen", at = @At("HEAD")) - public void onSetScreen(Screen screen, CallbackInfo ci) { + public void skyblocker$onSetScreen(Screen screen, CallbackInfo ci) { ContainerSolverManager manager = SkyblockerMod.getInstance().containerSolverManager; - if(Utils.isOnSkyblock && screen instanceof GenericContainerScreen) + if (Utils.isOnSkyblock && screen instanceof GenericContainerScreen) manager.onSetScreen((GenericContainerScreen) screen); else manager.clearScreen(); |