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

Commit 34da3b3

Browse files
committed
lots of works
1 parent e3e6e3e commit 34da3b3

File tree

7 files changed

+196
-13
lines changed

7 files changed

+196
-13
lines changed

META-INF/MANIFEST.MF

Lines changed: 0 additions & 3 deletions
This file was deleted.

build.gradle

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
buildscript {
2+
repositories {
3+
mavenCentral()
4+
maven {
5+
name = "forge"
6+
url = "http://files.minecraftforge.net/maven"
7+
}
8+
maven {
9+
name = "sonatype"
10+
url = "https://oss.sonatype.org/content/repositories/snapshots/"
11+
}
12+
}
13+
dependencies {
14+
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
15+
}
16+
}
17+
18+
apply plugin: 'forge'
19+
20+
version = "0.2-dev"
21+
group= "org.devinprogress.YAIF" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
22+
archivesBaseName = "YetAnotherInputFix"
23+
24+
minecraft {
25+
version = "1.7.2-10.12.2.1121"
26+
assetDir = "eclipse/assets"
27+
}
28+
29+
30+
jar
31+
{
32+
manifest {
33+
attributes 'FMLCorePlugin': 'org.devinprogress.YAIF.TransformerLoader'
34+
attributes 'FMLCorePluginContainsFMLMod': true
35+
}
36+
}
37+
38+
processResources
39+
{
40+
inputs.property "version", project.version
41+
inputs.property "mcversion", project.minecraft.version
42+
from(sourceSets.main.resources.srcDirs) {
43+
include 'mcmod.info'
44+
expand 'version':project.version, 'mcversion':project.minecraft.version
45+
}
46+
from(sourceSets.main.resources.srcDirs) {
47+
exclude 'mcmod.info'
48+
}
49+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package org.devinprogress.YAIF.Bridges;
2+
3+
import net.minecraft.client.gui.GuiScreen;
4+
import net.minecraft.client.gui.GuiScreenBook;
5+
import net.minecraft.client.gui.GuiTextField;
6+
import net.minecraft.nbt.NBTTagList;
7+
import org.devinprogress.YAIF.YetAnotherInputFix;
8+
9+
import javax.swing.*;
10+
import java.lang.reflect.Field;
11+
12+
/**
13+
* Created by recursiveg on 14-10-2.
14+
*/
15+
public class EditBookBridge implements IActionBridge {
16+
private boolean canedit=false;
17+
private Field F_isEditingTitle =null;
18+
private Field F_PagesNBT=null;
19+
private GuiScreenBook sc=null;
20+
21+
private NBTTagList pages;
22+
23+
public EditBookBridge(GuiScreenBook sc){
24+
try{
25+
Field f=sc.getClass().getField(YetAnotherInputFix.ObfuscatedEnv?"field_146475_i":"bookIsUnsigned");
26+
f.setAccessible(true); canedit=(Boolean)f.get(sc);
27+
28+
Field modified=sc.getClass().getField("field_146481_r");
29+
modified.setAccessible(true); modified.set(sc,true);
30+
31+
F_isEditingTitle =sc.getClass().getField("field_146480_s");
32+
F_isEditingTitle.setAccessible(true);
33+
34+
F_PagesNBT=sc.getClass().getField(YetAnotherInputFix.ObfuscatedEnv?"field_146483_y":"bookPages");
35+
F_PagesNBT.setAccessible(true);
36+
37+
this.sc=sc;
38+
}catch(Exception e){
39+
e.printStackTrace();
40+
}
41+
}
42+
43+
@Override
44+
public ActionFeedback onEnter(JTextField txt) {
45+
return null;
46+
}
47+
48+
@Override
49+
public ActionFeedback onEsc(JTextField txt) {
50+
return null;
51+
}
52+
53+
@Override
54+
public ActionFeedback onChange(JTextField txt) {
55+
return null;
56+
}
57+
58+
@Override
59+
public ActionFeedback onTab(JTextField txt) {
60+
return null;
61+
}
62+
63+
@Override
64+
public ActionFeedback onUp(JTextField txt) {
65+
return null;
66+
}
67+
68+
@Override
69+
public ActionFeedback onDown(JTextField txt) {
70+
return null;
71+
}
72+
73+
@Override
74+
public boolean sameAs(GuiScreen screen, GuiTextField txtField) {
75+
return false;
76+
}
77+
}

src/main/java/org/devinprogress/YAIF/Bridges/EditSignBridge.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public EditSignBridge(GuiEditSign gui,InputFieldWrapper w){
3636
}
3737
}
3838

