aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/mixin
diff options
context:
space:
mode:
authorSerhan <serhanduzce@gmail.com>2022-06-16 12:34:35 +0300
committerGitHub <noreply@github.com>2022-06-16 12:34:35 +0300
commit5f323aaf6f26aba3a2f33eea9ed88e1ee40cc4f9 (patch)
tree856b91f6a6c8632b24ef05d1898c0ba1f847585b /src/main/java/me/xmrvizzy/skyblocker/mixin
parent4afe31dca21b94c102099549800d4fa1cb1bbe6d (diff)
parent6c268d4f5b5d9447d9cd7ca4cb5afe2066198c97 (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ChatScreenMixin.java29
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java34
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java9
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java33
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java19
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java17
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"))