Merge pull request #43 from asdflj/master

add waila support
This commit is contained in:
Martin Robertz authored and GitHub committed 2022-11-30 07:43:59 +01:00
commit a805df0e9e
25 files changed
+674 -25

No files matched your search

@@ -5,6 +5,7 @@ import appeng.api.config.Upgrades;
import com.glodblock.github.common.Config;
import com.glodblock.github.common.storage.FluidCellHandler;
import com.glodblock.github.crossmod.opencomputers.OCDriverInit;
import com.glodblock.github.crossmod.waila.WailaInit;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.loader.ChannelLoader;
import com.glodblock.github.loader.ItemAndBlockHolder;
@@ -21,7 +22,7 @@ import cpw.mods.fml.common.network.NetworkRegistry;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
@Mod(modid = FluidCraft.MODID, version = FluidCraft.VERSION, name = FluidCraft.MODNAME, dependencies = "required-after:appliedenergistics2")
@Mod(modid = FluidCraft.MODID, version = FluidCraft.VERSION, name = FluidCraft.MODNAME, dependencies = "required-after:appliedenergistics2;after:waila")
public class FluidCraft {
public static final String MODID = "GRADLETOKEN_MODID";
@@ -47,6 +48,9 @@ public class FluidCraft {
if (ModAndClassUtil.OC) {
OCDriverInit.run();
}
if (ModAndClassUtil.WAILA) {
WailaInit.run();
}
proxy.init(event);
}
@@ -10,6 +10,8 @@ import com.glodblock.github.common.parts.PartFluidInterface;
import com.glodblock.github.common.tile.TileFluidInterface;
import com.glodblock.github.inventory.IAEFluidTank;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.inventory.gui.MouseRegionManager;
import com.glodblock.github.inventory.gui.TankMouseHandler;
import com.glodblock.github.loader.ItemAndBlockHolder;
import com.glodblock.github.network.CPacketSwitchGuis;
import com.glodblock.github.util.NameConst;
@@ -37,17 +39,29 @@ public class GuiFluidInterface extends AEBaseGui {
private final ContainerFluidInterface cont;
private GuiTabButton switcher;
private final MouseRegionManager mouseRegions = new MouseRegionManager(this);
public GuiFluidInterface(InventoryPlayer ipl, TileFluidInterface tile) {
super(new ContainerFluidInterface(ipl, tile));
this.cont = (ContainerFluidInterface) inventorySlots;
this.ySize = 231;
this.addMouseRegin();
}
public GuiFluidInterface(InventoryPlayer ipl, PartFluidInterface tile) {
super(new ContainerFluidInterface(ipl, tile));
this.cont = (ContainerFluidInterface) inventorySlots;
this.ySize = 231;
this.addMouseRegin();
}
private void addMouseRegin() {
for (int i = 0; i < 6; i++) {
mouseRegions.addRegion(TANK_X + TANK_X_OFF * i, TANK_Y, TANK_WIDTH, TANK_HEIGHT,
new TankMouseHandler(
isPart() ? ((PartFluidInterface) cont.getTile()).getInternalFluid() : ((TileFluidInterface) cont.getTile()).getInternalFluid(),
i));
}
}
@Override
@@ -91,6 +105,7 @@ public class GuiFluidInterface extends AEBaseGui {
fluidInv.getFluidInSlot(i), fluidInv.getTankInfo(ForgeDirection.UNKNOWN)[i].capacity);
}
GL11.glColor4f(1F, 1F, 1F, 1F);
mouseRegions.render(mouseX, mouseY);
}
public String dirName(int face) {
@@ -20,7 +20,6 @@ package com.glodblock.github.client.me;
import appeng.api.AEApi;
import appeng.api.config.*;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.client.gui.widgets.IScrollSource;
@@ -28,13 +27,13 @@ import appeng.client.gui.widgets.ISortSource;
import appeng.client.me.ItemRepo;
import appeng.core.AEConfig;
import appeng.items.storage.ItemViewCell;
import appeng.util.item.AEItemStack;
import appeng.util.prioitylist.IPartitionList;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.util.FluidSorters;
import com.glodblock.github.util.Util;
import cpw.mods.fml.relauncher.ReflectionHelper;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import javax.annotation.Nonnull;
import java.lang.reflect.Field;
@@ -158,11 +157,16 @@ public class FluidRepo extends ItemRepo {
if (viewMode == ViewItems.STORED && is.getStackSize() == 0) {
continue;
}
final String dspName = searchMod ? Util.getFluidModID(ItemFluidDrop.getAeFluidStack(is).getFluid()) : ItemFluidDrop.getAeFluidStack(is).getFluid().getLocalizedName();
if (m.matcher(dspName.toLowerCase()).find()) {
this.view.add(is);
Fluid fluid = ItemFluidDrop.getAeFluidStack(is).getFluid();
if (searchMod) {
if (m.matcher(Util.getFluidModID(fluid).toLowerCase()).find() ||
m.matcher(Util.getFluidModName(fluid).toLowerCase()).find()) {
this.view.add(is);
}
} else {
if (m.matcher(fluid.getLocalizedName().toLowerCase()).find()) {
this.view.add(is);
}
}
/*
@@ -120,11 +120,9 @@ public abstract class PartSharedFluidBus extends PartUpgradeable implements IGri
return null;
}
protected int calculateAmountToSend()
{
public int calculateAmountToSend() {
double amount = 1000D;
switch( this.getInstalledUpgrades( Upgrades.SPEED ) )
{
switch (this.getInstalledUpgrades(Upgrades.SPEED)) {
case 4:
amount = amount * 1.5;
case 3:
@@ -60,7 +60,12 @@ public class TileIngredientBuffer extends AEBaseInvTile implements IAEFluidInven
markForUpdate();
}
@TileEvent( TileEventType.NETWORK_WRITE )
@Override
public AEFluidInventory getInternalFluid() {
return this.invFluids;
}
@TileEvent(TileEventType.NETWORK_WRITE)
protected void writeToStream(ByteBuf data) throws IOException {
for (int i = 0; i < invItems.getSizeInventory(); i++) {
ByteBufUtils.writeItemStack(data, invItems.getStackInSlot(i));
@@ -60,6 +60,11 @@ public class TileLargeIngredientBuffer extends AEBaseInvTile implements IAEFluid
markForUpdate();
}
@Override
public AEFluidInventory getInternalFluid() {
return this.invFluids;
}
@TileEvent(TileEventType.NETWORK_WRITE)
protected void writeToStream(ByteBuf data) throws IOException {
for (int i = 0; i < invItems.getSizeInventory(); i++) {
@@ -0,0 +1,40 @@
package com.glodblock.github.crossmod.waila;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.util.Util;
import mcp.mobius.waila.handlers.nei.TooltipHandlerWaila;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.fluids.FluidStack;
import java.util.List;
public class FCTooltipHandlerWaila extends TooltipHandlerWaila {
@Override
public List<String> handleItemDisplayName(GuiContainer arg0, ItemStack itemstack, List<String> currenttip) {
return currenttip;
}
@Override
public List<String> handleItemTooltip(GuiContainer arg0, ItemStack itemstack, int arg2, int arg3, List<String> currenttip) {
if (itemstack != null && itemstack.getItem() instanceof ItemFluidDrop && currenttip.size() > 0) {
FluidStack fs = ItemFluidDrop.getFluidStack(itemstack);
if (fs == null) return currenttip;
currenttip.set(0, Tooltip.partFluidTerminalFluidFormat(fs));
if (Minecraft.getMinecraft().gameSettings.advancedItemTooltips) {
currenttip.set(1, EnumChatFormatting.GRAY + String.format("%s:%s", Util.getFluidModID(fs.getFluid()), fs.getFluid().getName()) + EnumChatFormatting.RESET);
}
String modName = Util.getFluidModName(fs.getFluid());
if (modName != null && !modName.equals(""))
currenttip.set(currenttip.size() - 1, "\u00a79\u00a7o" + modName);
}
return currenttip;
}
@Override
public List<String> handleTooltip(GuiContainer arg0, int arg1, int arg2, List<String> currenttip) {
return currenttip;
}
}
@@ -0,0 +1,147 @@
package com.glodblock.github.crossmod.waila;
import appeng.api.parts.IPart;
import appeng.integration.modules.waila.part.IPartWailaDataProvider;
import appeng.integration.modules.waila.part.PartAccessor;
import appeng.integration.modules.waila.part.Tracer;
import com.glodblock.github.crossmod.waila.part.FluidInvWailaDataProvider;
import com.glodblock.github.crossmod.waila.part.SpeedWailaDataProvider;
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import java.util.List;
public class PartWailaDataProvider implements IWailaDataProvider {
private final List<IPartWailaDataProvider> providers;
private final PartAccessor accessor = new PartAccessor();
private final Tracer tracer = new Tracer();
public PartWailaDataProvider() {
final IPartWailaDataProvider speed = new SpeedWailaDataProvider();
final IPartWailaDataProvider fluidInv = new FluidInvWailaDataProvider();
this.providers = Lists.newArrayList(speed, fluidInv);
}
@Override
public ItemStack getWailaStack(final IWailaDataAccessor accessor, final IWailaConfigHandler config) {
final TileEntity te = accessor.getTileEntity();
final MovingObjectPosition mop = accessor.getPosition();
final Optional<IPart> maybePart = this.accessor.getMaybePart(te, mop);
if (maybePart.isPresent()) {
final IPart part = maybePart.get();
ItemStack wailaStack = null;
for (final IPartWailaDataProvider provider : this.providers) {
wailaStack = provider.getWailaStack(part, config, wailaStack);
if (wailaStack != null) break;
}
return wailaStack;
}
return null;
}
@Override
public List<String> getWailaHead(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
final TileEntity te = accessor.getTileEntity();
final MovingObjectPosition mop = accessor.getPosition();
final Optional<IPart> maybePart = this.accessor.getMaybePart(te, mop);
if (maybePart.isPresent()) {
final IPart part = maybePart.get();
for (final IPartWailaDataProvider provider : this.providers) {
provider.getWailaHead(part, currentToolTip, accessor, config);
}
}
return currentToolTip;
}
@Override
public List<String> getWailaBody(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
final TileEntity te = accessor.getTileEntity();
final MovingObjectPosition mop = accessor.getPosition();
final Optional<IPart> maybePart = this.accessor.getMaybePart(te, mop);
if (maybePart.isPresent()) {
final IPart part = maybePart.get();
for (final IPartWailaDataProvider provider : this.providers) {
provider.getWailaBody(part, currentToolTip, accessor, config);
}
}
return currentToolTip;
}
@Override
public List<String> getWailaTail(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
final TileEntity te = accessor.getTileEntity();
final MovingObjectPosition mop = accessor.getPosition();
final Optional<IPart> maybePart = this.accessor.getMaybePart(te, mop);
if (maybePart.isPresent()) {
final IPart part = maybePart.get();
for (final IPartWailaDataProvider provider : this.providers) {
provider.getWailaTail(part, currentToolTip, accessor, config);
}
}
return currentToolTip;
}
@Override
public NBTTagCompound getNBTData(
final EntityPlayerMP player,
final TileEntity te,
final NBTTagCompound tag,
final World world,
final int x,
final int y,
final int z) {
final MovingObjectPosition mop = this.tracer.retraceBlock(world, player, x, y, z);
if (mop != null) {
final Optional<IPart> maybePart = this.accessor.getMaybePart(te, mop);
if (maybePart.isPresent()) {
final IPart part = maybePart.get();
for (final IPartWailaDataProvider provider : this.providers) {
provider.getNBTData(player, part, te, tag, world, x, y, z);
}
}
}
return tag;
}
}
@@ -0,0 +1,85 @@
package com.glodblock.github.crossmod.waila;
import com.glodblock.github.crossmod.waila.tile.FluidInvWailaDataProvider;
import com.glodblock.github.crossmod.waila.tile.LevelMaintainerWailaDataProvide;
import com.google.common.collect.Lists;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import java.util.List;
public class TileWailaDataProvider implements IWailaDataProvider {
private final List<IWailaDataProvider> providers;
public TileWailaDataProvider() {
final IWailaDataProvider fluidInv = new FluidInvWailaDataProvider();
final IWailaDataProvider levelMaintainer = new LevelMaintainerWailaDataProvide();
this.providers = Lists.newArrayList(fluidInv, levelMaintainer);
}
@Override
public ItemStack getWailaStack(final IWailaDataAccessor accessor, final IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
for (final IWailaDataProvider provider : this.providers) {
provider.getWailaHead(itemStack, currentToolTip, accessor, config);
}
return currentToolTip;
}
@Override
public List<String> getWailaBody(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
for (final IWailaDataProvider provider : this.providers) {
provider.getWailaBody(itemStack, currentToolTip, accessor, config);
}
return currentToolTip;
}
@Override
public List<String> getWailaTail(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
for (final IWailaDataProvider provider : this.providers) {
provider.getWailaTail(itemStack, currentToolTip, accessor, config);
}
return currentToolTip;
}
@Override
public NBTTagCompound getNBTData(
final EntityPlayerMP player,
final TileEntity te,
final NBTTagCompound tag,
final World world,
final int x,
final int y,
final int z) {
for (final IWailaDataProvider provider : this.providers) {
provider.getNBTData(player, te, tag, world, x, y, z);
}
return tag;
}
}
@@ -0,0 +1,40 @@
package com.glodblock.github.crossmod.waila;
import appeng.util.Utility;
import com.glodblock.github.util.NameConst;
import com.glodblock.github.util.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fluids.FluidStack;
public class Tooltip {
public static String fluidFormat(String name, int amount) {
return String.format("%s: %s mB", name, Utility.formatNumbers(amount));
}
public static String partFluidBusFormat(int amount) {
return String.format("%s: %s mB/t", I18n.format(NameConst.WAILA_SPEED), Utility.formatNumbers(amount / 5));
}
public static String tileFluidInterfaceFormat(String name, int amount, int face) {
return String.format("%s %s: %s mB", I18n.format(NameConst.GUI_FLUID_INTERFACE + "." + face), name, Utility.formatNumbers(amount));
}
public static String tileLevelMaintainerFormat(String name, long quantity, long batch, boolean isEnable) {
return String.format("%s: %s / %s %s",
name, Utility.formatNumbers(quantity), Utility.formatNumbers(batch),
isEnable ? I18n.format(NameConst.WAILA_ENABLE) : I18n.format(NameConst.WAILA_DISABLE)
);
}
public static String partFluidTerminalFluidFormat(FluidStack fs) {
int fid = Util.getFluidID(fs.getFluid());
if (fid == -1) {
return fs.getFluid().getLocalizedName();
} else if (Minecraft.getMinecraft().gameSettings.advancedItemTooltips) {
return String.format("%s (#%s) %s", fs.getFluid().getLocalizedName(), fid, fid);
} else {
return String.format("%s %s", fs.getFluid().getLocalizedName(), fid);
}
}
}
@@ -0,0 +1,27 @@
package com.glodblock.github.crossmod.waila;
import appeng.api.parts.IPartHost;
import appeng.tile.AEBaseTile;
import codechicken.nei.guihook.GuiContainerManager;
import cpw.mods.fml.common.event.FMLInterModComms;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.IWailaRegistrar;
public class WailaInit {
public static void run() {
FMLInterModComms.sendMessage("Waila", "register", WailaInit.class.getName() + ".register");
}
public static void register(final IWailaRegistrar registrar) {
final IWailaDataProvider part = new PartWailaDataProvider();
registrar.registerBodyProvider(part, IPartHost.class);
registrar.registerNBTProvider(part, IPartHost.class);
GuiContainerManager.addTooltipHandler(new FCTooltipHandlerWaila());
final IWailaDataProvider tile = new TileWailaDataProvider();
registrar.registerBodyProvider(tile, AEBaseTile.class);
registrar.registerNBTProvider(tile, AEBaseTile.class);
}
}
@@ -0,0 +1,52 @@
package com.glodblock.github.crossmod.waila.part;
import appeng.api.parts.IPart;
import appeng.integration.modules.waila.part.BasePartWailaDataProvider;
import com.glodblock.github.crossmod.waila.Tooltip;
import com.glodblock.github.inventory.AEFluidInventory;
import com.glodblock.github.inventory.IAEFluidInventory;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import java.util.List;
public class FluidInvWailaDataProvider extends BasePartWailaDataProvider {
@Override
public List<String> getWailaBody(
final IPart part,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
if (part instanceof IAEFluidInventory) {
((IAEFluidInventory) part).getInternalFluid().readFromNBT(accessor.getNBTData(), "fluidInv");
AEFluidInventory fluidInventory = ((IAEFluidInventory) part).getInternalFluid();
for (int i = 0; i < fluidInventory.getSlots(); i++) {
FluidStack fs = fluidInventory.getFluidStackInSlot(i);
if (fs == null) continue;
currentToolTip.add(Tooltip.fluidFormat(fs.getFluid().getLocalizedName(), fs.amount));
}
}
return currentToolTip;
}
@Override
public NBTTagCompound getNBTData(
final EntityPlayerMP player,
final IPart part,
final TileEntity te,
final NBTTagCompound tag,
final World world,
final int x,
final int y,
final int z) {
if (part instanceof IAEFluidInventory) {
((IAEFluidInventory) part).getInternalFluid().writeToNBT(tag, "fluidInv");
}
return tag;
}
}
@@ -0,0 +1,46 @@
package com.glodblock.github.crossmod.waila.part;
import appeng.api.parts.IPart;
import appeng.integration.modules.waila.part.BasePartWailaDataProvider;
import com.glodblock.github.common.parts.PartSharedFluidBus;
import com.glodblock.github.crossmod.waila.Tooltip;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import java.util.List;
public class SpeedWailaDataProvider extends BasePartWailaDataProvider {
@Override
public List<String> getWailaBody(
final IPart part,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
if (part instanceof PartSharedFluidBus) {
part.readFromNBT(accessor.getNBTData());
currentToolTip.add(Tooltip.partFluidBusFormat(((PartSharedFluidBus) part).calculateAmountToSend()));
}
return currentToolTip;
}
@Override
public NBTTagCompound getNBTData(
final EntityPlayerMP player,
final IPart part,
final TileEntity te,
final NBTTagCompound tag,
final World world,
final int x,
final int y,
final int z) {
if (part instanceof PartSharedFluidBus) {
part.writeToNBT(tag);
}
return tag;
}
}
@@ -0,0 +1,83 @@
package com.glodblock.github.crossmod.waila.tile;
import appeng.integration.modules.waila.BaseWailaDataProvider;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.common.tile.TileFluidInterface;
import com.glodblock.github.common.tile.TileFluidPacketDecoder;
import com.glodblock.github.crossmod.waila.Tooltip;
import com.glodblock.github.inventory.IAEFluidInventory;
import com.glodblock.github.inventory.IAEFluidTank;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import java.util.List;
public class FluidInvWailaDataProvider extends BaseWailaDataProvider {
@Override
public List<String> getWailaBody(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
final TileEntity te = accessor.getTileEntity();
if (te instanceof TileFluidInterface) {
((IAEFluidInventory) te).getInternalFluid().readFromNBT(accessor.getNBTData(), "fluidInv");
addTooltip(currentToolTip, ((IAEFluidInventory) te).getInternalFluid(), true);
} else if (te instanceof IAEFluidInventory) {
((IAEFluidInventory) te).getInternalFluid().readFromNBT(accessor.getNBTData(), "fluidInv");
addTooltip(currentToolTip, ((IAEFluidInventory) te).getInternalFluid());
} else if (te instanceof TileFluidPacketDecoder) {
te.readFromNBT(accessor.getNBTData());
IInventory inv = ((TileFluidPacketDecoder) te).getInventory();
for (int i = 0; i < inv.getSizeInventory(); i++) {
ItemStack is = inv.getStackInSlot(i);
if (is != null && is.getItem() instanceof ItemFluidPacket) {
FluidStack fs = ItemFluidPacket.getFluidStack(is);
currentToolTip.add(Tooltip.fluidFormat(fs.getFluid().getLocalizedName(), fs.amount));
}
}
}
return currentToolTip;
}
private void addTooltip(List<String> currentToolTip, IAEFluidTank ft, boolean prefix) {
for (int i = 0; i < ft.getSlots(); i++) {
if (ft.getFluidInSlot(i) == null) continue;
FluidStack fs = ft.getFluidInSlot(i).getFluidStack();
if (prefix) {
currentToolTip.add(Tooltip.tileFluidInterfaceFormat(fs.getFluid().getLocalizedName(), fs.amount, i));
} else {
currentToolTip.add(Tooltip.fluidFormat(fs.getFluid().getLocalizedName(), fs.amount));
}
}
}
private void addTooltip(List<String> currentToolTip, IAEFluidTank ft) {
this.addTooltip(currentToolTip, ft, false);
}
@Override
public NBTTagCompound getNBTData(
final EntityPlayerMP player,
final TileEntity te,
final NBTTagCompound tag,
final World world,
final int x,
final int y,
final int z) {
if (te instanceof IAEFluidInventory) {
((IAEFluidInventory) te).getInternalFluid().writeToNBT(tag, "fluidInv");
} else if (te instanceof TileFluidPacketDecoder) {
te.writeToNBT(tag);
}
return tag;
}
}
@@ -0,0 +1,57 @@
package com.glodblock.github.crossmod.waila.tile;
import appeng.api.storage.data.IAEItemStack;
import appeng.integration.modules.waila.BaseWailaDataProvider;
import com.glodblock.github.common.tile.TileLevelMaintainer;
import com.glodblock.github.crossmod.waila.Tooltip;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import java.util.List;
public class LevelMaintainerWailaDataProvide extends BaseWailaDataProvider {
@Override
public List<String> getWailaBody(
final ItemStack itemStack,
final List<String> currentToolTip,
final IWailaDataAccessor accessor,
final IWailaConfigHandler config) {
final TileEntity te = accessor.getTileEntity();
if (te instanceof TileLevelMaintainer) {
te.readFromNBT(accessor.getNBTData());
for (int i = 0; i < TileLevelMaintainer.REQ_COUNT; i++) {
IAEItemStack ias = ((TileLevelMaintainer) te).requests.getRequestStacks().getStack(i);
if (ias != null) {
currentToolTip.add(Tooltip.tileLevelMaintainerFormat(
ias.getItemStack().getDisplayName(),
((TileLevelMaintainer) te).requests.getQuantity(i),
((TileLevelMaintainer) te).requests.getBatchSize(i),
((TileLevelMaintainer) te).requests.isEnable(i)
));
}
}
}
return currentToolTip;
}
@Override
public NBTTagCompound getNBTData(
final EntityPlayerMP player,
final TileEntity te,
final NBTTagCompound tag,
final World world,
final int x,
final int y,
final int z) {
if (te instanceof TileLevelMaintainer) {
te.writeToNBT(tag);
}
return tag;
}
}
@@ -352,7 +352,8 @@ public class AEFluidInventory implements IAEFluidTank
}
catch( final Exception e )
{
AELog.debug( e );
this.fluids[x] = null;
AELog.debug(e);
}
}
}
@@ -1,7 +1,8 @@
package com.glodblock.github.inventory;
@FunctionalInterface
public interface IAEFluidInventory
{
void onFluidInventoryChanged( final IAEFluidTank inv, final int slot );
void onFluidInventoryChanged(final IAEFluidTank inv, final int slot);
AEFluidInventory getInternalFluid();
}
@@ -236,6 +236,11 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable
}
}
@Override
public AEFluidInventory getInternalFluid() {
return this.tanks;
}
private boolean hasWorkToDo() {
for (IAEFluidStack requiredWork : this.requireWork) {
if (requiredWork != null) {
@@ -20,9 +20,9 @@ public class FluidSorters {
final Fluid f1 = ItemFluidDrop.getAeFluidStack(o1).getFluid();
final Fluid f2 = ItemFluidDrop.getAeFluidStack(o2).getFluid();
if (getDirection() == SortDir.ASCENDING) {
return this.secondarySort(Util.getFluidModID(f2).compareToIgnoreCase(Util.getFluidModID(f1)), f1, f2);
return this.secondarySort(Util.getFluidModName(f2).compareToIgnoreCase(Util.getFluidModName(f1)), f1, f2);
}
return this.secondarySort(Util.getFluidModID(f1).compareToIgnoreCase(Util.getFluidModID(f2)), f2, f1);
return this.secondarySort(Util.getFluidModName(f1).compareToIgnoreCase(Util.getFluidModName(f2)), f2, f1);
}
private int secondarySort(final int compareToIgnoreCase, final Fluid f1, final Fluid f2) {
@@ -24,7 +24,7 @@ public final class ModAndClassUtil {
public static boolean NEI = false;
public static boolean COFH = false;
public static boolean GTPP = false;
public static boolean WAILA = false;
public static boolean isDoubleButton;
public static boolean isSaveText;
public static boolean isSearchStringTooltip;
@@ -132,5 +132,7 @@ public final class ModAndClassUtil {
COFH = true;
if (Loader.isModLoaded("miscutils"))
GTPP = true;
if (Loader.isModLoaded("Waila"))
WAILA = true;
}
}
@@ -35,6 +35,10 @@ public class NameConst {
public static final String TT_REQUEST_SIZE = TT_KEY + "request_size";
public static final String TT_BATCH_SIZE = TT_KEY + "batch_size";
public static final String WAILA_KEY = FluidCraft.MODID + ".waila.";
public static final String WAILA_ENABLE = WAILA_KEY + "enable";
public static final String WAILA_DISABLE = WAILA_KEY + "disable";
public static final String WAILA_SPEED = WAILA_KEY + "speed";
public static final String RES_KEY = FluidCraft.MODID + ":";
public static final String GUI_KEY = FluidCraft.MODID + ".gui.";
@@ -10,6 +10,8 @@ import appeng.api.parts.IPart;
import appeng.api.storage.data.IAEFluidStack;
import appeng.util.item.AEFluidStack;
import com.glodblock.github.common.item.ItemFluidPacket;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.registry.GameData;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -145,6 +147,23 @@ public final class Util {
} catch (Exception e) {
return "";
}
}
public static ModContainer getFluidMod(Fluid fluid) {
return GameData.findModOwner(String.format("%s:%s", getFluidModID(fluid), fluid.getName()));
}
public static int getFluidID(Fluid fluid) {
return GameData.getBlockRegistry().getId(fluid.getBlock());
}
public static String getFluidModName(Fluid fluid) {
try {
ModContainer mod = getFluidMod(fluid);
return mod == null ? "Minecraft" : mod.getName();
} catch (Exception e) {
return "";
}
}