Skip to content
This repository has been archived by the owner on Jan 3, 2020. It is now read-only.

Commit

Permalink
to be continue...
Browse files Browse the repository at this point in the history
  • Loading branch information
RecursiveG committed Sep 15, 2014
1 parent 70b8245 commit 81e36e1
Show file tree
Hide file tree
Showing 12 changed files with 297 additions and 237 deletions.
4 changes: 2 additions & 2 deletions META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Manifest-Version: 1.0
FMLCorePlugin: org.devinprogress.inputfix.TransformerLoader
Created-By: 1.7.0 (Oracle Corporation)
FMLCorePlugin: org.devinprogress.YAIF.TransformerLoader
FMLCorePluginContainsFMLMod: true
9 changes: 2 additions & 7 deletions README.MD
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
## Yet Another InputFix Mod
Using ASM Transformer to hook into Minecraft, hoping to provide a universal solution available anywhere.
Using ASM Transformer to hook into Minecraft, hoping to provide a universal solution to Minecraft IME issue.
Forge Required.

## Bugs & TODOs

- IBus still not work.
- Make it available for GuiEditSign & GuiEditBook
- Complete the Bridge system

## License
- GPLv3
- **NOT** allowed in ModPacks without my permission.
- USE AT YOUR OWN RISK
129 changes: 0 additions & 129 deletions src/java/org/devinprogress/inputfix/InputBox.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package org.devinprogress.inputfix;
package org.devinprogress.YAIF.Bridges;

import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import org.devinprogress.YAIF.InputFieldWrapper;

import javax.swing.*;

