102 lines
3.6 KiB
Java

package com.hbm.items.tool;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.network.IDroneLinkable;
import com.hbm.util.ChatBuilder;
import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
public class ItemDroneLinker extends Item {
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) {
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof IDroneLinkable) {
if(!world.isRemote) {
if(!stack.hasTagCompound()) {
stack.stackTagCompound = new NBTTagCompound();
stack.stackTagCompound.setInteger("x", x);
stack.stackTagCompound.setInteger("y", y);
stack.stackTagCompound.setInteger("z", z);
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
.next("] ").color(EnumChatFormatting.DARK_AQUA)
.next("Set initial position!").color(EnumChatFormatting.AQUA).flush());
} else {
int tx = stack.stackTagCompound.getInteger("x");
int ty = stack.stackTagCompound.getInteger("y");
int tz = stack.stackTagCompound.getInteger("z");
TileEntity prev = world.getTileEntity(tx, ty, tz);
if(prev instanceof IDroneLinkable) {
BlockPos dest = ((IDroneLinkable) tile).getPoint();
((IDroneLinkable) prev).setNextTarget(dest.getX(), dest.getY(), dest.getZ());
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
.next("] ").color(EnumChatFormatting.DARK_AQUA)
.next("Link set!").color(EnumChatFormatting.AQUA).flush());
} else {
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
.next("] ").color(EnumChatFormatting.DARK_AQUA)
.next("Previous link lost!").color(EnumChatFormatting.RED).flush());
}
stack.stackTagCompound.setInteger("x", x);
stack.stackTagCompound.setInteger("y", y);
stack.stackTagCompound.setInteger("z", z);
}
}
return true;
}
return false;
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean inhand) {
if(world.isRemote && inhand) {
if(stack.hasTagCompound()) {
int x = stack.stackTagCompound.getInteger("x");
int y = stack.stackTagCompound.getInteger("y");
int z = stack.stackTagCompound.getInteger("z");
MainRegistry.proxy.displayTooltip("Prev pos: " + x + " / " + y + " / " + z, MainRegistry.proxy.ID_DRONE);
}
}
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if(!world.isRemote && stack.hasTagCompound()) {
stack.stackTagCompound = null;
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
.next("] ").color(EnumChatFormatting.DARK_AQUA)
.next("Position cleared!").color(EnumChatFormatting.GREEN).flush());
}
return stack;
}
}