From 50fa2e8a1d414e03b439c4873280651e9c5ac181 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Thu, 22 Oct 2015 18:19:05 +0100 Subject: [PATCH] Fixes #194 --- .../techreborn/api/IListInfoProvider.java | 9 +++++ .../techreborn/client/StackToolTipEvent.java | 28 +++++++++++++ .../compat/waila/WailaProviderMachines.java | 5 ++- src/main/java/techreborn/items/ItemParts.java | 40 ++++++++++++++++++- .../powerSystem/TilePowerAcceptor.java | 8 ++-- .../java/techreborn/proxies/ClientProxy.java | 2 + .../java/techreborn/tiles/TileCentrifuge.java | 6 +-- .../techreborn/tiles/TileDigitalChest.java | 7 ++-- .../tiles/TileIndustrialSawmill.java | 15 ++++--- .../techreborn/tiles/TileMachineBase.java | 9 ----- .../techreborn/tiles/TileQuantumChest.java | 35 ++++++++-------- .../techreborn/tiles/TileQuantumTank.java | 20 ++++++---- 12 files changed, 134 insertions(+), 50 deletions(-) create mode 100644 src/main/java/techreborn/api/IListInfoProvider.java create mode 100644 src/main/java/techreborn/client/StackToolTipEvent.java diff --git a/src/main/java/techreborn/api/IListInfoProvider.java b/src/main/java/techreborn/api/IListInfoProvider.java new file mode 100644 index 000000000..081064f46 --- /dev/null +++ b/src/main/java/techreborn/api/IListInfoProvider.java @@ -0,0 +1,9 @@ +package techreborn.api; + + +import java.util.List; + +public interface IListInfoProvider { + + void addInfo(List info, boolean isRealTile); +} diff --git a/src/main/java/techreborn/client/StackToolTipEvent.java b/src/main/java/techreborn/client/StackToolTipEvent.java new file mode 100644 index 000000000..b408dc12e --- /dev/null +++ b/src/main/java/techreborn/client/StackToolTipEvent.java @@ -0,0 +1,28 @@ +package techreborn.client; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import techreborn.api.IListInfoProvider; + +public class StackToolTipEvent { + + @SubscribeEvent + public void handleItemTooltipEvent(ItemTooltipEvent event) { + if(event.itemStack.getItem() instanceof IListInfoProvider){ + ((IListInfoProvider) event.itemStack.getItem()).addInfo(event.toolTip, false); + } else{ + Block block = Block.getBlockFromItem(event.itemStack.getItem()); + if(block != null && block instanceof BlockContainer){ + TileEntity tile = block.createTileEntity(Minecraft.getMinecraft().theWorld, event.itemStack.getItemDamage()); + if(tile instanceof IListInfoProvider){ + ((IListInfoProvider) tile).addInfo(event.toolTip, false); + } + } + } + } + +} diff --git a/src/main/java/techreborn/compat/waila/WailaProviderMachines.java b/src/main/java/techreborn/compat/waila/WailaProviderMachines.java index 1cffbef6c..35fa84495 100644 --- a/src/main/java/techreborn/compat/waila/WailaProviderMachines.java +++ b/src/main/java/techreborn/compat/waila/WailaProviderMachines.java @@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import techreborn.api.IListInfoProvider; import techreborn.tiles.TileMachineBase; import java.util.ArrayList; @@ -23,7 +24,9 @@ public class WailaProviderMachines implements IWailaDataProvider { TileMachineBase machine = (TileMachineBase) accessor.getTileEntity(); - machine.addWailaInfo(info); + if(accessor.getTileEntity() instanceof IListInfoProvider){ + ((IListInfoProvider) accessor.getTileEntity()).addInfo(info, true); + } tip.addAll(info); info.clear(); diff --git a/src/main/java/techreborn/items/ItemParts.java b/src/main/java/techreborn/items/ItemParts.java index b4d90290d..a186db5cf 100644 --- a/src/main/java/techreborn/items/ItemParts.java +++ b/src/main/java/techreborn/items/ItemParts.java @@ -1,5 +1,7 @@ package techreborn.items; +import ic2.api.reactor.IReactor; +import ic2.api.reactor.IReactorComponent; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -15,7 +17,7 @@ import techreborn.init.ModItems; import java.security.InvalidParameterException; import java.util.List; -public class ItemParts extends Item { +public class ItemParts extends Item implements IReactorComponent { public static ItemStack getPartByName(String name, int count) { for (int i = 0; i < types.length; i++) { if (types[i].equalsIgnoreCase(name)) { @@ -97,4 +99,40 @@ public class ItemParts extends Item { } return itemStack; } + + + @Override + public void processChamber(IReactor iReactor, ItemStack itemStack, int i, int i1, boolean b) { + + } + + @Override + public boolean acceptUraniumPulse(IReactor iReactor, ItemStack itemStack, ItemStack itemStack1, int i, int i1, int i2, int i3, boolean b) { + return false; + } + + @Override + public boolean canStoreHeat(IReactor iReactor, ItemStack itemStack, int i, int i1) { + return false; + } + + @Override + public int getMaxHeat(IReactor iReactor, ItemStack itemStack, int i, int i1) { + return 0; + } + + @Override + public int getCurrentHeat(IReactor iReactor, ItemStack itemStack, int i, int i1) { + return 0; + } + + @Override + public int alterHeat(IReactor iReactor, ItemStack itemStack, int i, int i1, int i2) { + return 0; + } + + @Override + public float influenceExplosion(IReactor iReactor, ItemStack itemStack) { + return 0; + } } diff --git a/src/main/java/techreborn/powerSystem/TilePowerAcceptor.java b/src/main/java/techreborn/powerSystem/TilePowerAcceptor.java index 6a333426e..799089866 100644 --- a/src/main/java/techreborn/powerSystem/TilePowerAcceptor.java +++ b/src/main/java/techreborn/powerSystem/TilePowerAcceptor.java @@ -15,6 +15,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; +import techreborn.api.IListInfoProvider; import techreborn.api.power.IEnergyInterfaceTile; import techreborn.asm.Strippable; import techreborn.config.ConfigTechReborn; @@ -29,7 +30,7 @@ import java.util.List; }) public abstract class TilePowerAcceptor extends RFProviderTile implements IEnergyReceiver, IEnergyProvider, //Cofh - IEnergyInterfaceTile, //TechReborn + IEnergyInterfaceTile, IListInfoProvider, //TechReborn IEnergyTile, IEnergySink, IEnergySource, //Ic2 IEnergySourceInfo //IC2 Classic { @@ -287,8 +288,7 @@ public abstract class TilePowerAcceptor extends RFProviderTile implements } @Override - public void addWailaInfo(List info) { - super.addWailaInfo(info); + public void addInfo(List info, boolean isRealTile) { info.add("Energy buffer Size " + getEUString(getMaxPower())); info.add("Max Input " + getEUString(getMaxInput())); info.add("Max Output " + getEUString(getMaxOutput())); @@ -317,4 +317,6 @@ public abstract class TilePowerAcceptor extends RFProviderTile implements public int getMaxEnergyAmount() { return (int) getMaxOutput(); } + + } diff --git a/src/main/java/techreborn/proxies/ClientProxy.java b/src/main/java/techreborn/proxies/ClientProxy.java index 1a359536e..cb0620e5b 100644 --- a/src/main/java/techreborn/proxies/ClientProxy.java +++ b/src/main/java/techreborn/proxies/ClientProxy.java @@ -4,6 +4,7 @@ import cpw.mods.fml.client.registry.ClientRegistry; import net.minecraft.init.Blocks; import net.minecraftforge.common.MinecraftForge; import techreborn.client.IconSupplier; +import techreborn.client.StackToolTipEvent; import techreborn.client.VersionCheckerClient; import techreborn.client.hud.ChargeHud; import techreborn.client.keybindings.KeyBindings; @@ -21,6 +22,7 @@ public class ClientProxy extends CommonProxy { MinecraftForge.EVENT_BUS.register(new IconSupplier()); MinecraftForge.EVENT_BUS.register(new ChargeHud()); MinecraftForge.EVENT_BUS.register(new VersionCheckerClient()); + MinecraftForge.EVENT_BUS.register(new StackToolTipEvent()); multiblockRenderEvent = new MultiblockRenderEvent(); MinecraftForge.EVENT_BUS.register(multiblockRenderEvent); ClientRegistry.registerKeyBinding(KeyBindings.config); diff --git a/src/main/java/techreborn/tiles/TileCentrifuge.java b/src/main/java/techreborn/tiles/TileCentrifuge.java index d67c4b18d..807cb519a 100644 --- a/src/main/java/techreborn/tiles/TileCentrifuge.java +++ b/src/main/java/techreborn/tiles/TileCentrifuge.java @@ -8,6 +8,7 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; +import techreborn.api.IListInfoProvider; import techreborn.api.recipe.RecipeCrafter; import techreborn.config.ConfigTechReborn; import techreborn.init.ModBlocks; @@ -17,7 +18,7 @@ import techreborn.util.Inventory; import java.util.List; -public class TileCentrifuge extends TilePowerAcceptor implements IWrenchable, IEnergyTile, IInventory, ISidedInventory { +public class TileCentrifuge extends TilePowerAcceptor implements IWrenchable, IEnergyTile, IInventory, ISidedInventory, IListInfoProvider { public int tickTime; public Inventory inventory = new Inventory(11, "TileCentrifuge", 64); @@ -97,8 +98,7 @@ public class TileCentrifuge extends TilePowerAcceptor implements IWrenchable, IE } @Override - public void addWailaInfo(List info) { - super.addWailaInfo(info); + public void addInfo(List info, boolean isRealTile) { // info.add("Power Stored " + energy.getEnergyStored() +" EU"); // if(crafter.currentRecipe !=null){ // info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t"); diff --git a/src/main/java/techreborn/tiles/TileDigitalChest.java b/src/main/java/techreborn/tiles/TileDigitalChest.java index 61840aca8..8a249e16f 100644 --- a/src/main/java/techreborn/tiles/TileDigitalChest.java +++ b/src/main/java/techreborn/tiles/TileDigitalChest.java @@ -8,6 +8,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import techreborn.api.IListInfoProvider; import techreborn.init.ModBlocks; import techreborn.util.Inventory; import techreborn.util.ItemUtils; @@ -15,7 +16,7 @@ import techreborn.util.ItemUtils; import java.util.List; public class TileDigitalChest extends TileMachineBase implements IInventory, - IWrenchable { + IWrenchable, IListInfoProvider { // Slot 0 = Input // Slot 1 = Output @@ -230,8 +231,7 @@ public class TileDigitalChest extends TileMachineBase implements IInventory, } @Override - public void addWailaInfo(List info) { - super.addWailaInfo(info); + public void addInfo(List info, boolean isRealTile) { int size = 0; String name = "of nothing"; if (storedItem != null) { @@ -245,4 +245,5 @@ public class TileDigitalChest extends TileMachineBase implements IInventory, info.add(size + " " + name); } + } diff --git a/src/main/java/techreborn/tiles/TileIndustrialSawmill.java b/src/main/java/techreborn/tiles/TileIndustrialSawmill.java index 7e1fc805a..c425b287f 100644 --- a/src/main/java/techreborn/tiles/TileIndustrialSawmill.java +++ b/src/main/java/techreborn/tiles/TileIndustrialSawmill.java @@ -10,6 +10,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.*; +import techreborn.api.IListInfoProvider; import techreborn.api.recipe.RecipeCrafter; import techreborn.blocks.BlockMachineCasing; import techreborn.init.ModBlocks; @@ -22,7 +23,7 @@ import techreborn.util.Tank; import java.util.List; -public class TileIndustrialSawmill extends TilePowerAcceptor implements IWrenchable, IEnergyTile, IFluidHandler, IInventory, ISidedInventory { +public class TileIndustrialSawmill extends TilePowerAcceptor implements IWrenchable, IEnergyTile, IFluidHandler, IInventory, ISidedInventory, IListInfoProvider { public int tickTime; public Inventory inventory = new Inventory(5, "TileIndustrialSawmill", 64); @@ -124,11 +125,13 @@ public class TileIndustrialSawmill extends TilePowerAcceptor implements IWrencha } @Override - public void addWailaInfo(List info) { - super.addWailaInfo(info); - info.add("Power Stored " + getEnergy() + " EU"); - if (crafter.currentRecipe != null) { - info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t"); + public void addInfo(List info, boolean isRealTile) { + super.addInfo(info, isRealTile); + if(isRealTile){ + info.add("Power Stored " + getEnergy() + " EU"); + if (crafter.currentRecipe != null) { + info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t"); + } } } diff --git a/src/main/java/techreborn/tiles/TileMachineBase.java b/src/main/java/techreborn/tiles/TileMachineBase.java index 04937f888..2af614bb6 100644 --- a/src/main/java/techreborn/tiles/TileMachineBase.java +++ b/src/main/java/techreborn/tiles/TileMachineBase.java @@ -1,7 +1,5 @@ package techreborn.tiles; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; @@ -9,8 +7,6 @@ import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import techreborn.packets.PacketHandler; -import java.util.List; - public abstract class TileMachineBase extends TileEntity { int rotation; @@ -22,11 +18,6 @@ public abstract class TileMachineBase extends TileEntity { } } - @SideOnly(Side.CLIENT) - public void addWailaInfo(List info) { - - } - public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound(); writeToNBT(nbtTag); diff --git a/src/main/java/techreborn/tiles/TileQuantumChest.java b/src/main/java/techreborn/tiles/TileQuantumChest.java index 7eff27a24..ff5723521 100644 --- a/src/main/java/techreborn/tiles/TileQuantumChest.java +++ b/src/main/java/techreborn/tiles/TileQuantumChest.java @@ -9,6 +9,7 @@ import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; +import techreborn.api.IListInfoProvider; import techreborn.init.ModBlocks; import techreborn.util.Inventory; import techreborn.util.ItemUtils; @@ -16,7 +17,7 @@ import techreborn.util.ItemUtils; import java.util.List; public class TileQuantumChest extends TileMachineBase implements IInventory, - IWrenchable, IDeepStorageUnit { + IWrenchable, IDeepStorageUnit, IListInfoProvider { // Slot 0 = Input // Slot 1 = Output @@ -230,22 +231,7 @@ public class TileQuantumChest extends TileMachineBase implements IInventory, return dropStack; } - @Override - public void addWailaInfo(List info) { - super.addWailaInfo(info); - int size = 0; - String name = "of nothing"; - if (storedItem != null) { - name = storedItem.getDisplayName(); - size += storedItem.stackSize; - } - if (getStackInSlot(1) != null) { - name = getStackInSlot(1).getDisplayName(); - size += getStackInSlot(1).stackSize; - } - info.add(size + " " + name); - } @Override public ItemStack getStoredItemType() { @@ -270,4 +256,21 @@ public class TileQuantumChest extends TileMachineBase implements IInventory, public int getMaxStoredCount() { return this.storage; } + + @Override + public void addInfo(List info, boolean isRealTile) { + if(isRealTile){ + int size = 0; + String name = "of nothing"; + if (storedItem != null) { + name = storedItem.getDisplayName(); + size += storedItem.stackSize; + } + if (getStackInSlot(1) != null) { + name = getStackInSlot(1).getDisplayName(); + size += getStackInSlot(1).stackSize; + } + info.add(size + " " + name); + } + } } diff --git a/src/main/java/techreborn/tiles/TileQuantumTank.java b/src/main/java/techreborn/tiles/TileQuantumTank.java index c315cd265..7695b7e4c 100644 --- a/src/main/java/techreborn/tiles/TileQuantumTank.java +++ b/src/main/java/techreborn/tiles/TileQuantumTank.java @@ -13,6 +13,7 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import techreborn.api.IListInfoProvider; import techreborn.init.ModBlocks; import techreborn.util.FluidUtils; import techreborn.util.Inventory; @@ -21,7 +22,7 @@ import techreborn.util.Tank; import java.util.List; public class TileQuantumTank extends TileMachineBase implements IFluidHandler, - IInventory, IWrenchable { + IInventory, IWrenchable, IListInfoProvider { public Tank tank = new Tank("TileQuantumTank", Integer.MAX_VALUE, this); public Inventory inventory = new Inventory(3, "TileQuantumTank", 64); @@ -217,13 +218,16 @@ public class TileQuantumTank extends TileMachineBase implements IFluidHandler, } @Override - public void addWailaInfo(List info) { - super.addWailaInfo(info); - if (tank.getFluid() != null) { - info.add(tank.getFluidAmount() + " of " - + tank.getFluidType().getName()); - } else { - info.add("Empty"); + public void addInfo(List info, boolean isRealTile) { + if(isRealTile){ + if (tank.getFluid() != null) { + info.add(tank.getFluidAmount() + " of " + + tank.getFluidType().getName()); + } else { + info.add("Empty"); + } } + info.add("Capacity " + tank.getCapacity() + " mb"); + } }