Expand All @@ -11,34 +12,40 @@
public class CommonBridge implements IActionBridge{
private GuiTextField txt=null;

public CommonBridge(GuiTextField textField,GuiScreen screen,InputFieldWrapper wrapper){
public CommonBridge(GuiTextField textField,InputFieldWrapper wrapper){
txt=textField;
wrapper.DoActions(ActionFeedback.SetText,txt.getText());

}
@Override
public IActionBridge.ActionFeedback onEnter(JTextField txt) {
//System.out.println("[Debug Bridge][onEnter]"+txt.getText());
public IActionBridge.ActionFeedback onEnter(JTextField txt) { //send msg
this.txt.setText(txt.getText());
return IActionBridge.ActionFeedback.Quit;
}

@Override
public IActionBridge.ActionFeedback onEsc(JTextField txt) {
//System.out.println("[Debug Bridge][onEsc]"+txt.getText());
return IActionBridge.ActionFeedback.Quit;
}

@Override
public IActionBridge.ActionFeedback onChanged(JTextField txt) {
//System.out.println("[Debug Bridge][onChange]"+txt.getText());
public IActionBridge.ActionFeedback onChange(JTextField txt) {
this.txt.setText(txt.getText());
return IActionBridge.ActionFeedback.Nothing;
}

@Override
public IActionBridge.ActionFeedback onTab(JTextField txt) {
//System.out.println("[Debug Bridge][onTab]"+txt.getText());
return IActionBridge.ActionFeedback.Nothing;
}

@Override
public ActionFeedback onUp(JTextField txt) {
return null;
}

@Override
public ActionFeedback onDown(JTextField txt) {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package org.devinprogress.inputfix;
package org.devinprogress.YAIF.Bridges;

import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import org.devinprogress.YAIF.InputFieldWrapper;

import javax.swing.*;

Expand All @@ -26,7 +27,7 @@ public ActionFeedback onEsc(JTextField txt) {
}

@Override
public ActionFeedback onChanged(JTextField txt) {
public ActionFeedback onChange(JTextField txt) {
System.out.println("[Debug Bridge][onChange]"+txt.getText());
return ActionFeedback.Nothing;
}
Expand All @@ -36,4 +37,14 @@ public ActionFeedback onTab(JTextField txt) {
System.out.println("[Debug Bridge][onTab]"+txt.getText());
return ActionFeedback.Nothing;
}

@Override
public ActionFeedback onUp(JTextField txt) {
return null;
}

@Override
public ActionFeedback onDown(JTextField txt) {
return null;
}
}
97 changes: 97 additions & 0 deletions src/main/java/org/devinprogress/YAIF/Bridges/GuiChatBridge.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package org.devinprogress.YAIF.Bridges;

import cpw.mods.fml.client.FMLClientHandler;
import net.minecraft.client.gui.GuiChat;
import net.minecraft.client.gui.GuiTextField;
import org.devinprogress.YAIF.InputFieldWrapper;
import org.devinprogress.YAIF.YetAnotherInputFix;

import javax.swing.*;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.logging.Logger;

/**
* Created by recursiveg on 14-9-13.
*/
public class GuiChatBridge implements IActionBridge {
private GuiChat screen=null;
private GuiTextField txt=null;
private InputFieldWrapper wrapper=null;

private static Method keyTypedMethod=null;

public GuiChatBridge(GuiTextField textField,GuiChat screen,InputFieldWrapper wrapper){
this.screen=screen;
txt=textField;
this.wrapper=wrapper;
wrapper.DoActions(ActionFeedback.SetText,txt.getText());

//TODO: use AccessTransformer instead of reflection
if(keyTypedMethod==null){
for(Method m:screen.getClass().getDeclaredMethods()){
if(m.getParameterTypes().length==2&&m.getReturnType()==void.class&&m.getParameterTypes()[0]==char.class&&m.getParameterTypes()[1]==int.class){
//The Method Desc "(CI)V" seem to be unique
keyTypedMethod=m;
keyTypedMethod.setAccessible(true);
}
}
}
}

@Override
public ActionFeedback onEnter(JTextField txt) { //send
this.txt.setText(txt.getText());
/*try {
keyTypedMethod.invoke(screen, '\n', 28);//Magic Numbers can be found at http://minecraft.gamepedia.com/Key_Codes
}catch(Exception e){
e.printStackTrace();
}*/
return ActionFeedback.Quit;
}

@Override
public ActionFeedback onEsc(JTextField txt) {
/*try {
keyTypedMethod.invoke(screen, ' ', 1);
}catch(Exception e){
e.printStackTrace();
}*/
return ActionFeedback.Quit;
}

@Override
public ActionFeedback onChange(JTextField txt) {
this.txt.setText(txt.getText());
return IActionBridge.ActionFeedback.Nothing;
}

@Override
public ActionFeedback onTab(JTextField txt) {
YetAnotherInputFix.logger.info("Tab Completion not finished yet.");
//TODO: Finish it.
return null;//return null == return Nothing
}

@Override
public ActionFeedback onUp(JTextField txt) {
try {
keyTypedMethod.invoke(screen, ' ', 200);
}catch(Exception e){
e.printStackTrace();
}
wrapper.setTextNoEvent(this.txt.getText());
return null;
}

@Override
public ActionFeedback onDown(JTextField txt) {
try {
keyTypedMethod.invoke(screen, ' ', 208);
}catch(Exception e){
e.printStackTrace();
}
wrapper.setTextNoEvent(this.txt.getText());
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.devinprogress.inputfix;
package org.devinprogress.YAIF.Bridges;

import javax.swing.*;

Expand All @@ -13,8 +13,12 @@ enum ActionFeedback{
Quit,
SetText
}

//TODO: Maybe it's a better idea to make wrapper.txtField public?
public ActionFeedback onEnter(final JTextField txt);
public ActionFeedback onEsc(final JTextField txt);
public ActionFeedback onChanged(final JTextField txt);
public ActionFeedback onChange(final JTextField txt);
public ActionFeedback onTab(final JTextField txt);
public ActionFeedback onUp(final JTextField txt);
public ActionFeedback onDown(final JTextField txt);
}
Loading

0 comments on commit 81e36e1

Please sign in to comment.