2014-02-20 00:33:36 +01:00
|
|
|
package appeng.integration.modules;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import mcp.mobius.waila.api.IWailaConfigHandler;
|
|
|
|
import mcp.mobius.waila.api.IWailaDataAccessor;
|
|
|
|
import mcp.mobius.waila.api.IWailaDataProvider;
|
2014-07-22 07:47:24 +02:00
|
|
|
import mcp.mobius.waila.api.IWailaFMPAccessor;
|
|
|
|
import mcp.mobius.waila.api.IWailaFMPProvider;
|
2014-02-20 00:33:36 +01:00
|
|
|
import mcp.mobius.waila.api.IWailaRegistrar;
|
2014-07-22 07:47:24 +02:00
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2014-02-20 04:16:41 +01:00
|
|
|
import net.minecraft.inventory.IInventory;
|
|
|
|
import net.minecraft.item.ItemStack;
|
2014-05-25 01:22:50 +02:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
2014-02-20 04:16:41 +01:00
|
|
|
import net.minecraft.tileentity.TileEntity;
|
|
|
|
import net.minecraft.util.MovingObjectPosition;
|
|
|
|
import net.minecraft.util.Vec3;
|
|
|
|
import appeng.api.implementations.IPowerChannelState;
|
|
|
|
import appeng.api.implementations.parts.IPartStorageMonitor;
|
|
|
|
import appeng.api.parts.IFacadePart;
|
|
|
|
import appeng.api.parts.IPart;
|
|
|
|
import appeng.api.parts.IPartHost;
|
|
|
|
import appeng.api.parts.SelectedPart;
|
|
|
|
import appeng.api.storage.data.IAEFluidStack;
|
|
|
|
import appeng.api.storage.data.IAEItemStack;
|
|
|
|
import appeng.api.storage.data.IAEStack;
|
2014-02-20 00:33:36 +01:00
|
|
|
import appeng.block.AEBaseBlock;
|
|
|
|
import appeng.core.AppEng;
|
2014-07-22 07:47:24 +02:00
|
|
|
import appeng.core.localization.GuiText;
|
2014-02-20 04:16:41 +01:00
|
|
|
import appeng.core.localization.WailaText;
|
2014-02-20 00:33:36 +01:00
|
|
|
import appeng.integration.BaseModule;
|
2014-07-22 07:47:24 +02:00
|
|
|
import appeng.parts.networking.PartCableSmart;
|
|
|
|
import appeng.parts.networking.PartDenseCable;
|
2014-02-20 04:16:41 +01:00
|
|
|
import appeng.tile.misc.TileCharger;
|
2014-07-22 07:47:24 +02:00
|
|
|
import appeng.tile.networking.TileCableBus;
|
2014-05-25 01:22:50 +02:00
|
|
|
import appeng.tile.networking.TileEnergyCell;
|
|
|
|
import appeng.util.Platform;
|
2014-02-20 04:16:41 +01:00
|
|
|
import cpw.mods.fml.common.event.FMLInterModComms;
|
|
|
|
|
2014-07-22 07:47:24 +02:00
|
|
|
public class Waila extends BaseModule implements IWailaDataProvider, IWailaFMPProvider
|
2014-02-20 04:16:41 +01:00
|
|
|
{
|
|
|
|
|
|
|
|
public static Waila instance;
|
2014-02-20 00:33:36 +01:00
|
|
|
|
2014-02-20 04:16:41 +01:00
|
|
|
public static void register(IWailaRegistrar registrar)
|
2014-02-20 00:33:36 +01:00
|
|
|
{
|
2014-07-22 07:47:24 +02:00
|
|
|
Waila w = (Waila) AppEng.instance.getIntegration( "Waila" );
|
|
|
|
|
|
|
|
registrar.registerBodyProvider( w, AEBaseBlock.class );
|
|
|
|
registrar.registerBodyProvider( w, "ae2_cablebus" );
|
|
|
|
|
2014-06-27 03:23:29 +02:00
|
|
|
registrar.registerSyncedNBTKey( "internalCurrentPower", TileEnergyCell.class );
|
2014-07-22 07:47:24 +02:00
|
|
|
registrar.registerSyncedNBTKey( "extra:6.usedChannels", TileCableBus.class );
|
2014-02-20 00:33:36 +01:00
|
|
|
}
|
2014-02-20 04:16:41 +01:00
|
|
|
|
2014-02-20 00:33:36 +01:00
|
|
|
@Override
|
2014-02-20 04:16:41 +01:00
|
|
|
public void Init() throws Throwable
|
|
|
|
{
|
2014-02-20 00:33:36 +01:00
|
|
|
TestClass( IWailaDataProvider.class );
|
|
|
|
TestClass( IWailaRegistrar.class );
|
2014-02-20 04:16:41 +01:00
|
|
|
FMLInterModComms.sendMessage( "Waila", "register", this.getClass().getName() + ".register" );
|
2014-02-20 00:33:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-02-20 04:16:41 +01:00
|
|
|
public void PostInit() throws Throwable
|
|
|
|
{
|
|
|
|
// :P
|
2014-02-20 00:33:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-02-20 04:16:41 +01:00
|
|
|
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config)
|
|
|
|
{
|
2014-02-20 00:33:36 +01:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-07-22 07:47:24 +02:00
|
|
|
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config)
|
2014-02-20 04:16:41 +01:00
|
|
|
{
|
2014-07-22 07:47:24 +02:00
|
|
|
TileEntity te = accessor.getTileEntity();
|
|
|
|
MovingObjectPosition mop = accessor.getPosition();
|
2014-02-20 00:33:36 +01:00
|
|
|
|
2014-07-22 07:47:24 +02:00
|
|
|
NBTTagCompound nbt = null;
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
nbt = accessor.getNBTData();
|
|
|
|
}
|
|
|
|
catch (NullPointerException npe)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
return getBody( itemStack, currenttip, accessor.getPlayer(), nbt, te, mop );
|
2014-02-20 00:33:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-07-22 07:47:24 +02:00
|
|
|
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config)
|
2014-02-20 04:16:41 +01:00
|
|
|
{
|
|
|
|
TileEntity te = accessor.getTileEntity();
|
2014-07-22 07:47:24 +02:00
|
|
|
MovingObjectPosition mop = accessor.getPosition();
|
|
|
|
|
|
|
|
NBTTagCompound nbt = null;
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
nbt = accessor.getNBTData();
|
|
|
|
}
|
|
|
|
catch (NullPointerException npe)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
return getBody( itemStack, currenttip, accessor.getPlayer(), nbt, te, mop );
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<String> getBody(ItemStack itemStack, List<String> currenttip, EntityPlayer player, NBTTagCompound nbt, TileEntity te, MovingObjectPosition mop)
|
|
|
|
{
|
2014-02-20 04:16:41 +01:00
|
|
|
|
|
|
|
Object ThingOfInterest = te;
|
|
|
|
if ( te instanceof IPartHost )
|
|
|
|
{
|
|
|
|
Vec3 Pos = mop.hitVec.addVector( -mop.blockX, -mop.blockY, -mop.blockZ );
|
|
|
|
SelectedPart sp = ((IPartHost) te).selectPart( Pos );
|
|
|
|
if ( sp.facade != null )
|
|
|
|
{
|
|
|
|
IFacadePart fp = sp.facade;
|
|
|
|
ThingOfInterest = fp;
|
|
|
|
}
|
|
|
|
else if ( sp.part != null )
|
|
|
|
{
|
|
|
|
IPart part = sp.part;
|
|
|
|
ThingOfInterest = part;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-07-22 07:47:24 +02:00
|
|
|
try
|
2014-05-25 01:22:50 +02:00
|
|
|
{
|
2014-07-22 07:47:24 +02:00
|
|
|
if ( ThingOfInterest instanceof PartCableSmart || ThingOfInterest instanceof PartDenseCable )
|
|
|
|
{
|
|
|
|
NBTTagCompound c = nbt;
|
|
|
|
if ( c != null && c.hasKey( "extra:6" ) )
|
|
|
|
{
|
|
|
|
NBTTagCompound ic = c.getCompoundTag( "extra:6" );
|
|
|
|
if ( ic != null && ic.hasKey( "usedChannels" ) )
|
|
|
|
{
|
|
|
|
int channels = ic.getByte( "usedChannels" );
|
|
|
|
currenttip.add( channels + " " + GuiText.Of.getLocal() + " " + (ThingOfInterest instanceof PartDenseCable ? 32 : 8) + " "
|
|
|
|
+ WailaText.Channels.getLocal() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ThingOfInterest instanceof TileEnergyCell )
|
2014-05-25 01:22:50 +02:00
|
|
|
{
|
2014-07-22 07:47:24 +02:00
|
|
|
NBTTagCompound c = nbt;
|
|
|
|
if ( c != null && c.hasKey( "internalCurrentPower" ) )
|
|
|
|
{
|
|
|
|
TileEnergyCell tec = (TileEnergyCell) ThingOfInterest;
|
|
|
|
long power = (long) (100 * c.getDouble( "internalCurrentPower" ));
|
|
|
|
currenttip.add( WailaText.Contains + ": " + Platform.formatPowerLong( power, false ) + " / "
|
|
|
|
+ Platform.formatPowerLong( (long) (100 * tec.getAEMaxPower()), false ) );
|
|
|
|
}
|
2014-05-25 01:22:50 +02:00
|
|
|
}
|
|
|
|
}
|
2014-07-22 07:47:24 +02:00
|
|
|
catch (NullPointerException ex)
|
|
|
|
{
|
|
|
|
// :P
|
|
|
|
}
|
2014-05-25 01:22:50 +02:00
|
|
|
|
2014-02-20 04:16:41 +01:00
|
|
|
if ( ThingOfInterest instanceof IPartStorageMonitor )
|
|
|
|
{
|
|
|
|
IPartStorageMonitor psm = (IPartStorageMonitor) ThingOfInterest;
|
|
|
|
IAEStack stack = psm.getDisplayed();
|
|
|
|
boolean isLocked = psm.isLocked();
|
|
|
|
|
|
|
|
if ( stack instanceof IAEItemStack )
|
|
|
|
{
|
|
|
|
IAEItemStack ais = (IAEItemStack) stack;
|
|
|
|
currenttip.add( WailaText.Showing.getLocal() + ": " + ais.getItemStack().getDisplayName() );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( stack instanceof IAEFluidStack )
|
|
|
|
{
|
|
|
|
IAEFluidStack ais = (IAEFluidStack) stack;
|
2014-07-22 07:47:24 +02:00
|
|
|
currenttip.add( WailaText.Showing.getLocal() + ": " + ais.getFluid().getLocalizedName( ais.getFluidStack() ) );
|
2014-02-20 04:16:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if ( isLocked )
|
|
|
|
currenttip.add( WailaText.Locked.getLocal() );
|
|
|
|
else
|
|
|
|
currenttip.add( WailaText.Unlocked.getLocal() );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ThingOfInterest instanceof TileCharger )
|
|
|
|
{
|
|
|
|
TileCharger tc = (TileCharger) ThingOfInterest;
|
|
|
|
IInventory inv = tc.getInternalInventory();
|
|
|
|
ItemStack is = inv.getStackInSlot( 0 );
|
|
|
|
if ( is != null )
|
|
|
|
{
|
|
|
|
currenttip.add( WailaText.Contains + ": " + is.getDisplayName() );
|
2014-07-22 07:47:24 +02:00
|
|
|
is.getItem().addInformation( is, player, currenttip, true );
|
2014-02-20 04:16:41 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ThingOfInterest instanceof IPowerChannelState )
|
|
|
|
{
|
|
|
|
IPowerChannelState pbs = (IPowerChannelState) ThingOfInterest;
|
|
|
|
if ( pbs.isActive() && pbs.isPowered() )
|
|
|
|
currenttip.add( WailaText.DeviceOnline.getLocal() );
|
|
|
|
else if ( pbs.isPowered() )
|
|
|
|
currenttip.add( WailaText.DeviceMissingChannel.getLocal() );
|
|
|
|
else
|
|
|
|
currenttip.add( WailaText.DeviceOffline.getLocal() );
|
|
|
|
}
|
|
|
|
|
2014-02-20 00:33:36 +01:00
|
|
|
return currenttip;
|
|
|
|
}
|
|
|
|
|
2014-07-22 07:47:24 +02:00
|
|
|
@Override
|
|
|
|
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config)
|
|
|
|
{
|
|
|
|
|
|
|
|
return currenttip;
|
|
|
|
}
|
|
|
|
|
2014-02-20 00:33:36 +01:00
|
|
|
@Override
|
2014-02-20 04:16:41 +01:00
|
|
|
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config)
|
|
|
|
{
|
2014-02-20 00:33:36 +01:00
|
|
|
|
|
|
|
return currenttip;
|
|
|
|
}
|
|
|
|
|
2014-07-22 07:47:24 +02:00
|
|
|
@Override
|
|
|
|
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config)
|
|
|
|
{
|
|
|
|
return currenttip;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config)
|
|
|
|
{
|
|
|
|
return currenttip;
|
|
|
|
}
|
|
|
|
|
2014-02-20 00:33:36 +01:00
|
|
|
}
|