/*******************************************************************************
* AbyssalCraft
* Copyright (c) 2012 - 2017 Shinoow.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Contributors:
* Shinoow - implementation
******************************************************************************/
package com.shinoow.abyssalcraft.common;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumHand;
import net.minecraft.util.IThreadListener;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import com.shinoow.abyssalcraft.client.gui.*;
import com.shinoow.abyssalcraft.client.gui.necronomicon.GuiNecronomicon;
import com.shinoow.abyssalcraft.common.blocks.tile.*;
import com.shinoow.abyssalcraft.common.inventory.*;
import com.shinoow.abyssalcraft.common.items.ItemNecronomicon;
import com.shinoow.abyssalcraft.lib.ACLib;
import net.minecraftforge.fml.common.network.IGuiHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public class CommonProxy implements IGuiHandler {
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity entity = world.getTileEntity(new BlockPos(x, y, z));
ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND);
if(entity != null)
switch(ID) {
case ACLib.crystallizerGuiID:
if (entity instanceof TileEntityCrystallizer)
return new ContainerCrystallizer(player.inventory, (TileEntityCrystallizer) entity);
break;
case ACLib.transmutatorGuiID:
if (entity instanceof TileEntityTransmutator)
return new ContainerTransmutator(player.inventory, (TileEntityTransmutator) entity);
break;
case ACLib.engraverGuiID:
if (entity instanceof TileEntityEngraver)
return new ContainerEngraver(player.inventory, (TileEntityEngraver) entity);
break;
case ACLib.materializerGuiID:
if (entity instanceof TileEntityMaterializer)
return new ContainerMaterializer(player.inventory, (TileEntityMaterializer) entity);
break;
case ACLib.energycontainerGuiID:
if (entity instanceof TileEntityEnergyContainer)
return new ContainerEnergyContainer(player.inventory, (TileEntityEnergyContainer) entity);
break;
case ACLib.rendingPedestalGuiID:
if (entity instanceof TileEntityRendingPedestal)
return new ContainerRendingPedestal(player.inventory, (TileEntityRendingPedestal) entity);
break;
}
if(stack != null)
switch(ID){
case ACLib.crystalbagGuiID:
return new ContainerCrystalBag(player.inventory, new InventoryCrystalBag(stack));
case ACLib.necronomiconspellbookGuiID:
if(stack.getItem() instanceof ItemNecronomicon && ((ItemNecronomicon)stack.getItem()).isOwner(player, stack))
return new ContainerSpellbook(player.inventory, stack);
}
return null;
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity entity = world.getTileEntity(new BlockPos(x, y, z));
ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND);
if(entity != null)
switch(ID) {
case ACLib.crystallizerGuiID:
if (entity instanceof TileEntityCrystallizer)
return new GuiCrystallizer(player.inventory, (TileEntityCrystallizer) entity);
break;
case ACLib.transmutatorGuiID:
if (entity instanceof TileEntityTransmutator)
return new GuiTransmutator(player.inventory, (TileEntityTransmutator) entity);
break;
case ACLib.engraverGuiID:
if (entity instanceof TileEntityEngraver)
return new GuiEngraver(player.inventory, (TileEntityEngraver) entity);
break;
case ACLib.materializerGuiID:
if (entity instanceof TileEntityMaterializer)
return new GuiMaterializer(player.inventory, (TileEntityMaterializer) entity);
break;
case ACLib.energycontainerGuiID:
if (entity instanceof TileEntityEnergyContainer)
return new GuiEnergyContainer(player.inventory, (TileEntityEnergyContainer) entity);
break;
case ACLib.rendingPedestalGuiID:
if (entity instanceof TileEntityRendingPedestal)
return new GuiRendingPedestal(player.inventory, (TileEntityRendingPedestal) entity);
break;
}
if(stack != null)
switch(ID){
case ACLib.necronmiconGuiID:
if(stack.getItem() instanceof ItemNecronomicon && ((ItemNecronomicon)stack.getItem()).isOwner(player, stack))
return new GuiNecronomicon(((ItemNecronomicon)stack.getItem()).getBookType());
break;
case ACLib.crystalbagGuiID:
return new GuiCrystalBag(new ContainerCrystalBag(player.inventory, new InventoryCrystalBag(stack)));
case ACLib.necronomiconspellbookGuiID:
if(stack.getItem() instanceof ItemNecronomicon && ((ItemNecronomicon)stack.getItem()).isOwner(player, stack))
return new GuiSpellbook(new ContainerSpellbook(player.inventory, stack));
}
return null;
}
public void preInit() {}
public void init() {}
public void postInit() {}
public ModelBiped getArmorModel(int id){
return null;
}
/**
* Returns a side-appropriate EntityPlayer for use during message handling
*/
public EntityPlayer getPlayerEntity(MessageContext ctx) {
return ctx.getServerHandler().playerEntity;
}
/**
* Returns the current thread based on side during message handling,
* used for ensuring that the message is being handled by the main thread
*/
public IThreadListener getThreadFromContext(MessageContext ctx) {
return ctx.getServerHandler().playerEntity.getServer();
}
public void spawnParticle(String particleName, World world, double posX, double posY, double posZ, double velX, double velY, double velZ) {}
}