2014-06-14 21:40:45 +02:00
package com.pahimar.ee3.client.handler ;
2014-07-14 04:05:27 +02:00
import com.pahimar.ee3.api.EnergyValue ;
2015-04-19 21:01:35 +02:00
import com.pahimar.ee3.api.EnergyValueRegistryProxy ;
2014-07-07 21:31:10 +02:00
import com.pahimar.ee3.exchange.WrappedStack ;
2015-02-18 02:05:18 +01:00
import com.pahimar.ee3.inventory.ContainerAlchemicalTome ;
2015-02-20 04:09:10 +01:00
import com.pahimar.ee3.reference.Messages ;
2014-07-18 21:55:10 +02:00
import com.pahimar.ee3.util.IOwnable ;
2014-07-15 18:24:18 +02:00
import com.pahimar.ee3.util.ItemHelper ;
2014-06-14 21:40:45 +02:00
import cpw.mods.fml.common.eventhandler.SubscribeEvent ;
import cpw.mods.fml.relauncher.Side ;
import cpw.mods.fml.relauncher.SideOnly ;
2015-02-20 04:09:10 +01:00
import net.minecraft.util.StatCollector ;
import net.minecraftforge.common.UsernameCache ;
2014-06-14 21:40:45 +02:00
import net.minecraftforge.event.entity.player.ItemTooltipEvent ;
2015-04-19 21:01:35 +02:00
import net.minecraftforge.fluids.FluidContainerRegistry ;
import net.minecraftforge.fluids.FluidStack ;
2014-06-14 21:40:45 +02:00
import org.lwjgl.input.Keyboard ;
import java.text.DecimalFormat ;
2015-02-20 04:09:10 +01:00
import java.util.UUID ;
2014-06-14 21:40:45 +02:00
/ * *
* Equivalent - Exchange - 3
* < p / >
* ItemTooltipEventHandler
*
* @author pahimar
* /
@SideOnly ( Side . CLIENT )
public class ItemTooltipEventHandler
{
2014-06-20 21:57:27 +02:00
private static DecimalFormat energyValueDecimalFormat = new DecimalFormat ( " ###,###,###,###,###.### " ) ;
2014-06-14 21:40:45 +02:00
@SubscribeEvent
public void handleItemTooltipEvent ( ItemTooltipEvent event )
{
2015-04-06 14:20:28 +02:00
if ( Keyboard . isKeyDown ( Keyboard . KEY_LSHIFT ) | | Keyboard . isKeyDown ( Keyboard . KEY_RSHIFT ) | | ( event . entityPlayer ! = null & & event . entityPlayer . openContainer instanceof ContainerAlchemicalTome ) )
2014-06-14 21:40:45 +02:00
{
2015-04-19 21:01:35 +02:00
WrappedStack wrappedItemStack = WrappedStack . wrap ( event . itemStack ) ;
EnergyValue energyValue = EnergyValueRegistryProxy . getEnergyValue ( wrappedItemStack ) ;
2014-06-14 21:40:45 +02:00
2015-04-19 21:01:35 +02:00
if ( energyValue ! = null )
2014-06-14 21:40:45 +02:00
{
2015-04-19 21:01:35 +02:00
if ( wrappedItemStack . getStackSize ( ) > 1 )
2014-06-14 21:40:45 +02:00
{
2015-04-19 21:01:35 +02:00
event . toolTip . add ( String . format ( " Exchange Energy (Item): %s " , energyValueDecimalFormat . format ( energyValue . getValue ( ) ) ) ) ; // TODO Localize
event . toolTip . add ( String . format ( " Exchange Energy (Stack of %s): %s " , event . itemStack . stackSize , energyValueDecimalFormat . format ( wrappedItemStack . getStackSize ( ) * energyValue . getValue ( ) ) ) ) ; // TODO Localize
2014-06-14 21:40:45 +02:00
}
else
{
2015-04-19 21:01:35 +02:00
event . toolTip . add ( String . format ( " Exchange Energy: %s " , energyValueDecimalFormat . format ( wrappedItemStack . getStackSize ( ) * energyValue . getValue ( ) ) ) ) ; // TODO Localize
if ( FluidContainerRegistry . getFluidForFilledItem ( event . itemStack ) ! = null )
{
FluidStack fluidStack = FluidContainerRegistry . getFluidForFilledItem ( event . itemStack ) ;
if ( EnergyValueRegistryProxy . getEnergyValueForStack ( fluidStack ) ! = null )
{
EnergyValue fluidStackEnergyValue = EnergyValueRegistryProxy . getEnergyValueForStack ( fluidStack ) ;
event . toolTip . add ( String . format ( " - Exchange Energy (%s): %s " , fluidStack . getLocalizedName ( ) , energyValueDecimalFormat . format ( fluidStackEnergyValue . getValue ( ) ) ) ) ; // TODO Localize
event . toolTip . add ( String . format ( " - Exchange Energy (Container): %s " , energyValueDecimalFormat . format ( energyValue . getValue ( ) - fluidStackEnergyValue . getValue ( ) ) ) ) ; // TODO Localize
}
}
2014-06-14 21:40:45 +02:00
}
}
else
{
2015-03-05 05:31:43 +01:00
event . toolTip . add ( " No Exchange Energy value " ) ; // TODO Localize
2014-06-14 21:40:45 +02:00
}
}
2014-07-15 18:24:18 +02:00
if ( event . itemStack . getItem ( ) instanceof IOwnable )
{
2015-02-20 04:09:10 +01:00
UUID playerUUID = ItemHelper . getOwnerUUID ( event . itemStack ) ;
if ( playerUUID ! = null & & UsernameCache . containsUUID ( playerUUID ) )
{
2015-04-03 06:39:52 +02:00
event . toolTip . add ( StatCollector . translateToLocalFormatted ( Messages . Tooltips . ITEM_BELONGS_TO , UsernameCache . getLastKnownUsername ( playerUUID ) ) ) ;
2015-02-20 04:09:10 +01:00
}
else if ( ItemHelper . hasOwnerName ( event . itemStack ) )
{
2015-04-03 06:39:52 +02:00
event . toolTip . add ( StatCollector . translateToLocalFormatted ( Messages . Tooltips . ITEM_BELONGS_TO , ItemHelper . getOwnerName ( event . itemStack ) ) ) ;
2015-02-20 04:09:10 +01:00
}
else
{
if ( Keyboard . isKeyDown ( Keyboard . KEY_LSHIFT ) | | Keyboard . isKeyDown ( Keyboard . KEY_RSHIFT ) )
{
2015-04-03 06:39:52 +02:00
event . toolTip . add ( StatCollector . translateToLocal ( Messages . Tooltips . ITEM_BELONGS_TO_NO_ONE ) ) ;
2015-02-20 04:09:10 +01:00
}
}
2014-07-15 18:24:18 +02:00
}
2014-06-14 21:40:45 +02:00
}
}