mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
102 lines
3.6 KiB
Java
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;
|
|
}
|
|
}
|