equivalent-exchange-3/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java

145 lines
4.6 KiB
Java

package com.pahimar.ee3.item;
import com.pahimar.ee3.EquivalentExchange3;
import com.pahimar.ee3.client.renderer.IOverlayItemRenderer;
import com.pahimar.ee3.client.renderer.overlay_item.MiniumStoneOverlayItemRenderer;
import com.pahimar.ee3.reference.GUIs;
import com.pahimar.ee3.reference.Key;
import com.pahimar.ee3.reference.Names;
import com.pahimar.ee3.util.IKeyBound;
import com.pahimar.ee3.util.IOverlayItem;
import com.pahimar.ee3.util.NBTHelper;
import com.pahimar.ee3.util.TransmutationHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class ItemMiniumStone
extends ItemEE implements IKeyBound, IOverlayItem, ITransmutationStone {
public ItemMiniumStone() {
super();
this.setUnlocalizedName(Names.Items.MINIUM_STONE);
this.setMaxDamage(1000); // TODO Get this from configs
}
@Override
public boolean doesContainerItemLeaveCraftingGrid(ItemStack itemStack) {
return false;
}
@Override
public boolean getShareTag() {
return true;
}
@Override
public ItemStack getContainerItem(ItemStack itemStack) {
ItemStack copiedStack = itemStack.copy();
copiedStack.setItemDamage(copiedStack.getItemDamage() + 1);
copiedStack.stackSize = 1;
return copiedStack;
}
@Override
public boolean hasContainerItem() {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public boolean hasEffect(ItemStack itemStack, int renderPass) {
return NBTHelper.hasKey(itemStack, Names.NBT.CRAFTING_GUI_OPEN)
|| NBTHelper.hasKey(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN);
}
@Override
public void
doKeyBindingAction(EntityPlayer entityPlayer, ItemStack itemStack, Key key) {
if (key == Key.EXTRA) {
if (!entityPlayer.isSneaking()) {
openPortableCraftingGUI(entityPlayer, itemStack);
} else {
//this.openPortableTransmutationGUI(entityPlayer, itemStack);
}
} else if (key == Key.TOGGLE && TransmutationHelper.targetBlockStack != null) {
if (!entityPlayer.isSneaking()) {
TransmutationHelper.targetBlockStack = TransmutationHelper.getNextBlock(
TransmutationHelper.targetBlockStack.getItem(),
TransmutationHelper.targetBlockStack.getItemDamage()
);
} else {
TransmutationHelper.targetBlockStack
= TransmutationHelper.getPreviousBlock(
TransmutationHelper.targetBlockStack.getItem(),
TransmutationHelper.targetBlockStack.getItemDamage()
);
}
}
}
@Override
public boolean onItemUse(
ItemStack itemStack,
EntityPlayer entityPlayer,
World world,
int x,
int y,
int z,
int sideHit,
float hitVecX,
float hitVecY,
float hitVecZ
) {
if (world.isRemote) {
this.transmuteBlock(itemStack, entityPlayer, world, x, y, z, sideHit);
}
return true;
}
@Override
public void transmuteBlock(
final ItemStack itemStack,
final EntityPlayer player,
final World world,
final int x,
final int y,
final int z,
final int sideHit
) {
EquivalentExchange3.proxy.transmuteBlock(
itemStack, player, world, x, y, z, ForgeDirection.getOrientation(sideHit)
);
}
@Override
public void openPortableCraftingGUI(EntityPlayer thePlayer, ItemStack itemStack) {
NBTHelper.setBoolean(itemStack, Names.NBT.CRAFTING_GUI_OPEN, true);
thePlayer.openGui(
(Object) EquivalentExchange3.instance,
GUIs.PORTABLE_CRAFTING.ordinal(),
thePlayer.worldObj,
(int) thePlayer.posX,
(int) thePlayer.posY,
(int) thePlayer.posZ
);
}
@Override
public void
openPortableTransmutationGUI(EntityPlayer thePlayer, ItemStack itemStack) {
NBTHelper.setBoolean(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN, true);
//thePlayer.openGui((Object)EquivalentExchange3.instance, 1, thePlayer.worldObj,
//(int)thePlayer.posX, (int)thePlayer.posY, (int)thePlayer.posZ);
}
@Override
@SideOnly(Side.CLIENT)
public IOverlayItemRenderer getOverlayItemRenderer() {
return MiniumStoneOverlayItemRenderer.INSTANCE;
}
}