diff --git a/resources/patches-deobfuscated.xml b/resources/patches-deobfuscated.xml
index b6a5e94a..721acca7 100644
--- a/resources/patches-deobfuscated.xml
+++ b/resources/patches-deobfuscated.xml
@@ -1651,10 +1651,10 @@
appeng.me.tile.TileTerminal
appeng.me.tile.TileStorageMonitor
appeng.me.tile.TileStorageBus
- appeng.me.tile.TileProgrammableInterface
+ appeng.me.tile.TileProgramableInterface
appeng.me.tile.TileP2PTunnel
appeng.me.tile.TileOutputCable
- appeng.me.tile.TileLEvelEmitter
+ appeng.me.tile.TileLevelEmitter
appeng.me.tile.TileIOPort
appeng.me.tile.TileInterfaceBase
appeng.me.tile.TileInputCable
@@ -1665,7 +1665,7 @@
appeng.me.tile.TileAssemblerMB
appeng.me.tile.TileAssembler
">
-
+
^method:TileEntity/updateEntity^
diff --git a/src/common/nallar/tickthreading/patcher/PatchManager.java b/src/common/nallar/tickthreading/patcher/PatchManager.java
index ea53a0cf..d9a04f74 100644
--- a/src/common/nallar/tickthreading/patcher/PatchManager.java
+++ b/src/common/nallar/tickthreading/patcher/PatchManager.java
@@ -336,7 +336,9 @@ public Object run(Element patchElement, CtClass ctClass) {
try {
ctMethod = methodDescription.inClass(ctClass);
} catch (Throwable t) {
- Log.warning("", t);
+ if (!attributes.containsKey("allowMissing")) {
+ Log.warning("", t);
+ }
continue;
}
run(ctMethod, attributes);
diff --git a/src/common/nallar/tickthreading/patcher/Patches.java b/src/common/nallar/tickthreading/patcher/Patches.java
index bd67b673..4a4010a2 100644
--- a/src/common/nallar/tickthreading/patcher/Patches.java
+++ b/src/common/nallar/tickthreading/patcher/Patches.java
@@ -32,6 +32,7 @@
import javassist.bytecode.CodeIterator;
import javassist.bytecode.ConstPool;
import javassist.bytecode.Descriptor;
+import javassist.bytecode.DuplicateMemberException;
import javassist.bytecode.MethodInfo;
import javassist.bytecode.Mnemonic;
import javassist.bytecode.Opcode;
@@ -78,7 +79,13 @@ public void remove(CtMethod ctMethod) {
requiredAttributes = "code"
)
public void newMethod(CtClass ctClass, Map attributes) throws CannotCompileException {
- ctClass.addMethod(CtNewMethod.make(attributes.get("code"), ctClass));
+ try {
+ ctClass.addMethod(CtNewMethod.make(attributes.get("code"), ctClass));
+ } catch (DuplicateMemberException e) {
+ if (!attributes.containsKey("ignoreDuplicate")) {
+ throw e;
+ }
+ }
}
@Patch (