aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/raeids/stratus/mixin
diff options
context:
space:
mode:
authorWyvest <45589059+Wyvest@users.noreply.github.com>2021-12-25 14:13:27 +0700
committerWyvest <45589059+Wyvest@users.noreply.github.com>2021-12-25 14:13:27 +0700
commit4927d585ec72cb045a70718423228fa2cf55d071 (patch)
tree32714efb0c1a3a3aa3a01cadfc7a8ba5a9c784f1 /src/main/java/com/raeids/stratus/mixin
parentf720ca0a074411be7cbbdc1b9629b14d06e3b26c (diff)
downloadChatting-4927d585ec72cb045a70718423228fa2cf55d071.tar.gz
Chatting-4927d585ec72cb045a70718423228fa2cf55d071.tar.bz2
Chatting-4927d585ec72cb045a70718423228fa2cf55d071.zip
new: rewrite chat searching
fix: fix chat tabs / shortcuts not initializing when turning on
Diffstat (limited to 'src/main/java/com/raeids/stratus/mixin')
-rw-r--r--src/main/java/com/raeids/stratus/mixin/GuiChatMixin.java40
-rw-r--r--src/main/java/com/raeids/stratus/mixin/GuiNewChatMixin.java15
2 files changed, 27 insertions, 28 deletions
diff --git a/src/main/java/com/raeids/stratus/mixin/GuiChatMixin.java b/src/main/java/com/raeids/stratus/mixin/GuiChatMixin.java
index 397cb06..4b8142c 100644
--- a/src/main/java/com/raeids/stratus/mixin/GuiChatMixin.java
+++ b/src/main/java/com/raeids/stratus/mixin/GuiChatMixin.java
@@ -21,10 +21,13 @@ import java.awt.datatransfer.StringSelection;
@Mixin(GuiChat.class)
public abstract class GuiChatMixin extends GuiScreen {
+ private CleanSearchButton searchButton;
+
@Inject(method = "initGui", at = @At("TAIL"))
private void init(CallbackInfo ci) {
if (StratusConfig.INSTANCE.getChatSearch()) {
- ChatSearchingKt.initGui();
+ searchButton = new CleanSearchButton();
+ buttonList.add(searchButton);
}
if (StratusConfig.INSTANCE.getChatTabs()) {
for (ChatTab chatTab : ChatTabs.INSTANCE.getTabs()) {
@@ -33,43 +36,28 @@ public abstract class GuiChatMixin extends GuiScreen {
}
}
- @Inject(method = "drawScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiTextField;drawTextBox()V", shift = At.Shift.AFTER))
- private void yeah(int mouseX, int mouseY, float partialTicks, CallbackInfo ci) {
- if (ChatSearchingKt.getInputField() != null) {
- ChatSearchingKt.getInputField().drawTextBox();
- }
- }
-
- @Inject(method = "onGuiClosed", at = @At("TAIL"))
- private void onGuiClosed(CallbackInfo ci) {
- ChatSearchingKt.setInputField(null);
- ChatSearchingKt.setPrevText("");
- }
-
@Inject(method = "updateScreen", at = @At("HEAD"))
private void updateScreen(CallbackInfo ci) {
- ChatSearchingKt.updateScreen();
+ if (StratusConfig.INSTANCE.getChatSearch() && searchButton.isEnabled()) {
+ searchButton.getInputField().updateCursorCounter();
+ }
}
@Inject(method = "keyTyped", at = @At("HEAD"), cancellable = true)
private void keyTyped(char typedChar, int keyCode, CallbackInfo ci) {
- if (ChatSearchingKt.getInputField() != null) {
- if (ChatSearchingKt.getInputField().isFocused()) {
- ci.cancel();
- if (keyCode == 1 && ChatSearchingKt.getInputField().isFocused()) {
- ChatSearchingKt.getInputField().setFocused(false);
- return;
- }
- ChatSearchingKt.getInputField().textboxKeyTyped(typedChar, keyCode);
+ if (StratusConfig.INSTANCE.getChatSearch() && searchButton.isEnabled()) {
+ ci.cancel();
+ if (keyCode == 1) {
+ searchButton.onMousePress();
+ return;
}
+ searchButton.getInputField().textboxKeyTyped(typedChar, keyCode);
+ ChatSearchingKt.setPrevText(searchButton.getInputField().getText());
}
}
@Inject(method = "mouseClicked", at = @At("HEAD"))
private void mouseClicked(int mouseX, int mouseY, int mouseButton, CallbackInfo ci) {
- if (ChatSearchingKt.getInputField() != null) {
- ChatSearchingKt.getInputField().mouseClicked(mouseX, mouseY, mouseButton);
- }
GuiNewChatHook hook = ((GuiNewChatHook) Minecraft.getMinecraft().ingameGUI.getChatGUI());
float f = mc.ingameGUI.getChatGUI().getChatScale();
int x = MathHelper.floor_float((float) mouseX / f);
diff --git a/src/main/java/com/raeids/stratus/mixin/GuiNewChatMixin.java b/src/main/java/com/raeids/stratus/mixin/GuiNewChatMixin.java
index c831528..8d2602b 100644
--- a/src/main/java/com/raeids/stratus/mixin/GuiNewChatMixin.java
+++ b/src/main/java/com/raeids/stratus/mixin/GuiNewChatMixin.java
@@ -36,6 +36,7 @@ public abstract class GuiNewChatMixin extends Gui implements GuiNewChatHook {
@Shadow @Final private List<ChatLine> drawnChatLines;
@SuppressWarnings({"FieldCanBeLocal", "unused"})
private float percentComplete;
+ private String stratus$previousText = "";
@Shadow public abstract boolean getChatOpen();
@@ -65,6 +66,7 @@ public abstract class GuiNewChatMixin extends Gui implements GuiNewChatHook {
@Inject(method = "setChatLine", at = @At("HEAD"), cancellable = true)
private void handleSetChatLine(IChatComponent chatComponent, int chatLineId, int updateCounter, boolean displayOnly, CallbackInfo ci) {
+ ChatSearchingKt.getCache().invalidateAll();
handleChatTabMessage(chatComponent, chatLineId, updateCounter, displayOnly, ci);
}
@@ -88,7 +90,6 @@ public abstract class GuiNewChatMixin extends Gui implements GuiNewChatHook {
: linesToDraw;
}
- //TODO: fix with betterchat
@ModifyArgs(method = "drawChat", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiNewChat;drawRect(IIIII)V"), slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/util/MathHelper;clamp_double(DDD)D"), to = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;enableBlend()V")))
private void captureDrawRect(Args args) {
int left = args.get(0);
@@ -110,7 +111,7 @@ public abstract class GuiNewChatMixin extends Gui implements GuiNewChatHook {
@Redirect(method = "drawChat", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/GuiNewChat;drawnChatLines:Ljava/util/List;", opcode = Opcodes.GETFIELD))
private List<ChatLine> injected(GuiNewChat instance) {
- return ChatSearchingKt.filterMessages(drawnChatLines);
+ return ChatSearchingKt.filterMessages(stratus$previousText, drawnChatLines);
}
@Inject(method = "drawChat", at = @At("RETURN"))
@@ -199,4 +200,14 @@ public abstract class GuiNewChatMixin extends Gui implements GuiNewChatHook {
}
return null;
}
+
+ @Override
+ public String getPrevText() {
+ return stratus$previousText;
+ }
+
+ @Override
+ public void setPrevText(String prevText) {
+ stratus$previousText = prevText;
+ }
}