package cn.annoreg.mc; import cn.annoreg.mc.impl.proxy.ClientProxy; import cn.annoreg.mc.impl.proxy.ServerProxy; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.world.World; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class SideHelper { //TODO load client on server? private static ThreadLocal<SideHelper> threadProxy = new ThreadLocal<SideHelper>() { @Override protected SideHelper initialValue() { Side s = FMLCommonHandler.instance().getEffectiveSide(); if (s.isClient()) { return new SideHelper(getClientProxy()); } else { return new SideHelper(new ServerProxy()); } } // FIXME: TEMP WORKAROUND @SideOnly(Side.CLIENT) private ServerProxy getClientProxy() { return new ClientProxy(); } }; public final ServerProxy proxy; private SideHelper(ServerProxy proxy) { this.proxy = proxy; } public static World getWorld(int dimension) { return threadProxy.get().proxy.getWorld(dimension); } public static Container getPlayerContainer(EntityPlayer player, int windowId) { return threadProxy.get().proxy.getPlayerContainer(player, windowId); } public static EntityPlayer getThePlayer() { return threadProxy.get().proxy.getThePlayer(); } public static EntityPlayer getPlayerOnServer(String name) { return threadProxy.get().proxy.getPlayerOnServer(name); } public static Object[] getPlayerList() { return threadProxy.get().proxy.getPlayerList(); } public static boolean isClient() { return FMLCommonHandler.instance().getEffectiveSide().isClient(); } }