Skip to content

Commit

Permalink
Merge branch 'refs/heads/1.21' into 1.20.4
Browse files Browse the repository at this point in the history
  • Loading branch information
najoan125 committed Sep 29, 2024
2 parents 20cfcf7 + 17423c6 commit a488de6
Show file tree
Hide file tree
Showing 16 changed files with 120 additions and 185 deletions.
Original file line number Diff line number Diff line change
@@ -1,69 +1,70 @@
package com.hyfata.najoan.koreanpatch.handler.mixin.editbox;
package com.hyfata.najoan.koreanpatch.handler.mixin;

import com.hyfata.najoan.koreanpatch.handler.mixin.MixinCommonHandler;
import com.hyfata.najoan.koreanpatch.handler.mixin.common.IMixinCommon;
import com.hyfata.najoan.koreanpatch.handler.mixin.common.MixinCommonHandler;
import com.hyfata.najoan.koreanpatch.mixin.accessor.EditBoxAccessor;
import com.hyfata.najoan.koreanpatch.util.keyboard.KeyboardLayout;
import com.hyfata.najoan.koreanpatch.mixin.accessor.CreativeModeInventoryScreenInvoker;
import com.hyfata.najoan.koreanpatch.util.language.HangulProcessor;
import com.hyfata.najoan.koreanpatch.util.language.HangulUtil;
import com.hyfata.najoan.koreanpatch.handler.mixin.IMixinCommon;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