39+
//TODO: modification needed of updated
3940
try {
4041
currentLineField = gui.getClass().getDeclaredField(YetAnotherInputFix.ObfuscatedEnv ? "field_146851_h" : "editLine");
4142
currentLineField.setAccessible(true);
@@ -63,7 +64,10 @@ public ActionFeedback onEsc(JTextField txt) {
6364

6465
@Override
6566
public ActionFeedback onChange(JTextField txt) {
66-
sign.signText[currentLine]=txt.getText();
67+
if(txt.getText().length()<=15)
68+
sign.signText[currentLine]=txt.getText();
69+
else
70+
sign.signText[currentLine]=txt.getText().substring(0,15);
6771
return null;
6872
}
6973

src/main/java/org/devinprogress/YAIF/Bridges/GuiChatBridge.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.devinprogress.YAIF.Bridges;
22

3+
import cpw.mods.fml.client.FMLClientHandler;
34
import net.minecraft.client.gui.GuiChat;
45
import net.minecraft.client.gui.GuiScreen;
56
import net.minecraft.client.gui.GuiTextField;
67
import org.devinprogress.YAIF.InputFieldWrapper;
78
import org.devinprogress.YAIF.YetAnotherInputFix;
9+
import org.lwjgl.input.Keyboard;
810

911
import javax.swing.*;
1012
import java.lang.reflect.Field;
@@ -63,23 +65,41 @@ public ActionFeedback onEnter(JTextField txt) { //send
6365
}catch(Exception e){
6466
e.printStackTrace();
6567
}
68+
Keyboard.enableRepeatEvents(false);
69+
FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().resetScroll();
70+
6671
return ActionFeedback.Quit;
6772
}
6873

6974
@Override
7075
public ActionFeedback onEsc(JTextField txt) {
7176
//SetInGameFocus will close the GuiChat.
77+
Keyboard.enableRepeatEvents(false);
78+
FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().resetScroll();
7279
return ActionFeedback.Quit;
7380
}
7481

7582
@Override
76-
public ActionFeedback onChange(JTextField txt) {
77-
this.txt.setText(txt.getText());
83+
public ActionFeedback onChange(final JTextField txt) {
84+
final String str;
85+
if(txt.getText().length()>100){
86+
str=txt.getText().substring(0,100);
87+
SwingUtilities.invokeLater(new Runnable() {
88+
@Override
89+
public void run() {
90+
txt.setText(str);
91+
}
92+
});
93+
}else{
94+
str=txt.getText();
95+
}
96+
this.txt.setText(str);
7897
return IActionBridge.ActionFeedback.Nothing;
7998
}
8099

81100
@Override
82101
public ActionFeedback onTab(JTextField txt) {
102+
//You have to listen to S3APacketTabComplete to get the compliance result.
83103
YetAnotherInputFix.logger.info("Tab Completion not finished yet.");
84104
//TODO: Finish it.
85105
return null;//return null == return Nothing

src/main/java/org/devinprogress/YAIF/InputFieldWrapper.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,20 @@ public void actionPerformed(ActionEvent event) {
125125
txtField.getDocument().addDocumentListener(new DocumentListener() {
126126
@Override
127127
public void insertUpdate(DocumentEvent e) {
128-
if(bridge!=null)if(doTriggerOnChangeEvent)DoActions(bridge.onChange(txtField),null);else doTriggerOnChangeEvent=true;
128+
if(bridge!=null&&doTriggerOnChangeEvent)
129+
DoActions(bridge.onChange(txtField), null);
130+
doTriggerOnChangeEvent = true;
129131
}
130132

131133
@Override
132134
public void removeUpdate(DocumentEvent e) {
133-
if(bridge!=null)if(doTriggerOnChangeEvent)DoActions(bridge.onChange(txtField),null);else doTriggerOnChangeEvent=true;
135+
if(bridge!=null&&doTriggerOnChangeEvent)
136+
DoActions(bridge.onChange(txtField), null);
137+
doTriggerOnChangeEvent = true;
134138
}
135139

136140
@Override
137141
public void changedUpdate(DocumentEvent e) {
138-
139142
}
140143
});
141144

@@ -210,9 +213,14 @@ else if(YetAnotherInputFix.currentGuiScreen instanceof GuiEditSign)
210213
//else bridge=new CommonBridge(YetAnotherInputFix.currentTextField, this);
211214
}
212215

213-
public void setTextNoEvent(String str){
214-
doTriggerOnChangeEvent=false;
215-
txtField.setText(str);
216-
txtField.setCaretPosition(txtField.getText().length());
216+
public void setTextNoEvent(final String str){
217+
//doTriggerOnChangeEvent=false;
218+
SwingUtilities.invokeLater(new Runnable() {
219+
@Override
220+
public void run() {
221+
txtField.setText(str);
222+
txtField.setCaretPosition(txtField.getText().length());
223+
}
224+
});
217225
}
218226
}

src/main/java/org/devinprogress/YAIF/YetAnotherInputFix.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package org.devinprogress.YAIF;
22

33
import cpw.mods.fml.client.FMLClientHandler;
4+
import cpw.mods.fml.client.registry.ClientRegistry;
45
import cpw.mods.fml.common.*;
56
import cpw.mods.fml.common.event.FMLInitializationEvent;
67
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
8+
import cpw.mods.fml.common.gameevent.InputEvent;
79
import cpw.mods.fml.common.gameevent.TickEvent;
10+
import net.minecraft.client.gui.GuiNewChat;
811
import net.minecraft.client.gui.GuiScreen;
912
import net.minecraft.client.gui.GuiTextField;
1013
import net.minecraft.client.gui.inventory.GuiEditSign;
14+
import net.minecraft.client.settings.KeyBinding;
15+
import net.minecraftforge.client.event.GuiOpenEvent;
1116
import net.minecraftforge.client.event.GuiScreenEvent;
1217
import net.minecraftforge.common.MinecraftForge;
18+
import org.lwjgl.input.Keyboard;
1319
import org.lwjgl.opengl.Display;
1420

1521
import java.lang.reflect.Field;
@@ -32,6 +38,7 @@ public class YetAnotherInputFix{
3238
public static GuiTextField txt = null;
3339
public static final Logger logger=Logger.getLogger("YAIF");
3440
public static boolean needFocus=false;
41+
private KeyBinding debugKey=new KeyBinding("Debug Key",Keyboard.KEY_Y,"YAIF");
3542

3643
//Will be called before the Constructor! Be careful.
3744
public static void SetupTextFieldWrapper(int W, int H){
@@ -40,10 +47,18 @@ public static void SetupTextFieldWrapper(int W, int H){
4047

4148
@Mod.EventHandler
4249
public void load(FMLInitializationEvent event) {
50+
ClientRegistry.registerKeyBinding(debugKey);
4351
MinecraftForge.EVENT_BUS.register(this);
4452
FMLCommonHandler.instance().bus().register(this);
4553
}
4654

55+
@SubscribeEvent
56+
public void onKeyPressed(InputEvent.KeyInputEvent e){
57+
if(debugKey.isPressed()){
58+
wrapper.hide();
59+
}
60+
}
61+
4762
@SubscribeEvent
4863
public void onGuiChange(GuiScreenEvent.InitGuiEvent.Post e) {
4964
if(e.gui instanceof GuiEditSign){
@@ -55,6 +70,7 @@ public void onGuiChange(GuiScreenEvent.InitGuiEvent.Post e) {
5570

5671
//Multi-threading is a problem
5772
//TODO: UGLY PATCH!!!
73+
//TODO: use ASM to reduce potential lag
5874
@SubscribeEvent
5975
public void tryGetFocus(TickEvent.ClientTickEvent event){
6076
if(needFocus){
@@ -65,11 +81,18 @@ public void tryGetFocus(TickEvent.ClientTickEvent event){
6581
}
6682
if(Display.isActive()){
6783
FMLClientHandler.instance().getClient().setIngameFocus();
84+
6885
needFocus=false;
6986
}
7087
}
7188
}
7289

90+
@SubscribeEvent
91+
public void onGuiClosing(GuiOpenEvent e){
92+
if(e.gui==null&&FMLClientHandler.instance().getClient().currentScreen==currentGuiScreen)
93+
wrapper.hide();
94+
}
95+
7396
//Called from GuiTextField.setFocused() due to ASMTransformed
7497
public static void TextFieldFocusChange(GuiTextField textField, boolean isFocused) {
7598
if (isFocused) {
@@ -87,6 +110,11 @@ public static void TextFieldFocusChange(GuiTextField textField, boolean isFocuse
87110
}
88111
}
89112

113+
@SubscribeEvent
114+
public void keyEvents(InputEvent.KeyInputEvent e){
115+
System.out.println(String.format("Typedkey=%d",Keyboard.getEventKey()));
116+
}
117+
90118
private static boolean GuiCanInput(GuiScreen gui){
91119
if(gui==null)return false;
92120
Class GuiClass=gui.getClass();

0 commit comments

Comments
 (0)