mirror of
https://github.com/GTNewHorizons/lwjgl3ify.git
synced 2026-11-14 01:14:02 +00:00
fix Chinese IME support for BetterQuesting, BiblioCraft, StevesFactory, LogisticsPipes (#385)
This commit is contained in:
1 parent
4dfbe07fd7
commit
77cd7c49c0
14 files changed
+349
-1
No files matched your search
@@ -65,7 +65,12 @@ dependencies {
|
||||
|
||||
compileOnly(rfg.deobf("curse.maven:xaeros-minimap-263420:6012805"))
|
||||
compileOnly(rfg.deobf("curse.maven:xaeros-world-map-317780:5987124"))
|
||||
compileOnly(rfg.deobf("curse.maven:bibliocraft-228027:2423369"))
|
||||
compileOnly('com.github.GTNewHorizons:OpenComputers:1.12.64-GTNH:dev')
|
||||
compileOnly('com.github.GTNewHorizons:BetterQuesting:3.8.92-GTNH:dev')
|
||||
compileOnly('com.github.GTNewHorizons:StevesAddons:0.15.5:dev')
|
||||
compileOnly('com.github.GTNewHorizons:LogisticsPipes:1.5.37-GTNH:dev')
|
||||
compileOnly('ganymedes01.etfuturum:Et-Futurum-Requiem:2.6.64-GTNH:dev')
|
||||
|
||||
runtimeOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.160-GTNH:dev')
|
||||
// runtimeOnlyNonPublishable('com.github.GTNewHorizons:OpenComputers:1.12.64-GTNH:dev')
|
||||
|
||||
@@ -60,6 +60,33 @@ public enum Mixins implements IMixins {
|
||||
OPENCOMPUTERS_KEYBOARD_INPUT_FIX(Phase.EARLY, new MixinBuilder()
|
||||
.addClientMixins("oc.OcInputBuffer")
|
||||
.addRequiredMod(TargetedMod.OPENCOMPUTERS)),
|
||||
BETTERQUESTING_TEXT_FIELD_SDL_INPUT(Phase.LATE, new MixinBuilder()
|
||||
.addClientMixins(
|
||||
"bq.BqTextInput",
|
||||
"bq.BqPanelTextField")
|
||||
.addRequiredMod(TargetedMod.BETTERQUESTING)),
|
||||
BIBLIOCRAFT_TEXT_FIELD_SDL_INPUT(Phase.LATE, new MixinBuilder()
|
||||
.addClientMixins(
|
||||
"biblio.BiblioCraftClipboard",
|
||||
"biblio.BiblioCraftFancySign",
|
||||
"biblio.BiblioCraftTextField")
|
||||
.addRequiredMod(TargetedMod.BIBLIOCRAFT)),
|
||||
STEVES_ADDON_TEXT_FIELD_SDL_INPUT(Phase.LATE, new MixinBuilder()
|
||||
.addClientMixins("steves.StevesAddonLabeler")
|
||||
.addRequiredMod(TargetedMod.STEVES_ADDON)),
|
||||
STEVES_FACTORY_TEXT_FIELD_SDL_INPUT(Phase.LATE, new MixinBuilder()
|
||||
.addClientMixins(
|
||||
"steves.StevesFactoryManager",
|
||||
"steves.StevesFactoryTextField")
|
||||
.addRequiredMod(TargetedMod.STEVES_FACTORY)),
|
||||
LOGISTICSPIPES_TEXT_FIELD_SDL_INPUT(Phase.LATE, new MixinBuilder()
|
||||
.addClientMixins(
|
||||
"logistics.LogisticsPipesTextInput",
|
||||
"logistics.LogisticsPipesTextField")
|
||||
.addRequiredMod(TargetedMod.LOGISTICSPIPES)),
|
||||
ETFUTURUM_TEXT_FIELD_SDL_INPUT(Phase.LATE, new MixinBuilder()
|
||||
.addClientMixins("etfuturum.EtfuturumWoodSign")
|
||||
.addRequiredMod(TargetedMod.ETFUTURUM)),
|
||||
|
||||
// apply the texture stitching mixin if
|
||||
// - you don't have fastcraft
|
||||
|
||||
@@ -30,7 +30,13 @@ public enum TargetedMod implements ITargetMod {
|
||||
XAEROS_WORLDMAP(new TargetModBuilder().setModId("XaeroWorldMap")),
|
||||
// Support both the NH fork and upstream
|
||||
OPENCOMPUTERS(new TargetModBuilder().setCoreModClass("li.cil.oc.common.launch.TransformerLoader")
|
||||
.setModId("OpenComputers"))
|
||||
.setModId("OpenComputers")),
|
||||
BETTERQUESTING(new TargetModBuilder().setModId("betterquesting")),
|
||||
BIBLIOCRAFT(new TargetModBuilder().setModId("BiblioCraft")),
|
||||
STEVES_ADDON(new TargetModBuilder().setModId("StevesAddons")),
|
||||
STEVES_FACTORY(new TargetModBuilder().setModId("StevesFactoryManager")),
|
||||
LOGISTICSPIPES(new TargetModBuilder().setModId("LogisticsPipes")),
|
||||
ETFUTURUM(new TargetModBuilder().setModId("etfuturum"))
|
||||
//
|
||||
;
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.biblio;
|
||||
|
||||
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 jds.bibliocraft.gui.GuiClipboard;
|
||||
import me.eigenraven.lwjgl3ify.client.TextFieldHandler;
|
||||
|
||||
@Mixin(value = GuiClipboard.class)
|
||||
public class BiblioCraftClipboard {
|
||||
|
||||
@Inject(method = "initGui()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onInit(CallbackInfo ci) {
|
||||
TextFieldHandler.beginTextInput();
|
||||
}
|
||||
|
||||
@Inject(method = "onGuiClosed()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onClosed(CallbackInfo ci) {
|
||||
TextFieldHandler.endTextInput(null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.biblio;
|
||||
|
||||
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 jds.bibliocraft.gui.GuiFancySign;
|
||||
import me.eigenraven.lwjgl3ify.client.TextFieldHandler;
|
||||
|
||||
@Mixin(value = GuiFancySign.class)
|
||||
public class BiblioCraftFancySign {
|
||||
|
||||
@Inject(method = "initGui()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onInit(CallbackInfo ci) {
|
||||
TextFieldHandler.beginTextInput();
|
||||
}
|
||||
|
||||
@Inject(method = "onGuiClosed()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onClosed(CallbackInfo ci) {
|
||||
TextFieldHandler.endTextInput(null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.biblio;
|
||||
|
||||
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.Slice;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import jds.bibliocraft.gui.GuiBiblioTextField;
|
||||
|
||||
@Mixin(value = GuiBiblioTextField.class)
|
||||
public abstract class BiblioCraftTextField {
|
||||
|
||||
@Inject(
|
||||
method = "textboxKeyTyped",
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Ljds/bibliocraft/gui/GuiBiblioTextField;writeText(Ljava/lang/String;)V",
|
||||
remap = false),
|
||||
slice = @Slice(
|
||||
from = @At(value = "INVOKE", target = "Lnet/minecraft/util/ChatAllowedCharacters;isAllowedCharacter(C)Z")),
|
||||
remap = false,
|
||||
cancellable = true)
|
||||
public void lwjgl3ify$fixDoubleChar(char typedChar, int keyCode, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (keyCode != 0) {
|
||||
cir.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.bq;
|
||||
|
||||
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.Slice;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import betterquesting.api2.client.gui.controls.PanelTextField;
|
||||
|
||||
@Mixin(value = PanelTextField.class)
|
||||
public abstract class BqPanelTextField {
|
||||
|
||||
@Inject(
|
||||
method = "onKeyTyped",
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Lbetterquesting/api2/client/gui/controls/PanelTextField;writeText(Ljava/lang/String;)V",
|
||||
remap = false),
|
||||
slice = @Slice(
|
||||
from = @At(value = "INVOKE", target = "Lnet/minecraft/util/ChatAllowedCharacters;isAllowedCharacter(C)Z")),
|
||||
remap = false,
|
||||
cancellable = true)
|
||||
public void lwjgl3ify$fixDoubleChar(char typedChar, int keyCode, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (keyCode != 0) {
|
||||
cir.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.bq;
|
||||
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
|
||||
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 betterquesting.client.gui2.GuiQuestSearch;
|
||||
import betterquesting.client.gui2.editors.GuiQuestLinesEditor;
|
||||
import betterquesting.client.gui2.editors.GuiTaskEditor;
|
||||
import betterquesting.client.gui2.editors.nbt.GuiEntitySelection;
|
||||
import betterquesting.client.gui2.editors.nbt.GuiFluidSelection;
|
||||
import betterquesting.client.gui2.editors.nbt.GuiNbtAdd;
|
||||
import bq_standard.client.gui.editors.GuiEditLootGroup;
|
||||
import bq_standard.client.gui.editors.tasks.GuiEditTaskScoreboard;
|
||||
import me.eigenraven.lwjgl3ify.client.TextFieldHandler;
|
||||
|
||||
@Mixin(
|
||||
value = { GuiQuestSearch.class, GuiEditLootGroup.class, GuiEditTaskScoreboard.class, GuiEntitySelection.class,
|
||||
GuiFluidSelection.class, GuiQuestLinesEditor.class, GuiTaskEditor.class, GuiNbtAdd.class })
|
||||
public abstract class BqTextInput extends GuiScreen {
|
||||
|
||||
@Inject(method = "initPanel()V", at = @At("HEAD"), remap = false)
|
||||
private void lwjgl3ify$onInit(CallbackInfo ci) {
|
||||
TextFieldHandler.beginTextInput();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
super.onGuiClosed();
|
||||
TextFieldHandler.endTextInput(null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.etfuturum;
|
||||
|
||||
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 ganymedes01.etfuturum.client.gui.inventory.GuiEditWoodSign;
|
||||
import me.eigenraven.lwjgl3ify.client.TextFieldHandler;
|
||||
|
||||
@Mixin(value = GuiEditWoodSign.class)
|
||||
public class EtfuturumWoodSign {
|
||||
|
||||
@Inject(method = "initGui()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onInit(CallbackInfo ci) {
|
||||
TextFieldHandler.beginTextInput();
|
||||
}
|
||||
|
||||
@Inject(method = "onGuiClosed()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onClosed(CallbackInfo ci) {
|
||||
TextFieldHandler.endTextInput(null);
|
||||
}
|
||||
|
||||
@Inject(
|
||||
method = "keyTyped",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/util/ChatAllowedCharacters;isAllowedCharacter(C)Z"),
|
||||
cancellable = true)
|
||||
private void lwjgl3ify$fixDoubleChar(char typedChar, int keyCode, CallbackInfo ci) {
|
||||
if (keyCode != 0) {
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.logistics;
|
||||
|
||||
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;
|
||||
|
||||
import logisticspipes.utils.gui.SearchBar;
|
||||
|
||||
@Mixin(value = SearchBar.class)
|
||||
public abstract class LogisticsPipesTextField {
|
||||
|
||||
@Inject(
|
||||
method = "handleKey",
|
||||
at = @At(value = "INVOKE", target = "Ljava/lang/Character;isISOControl(C)Z"),
|
||||
remap = false,
|
||||
cancellable = true)
|
||||
public void lwjgl3ify$fixDoubleChar(char typedChar, int keyCode, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (keyCode != 0) {
|
||||
cir.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.logistics;
|
||||
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
|
||||
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 logisticspipes.gui.orderer.GuiOrderer;
|
||||
import logisticspipes.gui.popup.GuiAddTracking;
|
||||
import me.eigenraven.lwjgl3ify.client.TextFieldHandler;
|
||||
|
||||
@Mixin(value = { GuiOrderer.class, GuiAddTracking.class })
|
||||
public abstract class LogisticsPipesTextInput extends GuiScreen {
|
||||
|
||||
@Inject(method = "initGui()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onInit(CallbackInfo ci) {
|
||||
TextFieldHandler.beginTextInput();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
super.onGuiClosed();
|
||||
TextFieldHandler.endTextInput(null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.steves;
|
||||
|
||||
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 me.eigenraven.lwjgl3ify.client.TextFieldHandler;
|
||||
import stevesaddons.interfaces.GuiLabeler;
|
||||
|
||||
@Mixin(value = GuiLabeler.class)
|
||||
public class StevesAddonLabeler {
|
||||
|
||||
@Inject(method = "initGui()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onInit(CallbackInfo ci) {
|
||||
TextFieldHandler.beginTextInput();
|
||||
}
|
||||
|
||||
@Inject(method = "onGuiClosed()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onClosed(CallbackInfo ci) {
|
||||
TextFieldHandler.endTextInput(null);
|
||||
}
|
||||
|
||||
@Inject(
|
||||
method = "keyTyped",
|
||||
at = @At(value = "INVOKE", target = "Lstevesaddons/interfaces/GuiTextField;keyTyped(CI)V", remap = false),
|
||||
cancellable = true)
|
||||
private void lwjgl3ify$fixDoubleChar(char character, int keyCode, CallbackInfo ci) {
|
||||
if (Character.isLetterOrDigit(character) && keyCode != 0) {
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.steves;
|
||||
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
|
||||
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 me.eigenraven.lwjgl3ify.client.TextFieldHandler;
|
||||
import vswe.stevesfactory.interfaces.GuiManager;
|
||||
|
||||
@Mixin(value = GuiManager.class)
|
||||
public abstract class StevesFactoryManager extends GuiScreen {
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
TextFieldHandler.beginTextInput();
|
||||
}
|
||||
|
||||
@Inject(method = "onGuiClosed()V", at = @At("HEAD"))
|
||||
private void lwjgl3ify$onClosed(CallbackInfo ci) {
|
||||
TextFieldHandler.endTextInput(null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package me.eigenraven.lwjgl3ify.mixins.late.steves;
|
||||
|
||||
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.Slice;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import vswe.stevesfactory.components.TextBoxLogic;
|
||||
import vswe.stevesfactory.interfaces.GuiManager;
|
||||
|
||||
@Mixin(value = TextBoxLogic.class)
|
||||
public abstract class StevesFactoryTextField {
|
||||
|
||||
@Inject(
|
||||
method = "onKeyStroke",
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Lvswe/stevesfactory/components/TextBoxLogic;addText(Lvswe/stevesfactory/interfaces/GuiManager;Ljava/lang/String;)V",
|
||||
remap = false),
|
||||
slice = @Slice(from = @At(value = "INVOKE", target = "Ljava/lang/Character;isISOControl(C)Z")),
|
||||
remap = false,
|
||||
cancellable = true)
|
||||
public void lwjgl3ify$fixDoubleChar(GuiManager gui, char c, int k, CallbackInfo ci) {
|
||||
if (k != 0) {
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user