ActuallyAdditions/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/GuiHandler.java

289 lines
12 KiB
Java
Raw Normal View History

2015-08-29 14:33:25 +02:00
/*
2016-05-16 22:52:27 +02:00
* This file ("GuiHandler.java") is part of the Actually Additions mod for Minecraft.
2015-08-29 14:33:25 +02:00
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
2016-05-16 22:52:27 +02:00
* http://ellpeck.de/actaddlicense
2015-08-29 14:33:25 +02:00
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
2017-01-01 16:23:26 +01:00
* © 2015-2017 Ellpeck
2015-08-29 14:33:25 +02:00
*/
2016-01-05 04:47:35 +01:00
package de.ellpeck.actuallyadditions.mod.inventory;
2014-12-18 19:24:06 +01:00
2016-01-05 04:47:35 +01:00
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.booklet.gui.GuiBooklet;
import de.ellpeck.actuallyadditions.mod.booklet.gui.GuiMainPage;
2016-11-11 21:07:18 +01:00
import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils;
import de.ellpeck.actuallyadditions.mod.data.PlayerData;
2018-03-07 03:08:25 +01:00
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiBag;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiBioReactor;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiBreaker;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCanolaPress;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCoalGenerator;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCoffeeMachine;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiDirectionalBreaker;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiDrill;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiDropper;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiEnergizer;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiEnervator;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFarmer;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFeeder;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFermentingBarrel;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFilter;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFluidCollector;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFurnaceDouble;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiGiantChest;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiGrinder;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiInputter;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiLaserRelayItemWhitelist;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiMiner;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiOilGenerator;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiPhantomPlacer;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiRangedCollector;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiRepairer;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiSmileyCloud;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiXPSolidifier;
2016-11-11 21:07:18 +01:00
import de.ellpeck.actuallyadditions.mod.items.ItemBooklet;
2016-01-05 04:47:35 +01:00
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
2018-03-07 03:08:25 +01:00
import de.ellpeck.actuallyadditions.mod.util.compat.CompatUtil;
2014-12-18 19:24:06 +01:00
import net.minecraft.entity.player.EntityPlayer;
2016-03-18 23:47:22 +01:00
import net.minecraft.util.math.BlockPos;
2014-12-18 19:24:06 +01:00
import net.minecraft.world.World;
2016-01-07 18:20:59 +01:00
import net.minecraftforge.fml.common.network.IGuiHandler;
import net.minecraftforge.fml.common.network.NetworkRegistry;
2014-12-18 19:24:06 +01:00
public class GuiHandler implements IGuiHandler{
2014-12-18 19:24:06 +01:00
2015-10-03 10:16:18 +02:00
public static void init(){
2018-05-10 11:38:58 +02:00
ActuallyAdditions.LOGGER.info("Initializing GuiHandler...");
NetworkRegistry.INSTANCE.registerGuiHandler(ActuallyAdditions.INSTANCE, new GuiHandler());
2015-10-03 10:16:18 +02:00
}
@Override
2016-09-14 21:42:03 +02:00
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z){
TileEntityBase tile = null;
if(GuiTypes.values()[id].checkTileEntity){
2016-01-08 13:31:58 +01:00
tile = (TileEntityBase)world.getTileEntity(new BlockPos(x, y, z));
}
switch(GuiTypes.values()[id]){
case FEEDER:
2016-09-14 21:42:03 +02:00
return new ContainerFeeder(player.inventory, tile);
case GIANT_CHEST:
2016-09-14 21:42:03 +02:00
return new ContainerGiantChest(player.inventory, tile, 0);
2016-06-27 20:19:04 +02:00
case GIANT_CHEST_PAGE_2:
2016-09-14 21:42:03 +02:00
return new ContainerGiantChest(player.inventory, tile, 1);
2016-06-27 20:19:04 +02:00
case GIANT_CHEST_PAGE_3:
2016-09-14 21:42:03 +02:00
return new ContainerGiantChest(player.inventory, tile, 2);
case CRAFTER:
2018-03-07 03:08:25 +01:00
return CompatUtil.getCrafterContainerElement(player, world, x, y, z);
case GRINDER:
2016-09-14 21:42:03 +02:00
return new ContainerGrinder(player.inventory, tile, false);
case GRINDER_DOUBLE:
2016-09-14 21:42:03 +02:00
return new ContainerGrinder(player.inventory, tile, true);
case FURNACE_DOUBLE:
2016-09-14 21:42:03 +02:00
return new ContainerFurnaceDouble(player.inventory, tile);
case INPUTTER:
2016-09-14 21:42:03 +02:00
return new ContainerInputter(player.inventory, tile, false);
case INPUTTER_ADVANCED:
2016-09-14 21:42:03 +02:00
return new ContainerInputter(player.inventory, tile, true);
case REPAIRER:
2016-09-14 21:42:03 +02:00
return new ContainerRepairer(player.inventory, tile);
case BREAKER:
2016-09-14 21:42:03 +02:00
return new ContainerBreaker(player.inventory, tile);
case DROPPER:
return new ContainerDropper(player, tile);
case CANOLA_PRESS:
2016-09-14 21:42:03 +02:00
return new ContainerCanolaPress(player.inventory, tile);
case FERMENTING_BARREL:
2016-09-14 21:42:03 +02:00
return new ContainerFermentingBarrel(player.inventory, tile);
case COAL_GENERATOR:
2016-09-14 21:42:03 +02:00
return new ContainerCoalGenerator(player.inventory, tile);
case OIL_GENERATOR:
2016-09-14 21:42:03 +02:00
return new ContainerOilGenerator(player.inventory, tile);
case PHANTOM_PLACER:
2016-09-14 21:42:03 +02:00
return new ContainerPhantomPlacer(player.inventory, tile);
case FLUID_COLLECTOR:
2016-09-14 21:42:03 +02:00
return new ContainerFluidCollector(player.inventory, tile);
case COFFEE_MACHINE:
2016-09-14 21:42:03 +02:00
return new ContainerCoffeeMachine(player.inventory, tile);
case DRILL:
2016-09-14 21:42:03 +02:00
return new ContainerDrill(player.inventory);
2016-06-07 23:17:06 +02:00
case FILTER:
2016-09-14 21:42:03 +02:00
return new ContainerFilter(player.inventory);
case ENERGIZER:
2016-09-14 21:42:03 +02:00
return new ContainerEnergizer(player, tile);
case ENERVATOR:
2016-09-14 21:42:03 +02:00
return new ContainerEnervator(player, tile);
case XP_SOLIDIFIER:
2016-09-14 21:42:03 +02:00
return new ContainerXPSolidifier(player.inventory, tile);
case CLOUD:
return new ContainerSmileyCloud();
2015-10-05 16:53:28 +02:00
case DIRECTIONAL_BREAKER:
2016-09-14 21:42:03 +02:00
return new ContainerDirectionalBreaker(player.inventory, tile);
2015-10-10 02:51:06 +02:00
case RANGED_COLLECTOR:
2016-09-14 21:42:03 +02:00
return new ContainerRangedCollector(player.inventory, tile);
2015-12-09 20:24:45 +01:00
case MINER:
2016-09-14 21:42:03 +02:00
return new ContainerMiner(player.inventory, tile);
case LASER_RELAY_ITEM_WHITELIST:
2016-09-14 21:42:03 +02:00
return new ContainerLaserRelayItemWhitelist(player.inventory, tile);
case BAG:
return new ContainerBag(player.getHeldItemMainhand(), player.inventory, false);
case VOID_BAG:
return new ContainerBag(player.getHeldItemMainhand(), player.inventory, true);
2016-09-14 21:42:03 +02:00
case BIO_REACTOR:
return new ContainerBioReactor(player.inventory, tile);
2016-10-31 18:03:18 +01:00
case FARMER:
return new ContainerFarmer(player.inventory, tile);
case FIREWORK_BOX:
return new ContainerFireworkBox();
2014-12-18 19:24:06 +01:00
default:
return null;
}
}
@Override
2016-09-14 21:42:03 +02:00
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z){
TileEntityBase tile = null;
if(GuiTypes.values()[id].checkTileEntity){
2016-01-08 13:31:58 +01:00
tile = (TileEntityBase)world.getTileEntity(new BlockPos(x, y, z));
}
switch(GuiTypes.values()[id]){
case FEEDER:
2016-09-14 21:42:03 +02:00
return new GuiFeeder(player.inventory, tile);
case GIANT_CHEST:
2016-09-14 21:42:03 +02:00
return new GuiGiantChest(player.inventory, tile, 0);
2016-06-27 20:19:04 +02:00
case GIANT_CHEST_PAGE_2:
2016-09-14 21:42:03 +02:00
return new GuiGiantChest(player.inventory, tile, 1);
2016-06-27 20:19:04 +02:00
case GIANT_CHEST_PAGE_3:
2016-09-14 21:42:03 +02:00
return new GuiGiantChest(player.inventory, tile, 2);
case CRAFTER:
2018-03-07 03:08:25 +01:00
return CompatUtil.getCrafterGuiElement(player, world, x, y, z);
case GRINDER:
2016-09-14 21:42:03 +02:00
return new GuiGrinder(player.inventory, tile);
case GRINDER_DOUBLE:
2016-09-14 21:42:03 +02:00
return new GuiGrinder.GuiGrinderDouble(player.inventory, tile);
case FURNACE_DOUBLE:
2016-09-14 21:42:03 +02:00
return new GuiFurnaceDouble(player.inventory, tile);
case INPUTTER:
return new GuiInputter(player.inventory, tile, false);
case INPUTTER_ADVANCED:
return new GuiInputter(player.inventory, tile, true);
case REPAIRER:
2016-09-14 21:42:03 +02:00
return new GuiRepairer(player.inventory, tile);
case BREAKER:
2016-09-14 21:42:03 +02:00
return new GuiBreaker(player.inventory, tile);
case DROPPER:
return new GuiDropper(player, tile);
case CANOLA_PRESS:
2016-09-14 21:42:03 +02:00
return new GuiCanolaPress(player.inventory, tile);
case FERMENTING_BARREL:
2016-09-14 21:42:03 +02:00
return new GuiFermentingBarrel(player.inventory, tile);
case COAL_GENERATOR:
2016-09-14 21:42:03 +02:00
return new GuiCoalGenerator(player.inventory, tile);
case OIL_GENERATOR:
2016-09-14 21:42:03 +02:00
return new GuiOilGenerator(player.inventory, tile);
case PHANTOM_PLACER:
2016-09-14 21:42:03 +02:00
return new GuiPhantomPlacer(player.inventory, tile);
case FLUID_COLLECTOR:
2016-09-14 21:42:03 +02:00
return new GuiFluidCollector(player.inventory, tile);
case COFFEE_MACHINE:
return new GuiCoffeeMachine(player.inventory, tile);
case DRILL:
2016-09-14 21:42:03 +02:00
return new GuiDrill(player.inventory);
2016-06-07 23:17:06 +02:00
case FILTER:
2016-09-14 21:42:03 +02:00
return new GuiFilter(player.inventory);
case ENERGIZER:
2016-09-14 21:42:03 +02:00
return new GuiEnergizer(player, tile);
case ENERVATOR:
2016-09-14 21:42:03 +02:00
return new GuiEnervator(player, tile);
case XP_SOLIDIFIER:
return new GuiXPSolidifier(player.inventory, tile);
case CLOUD:
return new GuiSmileyCloud(tile, x, y, z, world);
2015-08-28 21:17:09 +02:00
case BOOK:
2016-11-11 21:07:18 +01:00
if(ItemBooklet.forcedPage != null){
GuiBooklet gui = BookletUtils.createBookletGuiFromPage(null, ItemBooklet.forcedPage);
ItemBooklet.forcedPage = null;
return gui;
}
else{
PlayerData.PlayerSave data = PlayerData.getDataFromPlayer(player);
if(data.lastOpenBooklet != null){
return data.lastOpenBooklet;
}
else{
return new GuiMainPage(null);
}
2016-11-11 21:07:18 +01:00
}
2015-10-05 16:53:28 +02:00
case DIRECTIONAL_BREAKER:
2016-09-14 21:42:03 +02:00
return new GuiDirectionalBreaker(player.inventory, tile);
2015-10-10 02:51:06 +02:00
case RANGED_COLLECTOR:
return new GuiRangedCollector(player.inventory, tile);
2015-12-09 20:24:45 +01:00
case MINER:
2016-09-14 21:42:03 +02:00
return new GuiMiner(player.inventory, tile);
case LASER_RELAY_ITEM_WHITELIST:
2016-09-14 21:42:03 +02:00
return new GuiLaserRelayItemWhitelist(player.inventory, tile);
case BAG:
return new GuiBag(player.getHeldItemMainhand(), player.inventory, false);
case VOID_BAG:
return new GuiBag(player.getHeldItemMainhand(), player.inventory, true);
2016-09-14 21:42:03 +02:00
case BIO_REACTOR:
return new GuiBioReactor(player.inventory, tile);
2016-10-31 18:03:18 +01:00
case FARMER:
return new GuiFarmer(player.inventory, tile);
case FIREWORK_BOX:
return new GuiFireworkBox(tile);
2014-12-18 19:24:06 +01:00
default:
return null;
}
}
public enum GuiTypes{
FEEDER,
GIANT_CHEST,
2016-06-27 20:19:04 +02:00
GIANT_CHEST_PAGE_2,
GIANT_CHEST_PAGE_3,
CRAFTER(false),
GRINDER,
GRINDER_DOUBLE,
FURNACE_DOUBLE,
INPUTTER,
REPAIRER,
INPUTTER_ADVANCED,
BREAKER,
DROPPER,
CANOLA_PRESS,
FERMENTING_BARREL,
COAL_GENERATOR,
OIL_GENERATOR,
PHANTOM_PLACER,
FLUID_COLLECTOR,
COFFEE_MACHINE,
DRILL(false),
ENERGIZER,
ENERVATOR,
XP_SOLIDIFIER,
2015-08-28 21:17:09 +02:00
CLOUD,
2015-10-05 16:53:28 +02:00
BOOK(false),
2015-10-10 02:51:06 +02:00
DIRECTIONAL_BREAKER,
2015-12-09 20:24:45 +01:00
RANGED_COLLECTOR,
MINER,
2016-06-07 23:17:06 +02:00
LASER_RELAY_ITEM_WHITELIST,
FILTER(false),
BAG(false),
2016-09-14 21:42:03 +02:00
VOID_BAG(false),
2016-10-31 18:03:18 +01:00
BIO_REACTOR,
FARMER,
FIREWORK_BOX;
2016-05-19 20:05:12 +02:00
public final boolean checkTileEntity;
GuiTypes(){
this(true);
}
2015-10-03 10:19:40 +02:00
GuiTypes(boolean checkTileEntity){
this.checkTileEntity = checkTileEntity;
}
}
}