package shedar.mods.ic2.nuclearcontrol.items;
import ic2.api.item.IC2Items;
import ic2.api.reactor.IReactor;
import ic2.api.reactor.IReactorChamber;
import ic2.core.Ic2Items;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import shedar.mods.ic2.nuclearcontrol.IC2NuclearControl;
import shedar.mods.ic2.nuclearcontrol.utils.ItemStackUtils;
import shedar.mods.ic2.nuclearcontrol.utils.NuclearHelper;
import shedar.mods.ic2.nuclearcontrol.utils.NuclearNetworkHelper;
public class ItemKitReactorSensor extends ItemSensorKitBase {
public ItemKitReactorSensor() {
super("kitReactor");
}
@Override
protected ChunkCoordinates getTargetCoordinates(World world, int x, int y, int z, ItemStack stack) {
IReactor reactor = NuclearHelper.getReactorAt(world, x, y, z);
if (reactor == null) {
IReactorChamber chamber = NuclearHelper.getReactorChamberAt(world, x, y, z);
if (chamber != null) {
reactor = chamber.getReactor();
}
}
if (reactor != null)
return reactor.getPosition();
return null;
}
protected ItemStack getItemStackByDamage(int cardID) {
if(cardID == 0)
return new ItemStack(IC2NuclearControl.itemSensorLocationCard, 1, 0);
if(cardID == 1)
return new ItemStack(IC2NuclearControl.item55ReactorCard, 1, 0);
else
return null;
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
if (player == null)
return false;
boolean isServer = player instanceof EntityPlayerMP;
if (!isServer)
return false;
ChunkCoordinates position = this.getTargetCoordinates(world, x, y, z, stack);
int sendInt = 0;
if (position != null) {
ItemStack sensorLocationCard = getItemStackByDamage(sendInt);
setCoordinates(sensorLocationCard, position.posX, position.posY, position.posZ);
player.inventory.mainInventory[player.inventory.currentItem] = sensorLocationCard;
if (!world.isRemote) {
NuclearNetworkHelper.chatMessage(player, "SensorKit");
}
return true;
} else if(position == null){
Block check = world.getBlock(x, y, z);
if(check == Block.getBlockFromItem(IC2Items.getItem("reactorRedstonePort").getItem())|| check == Block.getBlockFromItem(Ic2Items.reactorvessel.getItem())|| check == Block.getBlockFromItem(Ic2Items.reactorAccessHatch.getItem())|| check == Block.getBlockFromItem(Ic2Items.reactorFluidPort.getItem())){
sendInt = 1;
ItemStack sensorLocationCard = getItemStackByDamage(sendInt);
setCoordinates(sensorLocationCard, x, y, z);
player.inventory.mainInventory[player.inventory.currentItem] = sensorLocationCard;
if (!world.isRemote) {
NuclearNetworkHelper.chatMessage(player, "SensorKit");
}
return true;
}
}
return false;
}
private void setCoordinates(ItemStack itemStack, int x, int y, int z) {
NBTTagCompound nbtTagCompound = ItemStackUtils.getTagCompound(itemStack);
nbtTagCompound.setInteger("x", x);
nbtTagCompound.setInteger("y", y);
nbtTagCompound.setInteger("z", z);
}
}