package com.dta.extracarts.mods.ironchest.entities;
import com.dta.extracarts.client.OpenableGUI;
import com.dta.extracarts.entities.EntityExtraCartChestMinecart;
import com.dta.extracarts.mods.ironchest.IronChestItems;
import com.dta.extracarts.mods.ironchest.client.ContainerDiamondChestCart;
import com.dta.extracarts.mods.ironchest.client.GuiDiamondChestCart;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.common.registry.GameRegistry;
import mods.railcraft.api.carts.IMinecart;
import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
@Optional.Interface(iface = "mods.railcraft.api.carts.IMinecart", modid = "RailcraftAPI|carts")
public class EntityDiamondChestCart extends EntityExtraCartChestMinecart implements OpenableGUI, IMinecart{
private Block ironChest = Block.getBlockFromName("IronChest:BlockIronChest");
private Item DiamondCrystalUpgrade = GameRegistry.findItem("IronChest", "diamondCrystalUpgrade");
private Item DiamondObsidianUpgrade = GameRegistry.findItem("IronChest", "diamondObsidianUpgrade");
public EntityDiamondChestCart(World world) {
super(world);
this.setDisplayTileData(2);
}
@Override
public int getSizeInventory() {
return 108;
}
@Override
public int getMinecartType() {
return 1;
}
@Override
public Block func_145817_o() {
return ironChest;
}
@Override
public void killMinecart(DamageSource par1DamageSource) {
super.killMinecart(par1DamageSource, new ItemStack(ironChest, 1, 2));
}
@Override
public boolean interactFirst(EntityPlayer player) {
ItemStack curItem = player.getCurrentEquippedItem();
if (curItem !=null && curItem.getItem() == DiamondCrystalUpgrade) {
EntityCrystalChestCart crystalCart = new EntityCrystalChestCart(player.worldObj);
crystalCart.copyDataFrom(this, true);
crystalCart.setDisplayTileData(5);
for (int i = 0; i < this.getSizeInventory(); i++) {
this.setInventorySlotContents(i, null);
}
this.setDead();
if (!player.worldObj.isRemote) {
player.worldObj.spawnEntityInWorld(crystalCart);
}
player.destroyCurrentEquippedItem();
return true;
}
if (curItem !=null && curItem.getItem() == DiamondObsidianUpgrade) {
EntityObsidianChestCart obsidianCart = new EntityObsidianChestCart(player.worldObj);
obsidianCart.copyDataFrom(this, true);
obsidianCart.setDisplayTileData(6);
for (int i = 0; i < this.getSizeInventory(); i++) {
this.setInventorySlotContents(i, null);
}
this.setDead();
if (!player.worldObj.isRemote) {
player.worldObj.spawnEntityInWorld(obsidianCart);
}
player.destroyCurrentEquippedItem();
return true;
}
return super.interactFirst(player);
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GuiDiamondChestCart(player.inventory, this);
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerDiamondChestCart(player.inventory, this);
}
@Optional.Method(modid = "RailcraftAPI|carts")
public boolean doesCartMatchFilter(ItemStack stack, EntityMinecart cart) {
ItemStack CartStack = new ItemStack(IronChestItems.IronChestCart, 1, 2);
if (cart instanceof EntityDiamondChestCart && stack.getItem() == CartStack.getItem() && stack.getItemDamage() == 2) {
return true;
}
return false;
}
}