package crazypants.util;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.IInventory;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import crazypants.enderio.Log;
/**
* This is a near-verbatim copy of Galacticraft's API class 'AccessInventoryGC'.
*
* We don't need the extended functionality and already have more APIs included
* than is good for our sanity.
*
*/
public class GalacticraftUtil {
private static Class<?> playerStatsClass;
private static Method getMethod;
private static Field extendedInventoryField;
private static boolean accessFailed = false;
public static IInventory getGCInventoryForPlayer(EntityPlayerMP player) {
if (!accessFailed) {
try {
if (playerStatsClass == null || getMethod == null || extendedInventoryField == null) {
playerStatsClass = Class.forName("micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStats");
getMethod = playerStatsClass.getMethod("get", EntityPlayerMP.class);
extendedInventoryField = playerStatsClass.getField("extendedInventory");
}
Object stats = getMethod.invoke(null, player);
return stats == null ? null : (IInventory) extendedInventoryField.get(stats);
} catch (Exception e) {
Log.info("Galacticraft inventory inaccessable. Most likely because it is not installed.");
accessFailed = true;
}
}
return null;
}
}