package openblocks; import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import openblocks.client.gui.GuiDevNull; import openblocks.client.gui.GuiLuggage; import openblocks.common.container.ContainerDevNull; import openblocks.common.container.ContainerLuggage; import openblocks.common.entity.EntityLuggage; import openblocks.common.item.ItemDevNull; import openmods.Log; public class OpenBlocksGuiHandler implements IGuiHandler { public static enum GuiId { luggage, devNull; public static final GuiId[] VALUES = GuiId.values(); } private static ContainerDevNull createDevNullContainer(EntityPlayer player, int protectedSlot) { return new ContainerDevNull(player.inventory, new ItemDevNull.DevNullInventory(player, protectedSlot), protectedSlot); } private static ContainerLuggage createLuggageContainer(EntityPlayer player, World world, int entityId) { final Entity entity = world.getEntityByID(entityId); if (entity instanceof EntityLuggage) return new ContainerLuggage(player.inventory, (EntityLuggage)entity); Log.warn("Trying to open luggage container for invalid entity %d:%s", entityId, entity); return null; } @Override public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { final GuiId guiId = getGuiId(id); if (guiId == null) return null; switch (guiId) { case luggage: return createLuggageContainer(player, world, x); case devNull: if (player.inventory.getCurrentItem() == null) return null; return createDevNullContainer(player, x); default: return null; } } @Override public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { final GuiId guiId = getGuiId(id); if (guiId == null) return null; switch (guiId) { case luggage: { final ContainerLuggage container = createLuggageContainer(player, world, x); return container != null? new GuiLuggage(container) : null; } case devNull: return new GuiDevNull(createDevNullContainer(player, x)); default: return null; } } private static GuiId getGuiId(int id) { try { return GuiId.VALUES[id]; } catch (ArrayIndexOutOfBoundsException e) { Log.warn("Invalid GUI id: %d", id); return null; } } }