aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/api')
-rw-r--r--src/main/java/kubatech/api/LoaderReference.java2
-rw-r--r--src/main/java/kubatech/api/enums/ItemList.java3
-rw-r--r--src/main/java/kubatech/api/helpers/ReflectionHelper.java34
-rw-r--r--src/main/java/kubatech/api/network/CustomTileEntityPacket.java6
-rw-r--r--src/main/java/kubatech/api/network/LoadConfigPacket.java3
5 files changed, 46 insertions, 2 deletions
diff --git a/src/main/java/kubatech/api/LoaderReference.java b/src/main/java/kubatech/api/LoaderReference.java
index b9e76a9a30..3215fa1b21 100644
--- a/src/main/java/kubatech/api/LoaderReference.java
+++ b/src/main/java/kubatech/api/LoaderReference.java
@@ -15,4 +15,6 @@ public class LoaderReference {
public static final boolean HarvestCraft = Loader.isModLoaded("harvestcraft");
public static final boolean TwilightForest = Loader.isModLoaded("TwilightForest");
public static final boolean Forestry = Loader.isModLoaded("Forestry");
+ public static final boolean DraconicEvolution = Loader.isModLoaded("DraconicEvolution");
+ public static final boolean Avaritia = Loader.isModLoaded("Avaritia");
}
diff --git a/src/main/java/kubatech/api/enums/ItemList.java b/src/main/java/kubatech/api/enums/ItemList.java
index b37bd86c1c..00334d848e 100644
--- a/src/main/java/kubatech/api/enums/ItemList.java
+++ b/src/main/java/kubatech/api/enums/ItemList.java
@@ -52,7 +52,8 @@ public enum ItemList implements IItemContainer {
FermentedTeaLeaf,
BruisedTeaLeaf,
PartiallyOxidizedTeaLeaf,
- ;
+ TeaAcceptorResearchNote,
+ TeaAcceptor;
private ItemStack mStack;
private boolean mHasNotBeenSet = true;
diff --git a/src/main/java/kubatech/api/helpers/ReflectionHelper.java b/src/main/java/kubatech/api/helpers/ReflectionHelper.java
index 1d7449afc4..7b02fe6c82 100644
--- a/src/main/java/kubatech/api/helpers/ReflectionHelper.java
+++ b/src/main/java/kubatech/api/helpers/ReflectionHelper.java
@@ -45,6 +45,7 @@ public class ReflectionHelper {
boolean exceptionDetected = false;
Field f = null;
do {
+ exceptionDetected = false;
try {
f = cl.getDeclaredField(fieldName);
f.setAccessible(true);
@@ -61,6 +62,38 @@ public class ReflectionHelper {
}
}
+ public static <T> boolean setField(Object obj, String fieldName, T value) {
+ Class<?> cl = obj.getClass();
+ String clName = cl.getName();
+ HashMap<String, Field> classmap = classes.computeIfAbsent(clName, s -> new _FieldsMethods()).fields;
+ try {
+ if (classmap.containsKey(fieldName)) {
+ Field f = classmap.get(fieldName);
+ if (f == null) return false;
+ f.set(obj, value);
+ return true;
+ }
+ boolean exceptionDetected = false;
+ Field f = null;
+ do {
+ exceptionDetected = false;
+ try {
+ f = cl.getDeclaredField(fieldName);
+ f.setAccessible(true);
+ } catch (Exception ex) {
+ exceptionDetected = true;
+ cl = cl.getSuperclass();
+ }
+ } while (exceptionDetected && !cl.equals(Object.class));
+ classmap.put(fieldName, f);
+ if (f == null) return false;
+ f.set(obj, value);
+ return true;
+ } catch (Exception ex) {
+ return false;
+ }
+ }
+
public static <T> T getField(Object obj, String fieldName) {
return getField(obj, fieldName, null);
}
@@ -87,6 +120,7 @@ public class ReflectionHelper {
boolean exceptionDetected = false;
Method m = null;
do {
+ exceptionDetected = false;
try {
m = cl.getDeclaredMethod(methodName, argsTypes);
m.setAccessible(true);
diff --git a/src/main/java/kubatech/api/network/CustomTileEntityPacket.java b/src/main/java/kubatech/api/network/CustomTileEntityPacket.java
index b81bbb0337..11fb4f848f 100644
--- a/src/main/java/kubatech/api/network/CustomTileEntityPacket.java
+++ b/src/main/java/kubatech/api/network/CustomTileEntityPacket.java
@@ -128,7 +128,11 @@ public class CustomTileEntityPacket implements IMessage {
@Override
public IMessage onMessage(CustomTileEntityPacket message, MessageContext ctx) {
if (!ModUtils.isClientSided) return null;
- World w = Minecraft.getMinecraft().thePlayer.getEntityWorld();
+ Minecraft mc = Minecraft.getMinecraft();
+ if (mc == null) return null;
+ if (mc.thePlayer == null) return null;
+ World w = mc.thePlayer.getEntityWorld();
+ if (w == null) return null;
if (message.w != w.provider.dimensionId) return null;
TileEntity e = w.getTileEntity(message.x, message.y, message.z);
if (e == null || e.isInvalid()) return null;
diff --git a/src/main/java/kubatech/api/network/LoadConfigPacket.java b/src/main/java/kubatech/api/network/LoadConfigPacket.java
index defb139151..03602e89f1 100644
--- a/src/main/java/kubatech/api/network/LoadConfigPacket.java
+++ b/src/main/java/kubatech/api/network/LoadConfigPacket.java
@@ -26,10 +26,12 @@ import io.netty.buffer.ByteBuf;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.HashSet;
+import kubatech.api.LoaderReference;
import kubatech.config.Config;
import kubatech.config.OverridesConfig;
import kubatech.kubatech;
import kubatech.loaders.MobRecipeLoader;
+import kubatech.loaders.TCLoader;
public class LoadConfigPacket implements IMessage {
@@ -85,6 +87,7 @@ public class LoadConfigPacket implements IMessage {
public IMessage onMessage(LoadConfigPacket message, MessageContext ctx) {
kubatech.info("Received Mob Handler config, parsing");
MobRecipeLoader.processMobRecipeMap(message.mobsToLoad, message.mobsOverrides);
+ if (LoaderReference.Thaumcraft) TCLoader.lateLoad();
return null;
}
}