aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common/tileentities')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java101
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java105
2 files changed, 197 insertions, 9 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java
index 1f6905926a..fcfc75b107 100644
--- a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java
+++ b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java
@@ -4,18 +4,24 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_HATCH;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_HATCH_ACTIVE;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.EnumSet;
import java.util.List;
import javax.annotation.Nullable;
+import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
+import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
@@ -35,9 +41,11 @@ import appeng.items.storage.ItemBasicStorageCell;
import appeng.me.GridAccessException;
import appeng.me.helpers.AENetworkProxy;
import appeng.me.helpers.IGridProxyable;
-import appeng.util.IWideReadableNumberConverter;
import appeng.util.Platform;
import appeng.util.ReadableNumberConverter;
+import appeng.util.item.AEItemStack;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import gregtech.GTMod;
import gregtech.api.enums.ItemList;
import gregtech.api.gui.modularui.GTUIInfos;
@@ -47,6 +55,8 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.MTEHatchOutputBus;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GTUtility;
+import mcp.mobius.waila.api.IWailaConfigHandler;
+import mcp.mobius.waila.api.IWailaDataAccessor;
public class MTEHatchOutputBusME extends MTEHatchOutputBus implements IPowerChannelState {
@@ -339,13 +349,96 @@ public class MTEHatchOutputBusME extends MTEHatchOutputBus implements IPowerChan
}
@Override
+ public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y,
+ int z) {
+ super.getWailaNBTData(player, tile, tag, world, x, y, z);
+ tag.setLong("cacheCapacity", getCacheCapacity());
+ tag.setInteger("stackCount", itemCache.size());
+
+ IAEItemStack[] stacks = itemCache.toArray(new IAEItemStack[0]);
+
+ Arrays.sort(
+ stacks,
+ Comparator.comparingLong(IAEItemStack::getStackSize)
+ .reversed());
+
+ if (stacks.length > 10) {
+ stacks = Arrays.copyOf(stacks, 10);
+ }
+
+ NBTTagList tagList = new NBTTagList();
+ tag.setTag("stacks", tagList);
+
+ for (IAEItemStack stack : stacks) {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ stack.writeToNBT(stackTag);
+ tagList.appendTag(stackTag);
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void getWailaBody(ItemStack itemStack, List<String> ss, IWailaDataAccessor accessor,
+ IWailaConfigHandler config) {
+ super.getWailaBody(itemStack, ss, accessor, config);
+
+ NBTTagCompound tag = accessor.getNBTData();
+
+ ss.add(
+ String.format(
+ "Item cache capacity: %s%s%s",
+ EnumChatFormatting.GOLD,
+ GTUtility.formatNumbers(tag.getLong("cacheCapacity")),
+ EnumChatFormatting.RESET));
+
+ if (!GuiScreen.isShiftKeyDown()) {
+ ss.add("Hold Shift for more info");
+ return;
+ }
+
+ NBTTagList stacks = tag.getTagList("stacks", 10);
+ int stackCount = tag.getInteger("stackCount");
+
+ if (stackCount == 0) {
+ ss.add("This bus has no cached stacks");
+ } else {
+ ss.add(
+ String.format(
+ "The bus contains %s%d%s cached stack%s: ",
+ EnumChatFormatting.GOLD,
+ stackCount,
+ EnumChatFormatting.RESET,
+ stackCount > 1 ? "s" : ""));
+
+ for (int i = 0; i < stacks.tagCount(); i++) {
+ IAEItemStack stack = AEItemStack.loadItemStackFromNBT(stacks.getCompoundTagAt(i));
+
+ ss.add(
+ String.format(
+ "%s: %s%s%s",
+ stack.getItemStack()
+ .getDisplayName(),
+ EnumChatFormatting.GOLD,
+ GTUtility.formatNumbers(stack.getStackSize()),
+ EnumChatFormatting.RESET));
+ }
+
+ if (stackCount > stacks.tagCount()) {
+ ss.add(EnumChatFormatting.ITALIC + "And " + (stackCount - stacks.tagCount()) + " more...");
+ }
+ }
+ }
+
+ @Override
public String[] getInfoData() {
List<String> ss = new ArrayList<>();
ss.add(
"The bus is " + ((getProxy() != null && getProxy().isActive()) ? EnumChatFormatting.GREEN + "online"
: EnumChatFormatting.RED + "offline" + getAEDiagnostics()) + EnumChatFormatting.RESET);
- IWideReadableNumberConverter nc = ReadableNumberConverter.INSTANCE;
- ss.add("Item cache capacity: " + nc.toWideReadableForm(getCacheCapacity()));
+ ss.add(
+ "Item cache capacity: " + EnumChatFormatting.GOLD
+ + GTUtility.formatNumbers(getCacheCapacity())
+ + EnumChatFormatting.RESET);
if (itemCache.isEmpty()) {
ss.add("The bus has no cached items");
} else {
@@ -356,7 +449,7 @@ public class MTEHatchOutputBusME extends MTEHatchOutputBus implements IPowerChan
s.getItem()
.getItemStackDisplayName(s.getItemStack()) + ": "
+ EnumChatFormatting.GOLD
- + nc.toWideReadableForm(s.getStackSize())
+ + GTUtility.formatNumbers(s.getStackSize())
+ EnumChatFormatting.RESET);
if (++counter > 100) break;
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java
index 40980c5f14..7ddf136a72 100644
--- a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java
+++ b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java
@@ -4,18 +4,24 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_FLUID_HATCH;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_FLUID_HATCH_ACTIVE;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.EnumSet;
import java.util.List;
import javax.annotation.Nullable;
+import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
+import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
@@ -43,8 +49,9 @@ import appeng.core.stats.Stats;
import appeng.me.GridAccessException;
import appeng.me.helpers.AENetworkProxy;
import appeng.me.helpers.IGridProxyable;
-import appeng.util.IWideReadableNumberConverter;
import appeng.util.ReadableNumberConverter;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import gregtech.GTMod;
import gregtech.api.enums.GTValues;
import gregtech.api.enums.ItemList;
@@ -55,6 +62,8 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.MTEHatchOutput;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GTUtility;
+import mcp.mobius.waila.api.IWailaConfigHandler;
+import mcp.mobius.waila.api.IWailaDataAccessor;
public class MTEHatchOutputME extends MTEHatchOutput implements IPowerChannelState {
@@ -301,6 +310,89 @@ public class MTEHatchOutputME extends MTEHatchOutput implements IPowerChannelSta
}
@Override
+ public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y,
+ int z) {
+ super.getWailaNBTData(player, tile, tag, world, x, y, z);
+ tag.setLong("cacheCapacity", getCacheCapacity());
+ tag.setInteger("stackCount", fluidCache.size());
+
+ IAEFluidStack[] stacks = fluidCache.toArray(new IAEFluidStack[0]);
+
+ Arrays.sort(
+ stacks,
+ Comparator.comparingLong(IAEFluidStack::getStackSize)
+ .reversed());
+
+ if (stacks.length > 10) {
+ stacks = Arrays.copyOf(stacks, 10);
+ }
+
+ NBTTagList tagList = new NBTTagList();
+ tag.setTag("stacks", tagList);
+
+ for (IAEFluidStack stack : stacks) {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ stack.getFluidStack()
+ .writeToNBT(stackTag);
+ stackTag.setLong("Amount", stack.getStackSize());
+ tagList.appendTag(stackTag);
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void getWailaBody(ItemStack itemStack, List<String> ss, IWailaDataAccessor accessor,
+ IWailaConfigHandler config) {
+ super.getWailaBody(itemStack, ss, accessor, config);
+
+ NBTTagCompound tag = accessor.getNBTData();
+
+ ss.add(
+ String.format(
+ "Fluid cache capacity: %s%s L%s",
+ EnumChatFormatting.GOLD,
+ GTUtility.formatNumbers(tag.getLong("cacheCapacity")),
+ EnumChatFormatting.RESET));
+
+ if (!GuiScreen.isShiftKeyDown()) {
+ ss.add("Hold Shift for more info");
+ return;
+ }
+
+ NBTTagList stacks = tag.getTagList("stacks", 10);
+ int stackCount = tag.getInteger("stackCount");
+
+ if (stackCount == 0) {
+ ss.add("This hatch has no cached fluids");
+ } else {
+ ss.add(
+ String.format(
+ "The hatch contains %s%d%s cached fluid%s: ",
+ EnumChatFormatting.GOLD,
+ stackCount,
+ EnumChatFormatting.RESET,
+ stackCount > 1 ? "s" : ""));
+
+ for (int i = 0; i < stacks.tagCount(); i++) {
+ NBTTagCompound stackTag = stacks.getCompoundTagAt(i);
+ FluidStack stack = FluidStack.loadFluidStackFromNBT(stackTag);
+
+ ss.add(
+ String.format(
+ "%s: %s%s L%s",
+ stack.getLocalizedName(),
+ EnumChatFormatting.GOLD,
+ GTUtility.formatNumbers(stackTag.getLong("Amount")),
+ EnumChatFormatting.RESET));
+ }
+
+ if (stackCount > stacks.tagCount()) {
+ ss.add(EnumChatFormatting.ITALIC + "And " + (stackCount - stacks.tagCount()) + " more...");
+ }
+ }
+ }
+
+ @Override
public void setItemNBT(NBTTagCompound aNBT) {
super.setItemNBT(aNBT);
if (baseCapacity != DEFAULT_CAPACITY) aNBT.setLong("baseCapacity", baseCapacity);
@@ -367,8 +459,11 @@ public class MTEHatchOutputME extends MTEHatchOutput implements IPowerChannelSta
ss.add(
"The hatch is " + ((getProxy() != null && getProxy().isActive()) ? EnumChatFormatting.GREEN + "online"
: EnumChatFormatting.RED + "offline" + getAEDiagnostics()) + EnumChatFormatting.RESET);
- IWideReadableNumberConverter nc = ReadableNumberConverter.INSTANCE;
- ss.add("Fluid cache capacity: " + nc.toWideReadableForm(getCacheCapacity()) + " mB");
+ ss.add(
+ "Fluid cache capacity: " + EnumChatFormatting.GOLD
+ + GTUtility.formatNumbers(getCacheCapacity())
+ + " L"
+ + EnumChatFormatting.RESET);
if (fluidCache.isEmpty()) {
ss.add("The bus has no cached fluids");
} else {
@@ -379,8 +474,8 @@ public class MTEHatchOutputME extends MTEHatchOutput implements IPowerChannelSta
s.getFluidStack()
.getLocalizedName() + ": "
+ EnumChatFormatting.GOLD
- + nc.toWideReadableForm(s.getStackSize())
- + " mB"
+ + GTUtility.formatNumbers(s.getStackSize())
+ + " L"
+ EnumChatFormatting.RESET);
if (++counter > 100) break;
}