public class EditBoxHandler implements IMixinCommon {
private final IEditBoxAccessor accessor;
private final EditBoxAccessor accessor;
private final Minecraft client = Minecraft.getInstance();

public EditBoxHandler(IEditBoxAccessor accessor) {
public EditBoxHandler(EditBoxAccessor accessor) {
this.accessor = accessor;
}

@Override
public int getCursor() {
return accessor.getCursorPosition();
return accessor.invokeGetCursorPosition();
}

public void writeText(String str) {
accessor.insertText(str);
accessor.invokeInsertText(str);
sendTextChanged(str);
accessor.koreanPatch$changed(accessor.getValue());
accessor.invokeChanged(accessor.invokeGetValue());
updateScreen();
}

private void sendTextChanged(String str) {
if (accessor.koreanPatch$getChangedListener() != null) {
accessor.koreanPatch$getChangedListener().accept(str);
if (accessor.getResponder() != null) {
accessor.getResponder().accept(str);
}
}

private void updateScreen() {
if (this.client.screen == null) {
return;
}
if (this.client.screen instanceof CreativeModeInventoryScreen && !accessor.getValue().isEmpty()) {
if (this.client.screen instanceof CreativeModeInventoryScreen && !accessor.invokeGetValue().isEmpty()) {
((CreativeModeInventoryScreenInvoker) this.client.screen).updateCreativeSearch();
}
}

public void modifyText(char ch) {
int cursorPosition = accessor.getCursorPosition();
accessor.moveCursorTo(cursorPosition - 1, false);
accessor.deleteChars(1);
int cursorPosition = accessor.invokeGetCursorPosition();
accessor.invokeMoveCursorTo(cursorPosition - 1, false);
accessor.invokeDeleteChars(1);
this.writeText(String.valueOf(Character.toChars(ch)));
}


public boolean onBackspaceKeyPressed() {
if (!accessor.getHighlighted().isEmpty()) {
if (!accessor.invokeGetHighlighted().isEmpty()) {
return false;
}

int cursorPosition = accessor.getCursorPosition();
return MixinCommonHandler.onBackspaceKeyPressed(this, cursorPosition, accessor.getValue());
int cursorPosition = accessor.invokeGetCursorPosition();
return MixinCommonHandler.onBackspaceKeyPressed(this, cursorPosition, accessor.invokeGetValue());
}

public boolean onHangulCharTyped(int keyCode, int modifiers) {
return MixinCommonHandler.onHangulCharTyped(this, keyCode, modifiers, accessor.getValue(), accessor.getHighlighted().isEmpty());
return MixinCommonHandler.onHangulCharTyped(this, keyCode, modifiers, accessor.invokeGetValue(), accessor.invokeGetHighlighted().isEmpty());
}

public void typedTextField(char chr, int modifiers, CallbackInfoReturnable<Boolean> cir) {
Expand All @@ -73,7 +74,7 @@ public void typedTextField(char chr, int modifiers, CallbackInfoReturnable<Boole
return;
}

if (accessor.canConsumeInput()) {
if (accessor.invokeCanConsumeInput()) {
cir.setReturnValue(Boolean.TRUE);
} else {
cir.setReturnValue(Boolean.FALSE);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.hyfata.najoan.koreanpatch.handler.mixin.textfieldhelper;
package com.hyfata.najoan.koreanpatch.handler.mixin;

import com.hyfata.najoan.koreanpatch.handler.mixin.IMixinCommon;
import com.hyfata.najoan.koreanpatch.handler.mixin.MixinCommonHandler;
import com.hyfata.najoan.koreanpatch.handler.mixin.common.IMixinCommon;
import com.hyfata.najoan.koreanpatch.handler.mixin.common.MixinCommonHandler;
import com.hyfata.najoan.koreanpatch.mixin.accessor.TextFieldHelperAccessor;
import com.hyfata.najoan.koreanpatch.util.keyboard.KeyboardLayout;
import com.hyfata.najoan.koreanpatch.util.language.HangulProcessor;
import com.hyfata.najoan.koreanpatch.util.language.HangulUtil;
Expand All @@ -15,16 +16,16 @@
import java.util.Objects;

public class TextFieldHelperHandler implements IMixinCommon {
private final ITextFieldHelperAccessor accessor;
private final TextFieldHelperAccessor accessor;
private final Minecraft client = Minecraft.getInstance();

public TextFieldHelperHandler(ITextFieldHelperAccessor accessor) {
public TextFieldHelperHandler(TextFieldHelperAccessor accessor) {
this.accessor = accessor;
}

@Override
public void modifyText(char ch) {
int cursorPosition = accessor.koreanPatch$getCursor();
int cursorPosition = accessor.getCursor();
char[] arr = this.getText().toCharArray();
if (cursorPosition > 0 && cursorPosition <= arr.length) {
arr[cursorPosition - 1] = ch;
Expand All @@ -34,12 +35,12 @@ public void modifyText(char ch) {

@Override
public int getCursor() {
return accessor.koreanPatch$getCursor();
return accessor.getCursor();
}

@Override
public void writeText(String str) {
accessor.koreanPatch$runInsert(this.getText(), str);
accessor.runInsert(this.getText(), str);
}

public boolean onBackspaceKeyPressed() {
Expand All @@ -56,17 +57,17 @@ public int getModifiers() {
}

public String getText() {
return accessor.koreanPatch$getStringGetter().get();
return accessor.getStringGetter().get();
}

public void setText(String str) {
if (accessor.koreanPatch$getStringFilter().test(str)) {
accessor.koreanPatch$getStringSetter().accept(str);
if (accessor.getStringFilter().test(str)) {
accessor.getStringSetter().accept(str);
}
}

public boolean onHangulCharTyped(int keyCode, int modifiers) {
return MixinCommonHandler.onHangulCharTyped(this, keyCode, modifiers, this.getText(), accessor.koreanPatch$selectedText(accessor.koreanPatch$getStringGetter().get()).isEmpty());
return MixinCommonHandler.onHangulCharTyped(this, keyCode, modifiers, this.getText(), accessor.selectedText(accessor.getStringGetter().get()).isEmpty());
}

public void insertChar(char chr, CallbackInfoReturnable<Boolean> cir) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.hyfata.najoan.koreanpatch.handler.mixin;
package com.hyfata.najoan.koreanpatch.handler.mixin.common;

public interface IMixinCommon {
void modifyText(char ch);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.hyfata.najoan.koreanpatch.handler.mixin;
package com.hyfata.najoan.koreanpatch.handler.mixin.common;

import com.hyfata.najoan.koreanpatch.util.keyboard.KeyboardLayout;
import com.hyfata.najoan.koreanpatch.util.language.HangulProcessor;
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.hyfata.najoan.koreanpatch.mixin;

import com.hyfata.najoan.koreanpatch.client.KoreanPatchClient;
import com.hyfata.najoan.koreanpatch.mixin.accessor.EditBoxAccessor;
import com.hyfata.najoan.koreanpatch.util.language.LanguageUtil;
import com.hyfata.najoan.koreanpatch.handler.mixin.editbox.IEditBoxAccessor;
import com.hyfata.najoan.koreanpatch.handler.mixin.editbox.EditBoxHandler;
import com.hyfata.najoan.koreanpatch.handler.mixin.EditBoxHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.EditBox;
import org.lwjgl.glfw.GLFW;
Expand All @@ -14,57 +14,16 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import java.util.function.Consumer;

@Mixin(value = {EditBox.class})
public abstract class EditBoxMixin implements IEditBoxAccessor {
@Shadow
private Consumer<String> responder;
@Unique
private final Minecraft koreanPatch$client = Minecraft.getInstance();

@Shadow
public abstract int getCursorPosition();

@Shadow
public abstract void moveCursorTo(int var1, boolean shift);

@Shadow
public abstract void deleteChars(int var1);

@Shadow
public abstract String getValue();

@Shadow
public abstract void insertText(String var1);

public abstract class EditBoxMixin {
@Shadow
protected abstract boolean isEditable();

@Shadow
protected abstract void onValueChange(String var1);

@Shadow
public abstract void setValue(String var1);

@Shadow
public abstract boolean canConsumeInput();

@Shadow
public abstract String getHighlighted();

@Override
public Consumer<String> koreanPatch$getChangedListener() {
return this.responder;
}

@Override
public void koreanPatch$changed(String var1) {
onValueChange(var1);
}
@Unique
private final Minecraft koreanPatch$client = Minecraft.getInstance();

@Unique
private final EditBoxHandler koreanPatch$handler = new EditBoxHandler(this);
private final EditBoxHandler koreanPatch$handler = new EditBoxHandler((EditBoxAccessor) this);

@Inject(at = {@At(value = "HEAD")}, method = {"charTyped(CI)Z"}, cancellable = true)
public void charTyped(char chr, int modifiers, CallbackInfoReturnable<Boolean> cir) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,75 +1,21 @@
package com.hyfata.najoan.koreanpatch.mixin;

import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;

import com.hyfata.najoan.koreanpatch.client.KoreanPatchClient;
import com.hyfata.najoan.koreanpatch.handler.mixin.textfieldhelper.ITextFieldHelperAccessor;
import com.hyfata.najoan.koreanpatch.handler.mixin.textfieldhelper.TextFieldHelperHandler;
import com.hyfata.najoan.koreanpatch.handler.mixin.TextFieldHelperHandler;
import com.hyfata.najoan.koreanpatch.mixin.accessor.TextFieldHelperAccessor;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.font.TextFieldHelper;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(value = {TextFieldHelper.class})
public abstract class TextFieldHelperMixin implements ITextFieldHelperAccessor {
@Shadow
private int selectionPos;
@Shadow
@Final
private Supplier<String> getMessageFn;
@Shadow
@Final
private Predicate<String> stringValidator;
@Shadow
@Final
private Consumer<String> setMessageFn;

@Shadow
protected abstract String getSelected(String string);

@Shadow
protected abstract void insertText(String string, String insertion);

public abstract class TextFieldHelperMixin {
@Unique
private final TextFieldHelperHandler koreanPatch$handler = new TextFieldHelperHandler(this);

@Override
public int koreanPatch$getCursor() {
return this.selectionPos;
}

@Override
public Supplier<String> koreanPatch$getStringGetter() {
return this.getMessageFn;
}

@Override
public Predicate<String> koreanPatch$getStringFilter() {
return this.stringValidator;
}

@Override
public Consumer<String> koreanPatch$getStringSetter() {
return this.setMessageFn;
}

@Override
public String koreanPatch$selectedText(String string) {
return getSelected(string);
}

@Override
public void koreanPatch$runInsert(String string, String insertion) {
insertText(string, insertion);
}
private final TextFieldHelperHandler koreanPatch$handler = new TextFieldHelperHandler((TextFieldHelperAccessor) this);

@Inject(at = {@At(value = "HEAD")}, method = {"charTyped(C)Z"}, cancellable = true)
public void insertChar(char chr, CallbackInfoReturnable<Boolean> cir) {
Expand Down
Loading

0 comments on commit a488de6

Please sign in to comment.