diff options
author | Serhan <serhanduzce@gmail.com> | 2022-06-16 12:34:35 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-16 12:34:35 +0300 |
commit | 5f323aaf6f26aba3a2f33eea9ed88e1ee40cc4f9 (patch) | |
tree | 856b91f6a6c8632b24ef05d1898c0ba1f847585b /src/main/java/me/xmrvizzy/skyblocker/mixin | |
parent | 4afe31dca21b94c102099549800d4fa1cb1bbe6d (diff) | |
parent | 6c268d4f5b5d9447d9cd7ca4cb5afe2066198c97 (diff) | |
download | Skyblocker-5f323aaf6f26aba3a2f33eea9ed88e1ee40cc4f9.tar.gz Skyblocker-5f323aaf6f26aba3a2f33eea9ed88e1ee40cc4f9.tar.bz2 Skyblocker-5f323aaf6f26aba3a2f33eea9ed88e1ee40cc4f9.zip |
Merge branch 'SkyblockerMod:master' into master
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
6 files changed, 55 insertions, 86 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatScreenMixin.java deleted file mode 100644 index e85a64fc..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatScreenMixin.java +++ /dev/null @@ -1,29 +0,0 @@ -package me.xmrvizzy.skyblocker.mixin; - -import net.minecraft.client.gui.screen.ChatScreen; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.TextFieldWidget; -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.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(ChatScreen.class) -public class ChatScreenMixin extends Screen { - - @Shadow protected TextFieldWidget chatField; - - protected ChatScreenMixin(Text title) { - super(title); - } - - @Inject(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;openScreen(Lnet/minecraft/client/gui/screen/Screen;)V", ordinal = 1), cancellable = true) - public void keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { - String[] split = this.chatField.getText().trim().toLowerCase().split(" "); - if (split.length > 0 && split[0].contentEquals("/skb")) { - cir.setReturnValue(true); - } - } -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java deleted file mode 100644 index ef900eef..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.xmrvizzy.skyblocker.mixin; - -import com.mojang.authlib.GameProfile; -import com.mojang.brigadier.CommandDispatcher; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.util.telemetry.TelemetrySender; -import net.minecraft.command.CommandSource; -import net.minecraft.network.ClientConnection; -import net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket; -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 static com.mojang.brigadier.builder.LiteralArgumentBuilder.literal; - -@Mixin(ClientPlayNetworkHandler.class) -public class ClientPlayNetworkHandlerMixin { - - @Shadow private CommandDispatcher<CommandSource> commandDispatcher; - - @Inject(method = "<init>", at = @At("RETURN")) - private void init(MinecraftClient client, Screen screen, ClientConnection connection, GameProfile profile, TelemetrySender telemetrySender, CallbackInfo ci) { - commandDispatcher.register(literal("skb")); - } - - @Inject(method = "onCommandTree", at = @At("RETURN")) - private void onCommandTree(CommandTreeS2CPacket packet, CallbackInfo ci) { - commandDispatcher.register(literal("skb")); - } -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java index 160c8078..2d016459 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java @@ -9,7 +9,6 @@ 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) @@ -19,14 +18,6 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity super(world, profile); } - @Inject(method = "sendChatMessage", at = @At("HEAD"), cancellable = true) - public void sendChatMessage(String message, CallbackInfo ci) { - String[] split = message.toLowerCase().split(" "); - if (split.length > 0 && split[0].contentEquals("/skb")) { - ci.cancel(); - } - } - @Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true) public void dropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable<Boolean> cir) { if (Utils.isOnSkyblock) HotbarSlotLock.handleDropSelectedItem(this.getInventory().selectedSlot, cir); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java new file mode 100644 index 00000000..d7ca3686 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java @@ -0,0 +1,33 @@ +package me.xmrvizzy.skyblocker.mixin; + +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.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; + +@Mixin(FarmlandBlock.class) +public abstract class FarmlandBlockMixin extends Block { + protected FarmlandBlockMixin(Settings settings) { + super(settings); + } + + @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) + public void 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)); + } + + @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); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index bd99f2d4..0303bca2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -41,25 +41,26 @@ public abstract class HandledScreenMixin extends Screen { List<QuickNavButton> buttons = QuickNav.init(screenTitle); for (QuickNavButton button : buttons) super.addDrawableChild(button); } - BackpackPreview.loadStorage((HandledScreen)(Object)this); - BackpackPreview.updateStorage((HandledScreen)(Object)this); + // backpack preview + 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 (focusedSlot != null){ - if (keyCode != 256 && !MinecraftClient.getInstance().options.inventoryKey.matchesKey(keyCode, scanCode)){ - if (WikiLookup.wikiLookup.matchesKey(keyCode, scanCode)) WikiLookup.openWiki(focusedSlot); + 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(); - boolean shiftDown = SkyblockerConfig.get().general.backpackPreviewWithoutShift || Screen.hasShiftDown(); - if (shiftDown && title.equals("Storage") && focusedSlot != null) { - if (BackpackPreview.renderPreview(matrices, focusedSlot.getIndex(), x, y)) ci.cancel(); + String title = ((HandledScreen<?>)(Object)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; + if (BackpackPreview.renderPreview(matrices, this.focusedSlot.getIndex(), x, y)) ci.cancel(); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java index b9e80bd6..9ceebf9f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java @@ -5,6 +5,7 @@ import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.FancyStatusBars; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; +import me.xmrvizzy.skyblocker.skyblock.StatusBarTracker; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.api.EnvType; @@ -24,14 +25,12 @@ 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.Matcher; -import java.util.regex.Pattern; - @Environment(EnvType.CLIENT) @Mixin(InGameHud.class) public abstract class InGameHudMixin extends DrawableHelper { private static final Identifier SLOT_LOCK = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/slot_lock.png"); + private final StatusBarTracker statusBarTracker = SkyblockerMod.getInstance().statusBarTracker; private final FancyStatusBars statusBars = new FancyStatusBars(); private MatrixStack hotbarMatrices; private int hotbarSlotIndex; @@ -44,13 +43,21 @@ public abstract class InGameHudMixin extends DrawableHelper { @Shadow private int scaledWidth; + @Shadow + private void setOverlayMessage(Text message, boolean tinted) { + } + @Inject(method = "setOverlayMessage(Lnet/minecraft/text/Text;Z)V", at = @At("HEAD"), cancellable = true) private void onSetOverlayMessage(Text message, boolean tinted, CallbackInfo ci) { - if(!Utils.isOnSkyblock) + if (!Utils.isOnSkyblock || !SkyblockerConfig.get().general.bars.enableBars) return; String msg = message.getString(); - if(statusBars.update(msg)) + String res = statusBarTracker.update(msg, SkyblockerConfig.get().messages.hideMana); + if (msg != res) { + if (res != null) + setOverlayMessage(Text.of(res), tinted); ci.cancel(); + } } @Inject(method = "renderHotbar", at = @At("HEAD")) |