aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities
diff options
context:
space:
mode:
authorquerns <33518699+querns@users.noreply.github.com>2023-09-06 11:29:16 -0500
committerGitHub <noreply@github.com>2023-09-06 18:29:16 +0200
commitdbc2ff835604eb2247dae92311b19a27aec82964 (patch)
treec5e755c6623134276c7c7827e05cb794870f2fe4 /src/main/java/gregtech/common/tileentities
parentb187326e6547bc2c801d4d723e455202fea1fc4c (diff)
downloadGT5-Unofficial-dbc2ff835604eb2247dae92311b19a27aec82964.tar.gz
GT5-Unofficial-dbc2ff835604eb2247dae92311b19a27aec82964.tar.bz2
GT5-Unofficial-dbc2ff835604eb2247dae92311b19a27aec82964.zip
Adds item and charging info to Locker WAILA panel (#2245)
* Adds item and charging info to Locker WAILA panel * Refactor Locker WAILA tip entries to happen more on client side
Diffstat (limited to 'src/main/java/gregtech/common/tileentities')
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java
index a36ed7fe40..abce9514de 100644
--- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java
+++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java
@@ -5,9 +5,16 @@ import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAYS_ENERGY_IN;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_LOCKER;
+import java.util.List;
+
import net.minecraft.entity.player.EntityPlayer;
+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.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import gregtech.api.enums.SoundResource;
@@ -17,10 +24,14 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.render.TextureFactory;
+import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
+import mcp.mobius.waila.api.IWailaConfigHandler;
+import mcp.mobius.waila.api.IWailaDataAccessor;
public class GT_MetaTileEntity_Locker extends GT_MetaTileEntity_TieredMachineBlock {
+ private static final String CHARGE_SLOT_WAILA_TAG = "charge_slot_";
public byte mType = 0;
public GT_MetaTileEntity_Locker(int aID, String aName, String aNameRegional, int aTier) {
@@ -202,4 +213,71 @@ public class GT_MetaTileEntity_Locker extends GT_MetaTileEntity_TieredMachineBlo
ItemStack aStack) {
return false;
}
+
+ @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);
+ for (int i = 0; i < 4; i++) {
+ final ItemStack itemStack = this.mInventory[3 - i];
+
+ if (itemStack != null) {
+ tag.setTag(CHARGE_SLOT_WAILA_TAG + i, itemStack.writeToNBT(new NBTTagCompound()));
+ }
+ }
+ }
+
+ @Override
+ public void getWailaBody(ItemStack itemStack, List<String> currentTip, IWailaDataAccessor accessor,
+ IWailaConfigHandler config) {
+ super.getWailaBody(itemStack, currentTip, accessor, config);
+
+ final NBTTagCompound tag = accessor.getNBTData();
+
+ for (int i = 0; i < 4; i++) {
+ final String index = GT_Utility.formatNumbers(i + 1);
+
+ if (tag.hasKey(CHARGE_SLOT_WAILA_TAG + i)) {
+ final ItemStack slotItem = ItemStack
+ .loadItemStackFromNBT(tag.getCompoundTag(CHARGE_SLOT_WAILA_TAG + i));
+ assert slotItem != null;
+
+ currentTip.add(
+ GT_ModHandler.getElectricItemCharge(slotItem)
+ .map(chargeInfo -> {
+ final float ratio = (float) chargeInfo[0] / (float) chargeInfo[1];
+ final EnumChatFormatting chargeFormat;
+
+ if (ratio == 0L) {
+ chargeFormat = EnumChatFormatting.GRAY;
+ } else if (ratio < 0.25) {
+ chargeFormat = EnumChatFormatting.RED;
+ } else if (ratio < 0.5) {
+ chargeFormat = EnumChatFormatting.GOLD;
+ } else if (ratio < 0.75) {
+ chargeFormat = EnumChatFormatting.YELLOW;
+ } else if (ratio < 1L) {
+ chargeFormat = EnumChatFormatting.GREEN;
+ } else {
+ chargeFormat = EnumChatFormatting.AQUA;
+ }
+
+ return StatCollector.translateToLocalFormatted(
+ "gt.locker.waila_armor_slot_charged",
+ index,
+ slotItem.getDisplayName(),
+ chargeFormat,
+ GT_Utility.formatNumbers(ratio * 100));
+ })
+ .orElseGet(
+ // Lazy initialization
+ () -> StatCollector.translateToLocalFormatted(
+ "gt.locker.waila_armor_slot_generic",
+ index,
+ slotItem.getDisplayName())));
+ } else {
+ currentTip.add(StatCollector.translateToLocalFormatted("gt.locker.waila_armor_slot_none", index));
+ }
+ }
+ }
}