diff options
Diffstat (limited to 'src/main/java/gregtech/common/tileentities')
-rw-r--r-- | src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java | 101 | ||||
-rw-r--r-- | src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java | 105 |
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; } |