electrodynamics/atomic/src/main/scala/resonantinduction/atomic/process/sensor/ItemBlockThermometer.java

97 lines
2.8 KiB
Java

package resonantinduction.atomic.process.sensor;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import resonant.lib.prefab.item.ItemBlockSaved;
import resonant.lib.utility.LanguageUtility;
import resonant.lib.utility.nbt.NBTUtility;
import universalelectricity.api.vector.Vector3;
/** Handheld thermometer */
public class ItemBlockThermometer extends ItemBlockSaved
{
public static final int ENERGY_CONSUMPTION = 1000;
public ItemBlockThermometer(int id)
{
super(id);
}
@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List par3List, boolean par4)
{
super.addInformation(itemStack, player, par3List, par4);
Vector3 coord = getSavedCoord(itemStack);
if (coord != null)
{
par3List.add("\uaa74" + LanguageUtility.getLocal("tooltip.trackingTemperature"));
par3List.add("X: " + coord.intX() + ", Y: " + coord.intY() + ", Z: " + coord.intZ());
// TODO: Add client side temperature.
}
else
{
par3List.add("\u00a74" + LanguageUtility.getLocal("tooltip.notTrackingTemperature"));
}
}
public void setSavedCoords(ItemStack itemStack, Vector3 position)
{
NBTTagCompound nbt = NBTUtility.getNBTTagCompound(itemStack);
if (position != null)
{
nbt.setCompoundTag("trackCoordinate", position.writeToNBT(new NBTTagCompound()));
}
else
{
nbt.removeTag("trackCoordinate");
}
}
public Vector3 getSavedCoord(ItemStack itemStack)
{
NBTTagCompound nbt = NBTUtility.getNBTTagCompound(itemStack);
if (nbt.hasKey("trackCoordinate"))
{
return new Vector3(nbt.getCompoundTag("trackCoordinate"));
}
return null;
}
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player)
{
setSavedCoords(itemStack, null);
if (!world.isRemote)
{
player.addChatMessage("Cleared tracking coordinate.");
}
return itemStack;
}
@Override
public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10)
{
if (player.isSneaking())
{
if (!world.isRemote)
{
setSavedCoords(itemStack, new Vector3(x, y, z));
player.addChatMessage("Tracking coordinate: " + x + ", " + y + ", " + z);
}
return true;
}
return super.onItemUse(itemStack, player, world, x, y, z, par7, par8, par9, par10);
}
}