From f3e5797ec5989b83346b85b9ec013c275858069d Mon Sep 17 00:00:00 2001 From: Kogepan229 Date: Thu, 4 Dec 2025 17:22:02 +0900 Subject: [PATCH] Update Storage Monitor --- .../item/ItemFluidConversionMonitor.java | 7 + .../common/item/ItemFluidStorageMonitor.java | 7 + .../parts/PartFluidConversionMonitor.java | 153 ++---------------- .../common/parts/PartFluidStorageMonitor.java | 38 ++--- .../crossmod/waila/PartWailaDataProvider.java | 4 +- .../part/FluidMonitorWailaDataProvider.java | 47 ------ 6 files changed, 42 insertions(+), 214 deletions(-) delete mode 100644 src/main/java/com/glodblock/github/crossmod/waila/part/FluidMonitorWailaDataProvider.java diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java b/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java index ae9dde55..e8185fb3 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java @@ -3,9 +3,11 @@ package com.glodblock.github.common.item; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.World; import com.glodblock.github.FluidCraft; +import com.glodblock.github.client.textures.FCPartsTexture; import com.glodblock.github.common.parts.PartFluidConversionMonitor; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.util.NameConst; @@ -37,6 +39,11 @@ public class ItemFluidConversionMonitor extends FCBaseItem implements IPartItem return this; } + @Override + public IIcon getIconIndex(ItemStack p_77650_1_) { + return FCPartsTexture.PartTerminalBroad.getIcon(); + } + public void registerIcons(IIconRegister _iconRegister) {} @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java index c5d0b33f..4c1c4730 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java @@ -3,9 +3,11 @@ package com.glodblock.github.common.item; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.World; import com.glodblock.github.FluidCraft; +import com.glodblock.github.client.textures.FCPartsTexture; import com.glodblock.github.common.parts.PartFluidStorageMonitor; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.util.NameConst; @@ -37,6 +39,11 @@ public class ItemFluidStorageMonitor extends FCBaseItem implements IPartItem { return this; } + @Override + public IIcon getIconIndex(ItemStack p_77650_1_) { + return FCPartsTexture.PartTerminalBroad.getIcon(); + } + public void registerIcons(IIconRegister _iconRegister) {} @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java b/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java index a92043c5..29918c6a 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java @@ -1,157 +1,28 @@ package com.glodblock.github.common.parts; -import java.util.Collections; -import java.util.List; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Vec3; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidContainerItem; +import net.minecraft.nbt.NBTTagCompound; -import org.apache.commons.lang3.tuple.MutablePair; +import appeng.parts.reporting.PartConversionMonitor; -import com.glodblock.github.common.item.ItemFluidPacket; -import com.glodblock.github.util.Util; - -import appeng.api.config.Actionable; -import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.PlayerSource; -import appeng.api.storage.IMEMonitor; -import appeng.api.storage.data.IAEFluidStack; -import appeng.me.GridAccessException; -import appeng.util.InventoryAdaptor; -import appeng.util.Platform; - -public class PartFluidConversionMonitor extends PartFluidStorageMonitor { +public class PartFluidConversionMonitor extends PartConversionMonitor { public PartFluidConversionMonitor(ItemStack is) { super(is); } @Override - public boolean onPartShiftActivate(final EntityPlayer player, final Vec3 pos) { - if (Platform.isClient()) { - return true; - } - - if (!this.getProxy().isActive()) { - return false; - } - - if (!Platform.hasPermissions(this.getLocation(), player)) { - return false; - } - FluidStack fluidStack; - ItemStack item = player.getCurrentEquippedItem(); - if (item != null && item.getItem() instanceof ItemFluidPacket) { - fluidStack = ItemFluidPacket.getFluidStack(item); - } else { - fluidStack = Util.FluidUtil.getFluidFromContainer(item); - } - if (this.getDisplayed() == null || fluidStack == null - || fluidStack.getFluid() != ((IAEFluidStack) this.getDisplayed()).getFluid()) { - return false; - } - - try { - if (!this.getProxy().isActive()) { - return false; + public void readFromNBT(NBTTagCompound data) { + // Migrate old tag + if (data.hasKey("configuredItem")) { + final NBTTagCompound myItem = data.getCompoundTag("configuredItem"); + if (!myItem.hasNoTags() && !myItem.hasKey("StackType")) { + myItem.setString("StackType", FLUID_STACK_TYPE.getId()); } - final IEnergySource energy = this.getProxy().getEnergy(); - final IMEMonitor cell = this.getProxy().getStorage().getFluidInventory(); - final IAEFluidStack input = (IAEFluidStack) this.getDisplayed().copy().setStackSize(fluidStack.amount); - final IAEFluidStack failedToInsert = Platform - .poweredInsert(energy, cell, input, new PlayerSource(player, this)); - if (failedToInsert != null && failedToInsert.getStackSize() == input.getStackSize()) { - return false; - } else if (failedToInsert == null || failedToInsert.getStackSize() != input.getStackSize()) { - if (item.getItem() instanceof ItemFluidPacket) { - if (failedToInsert != null) { - player.getCurrentEquippedItem() - .setTagCompound(ItemFluidPacket.newStack(failedToInsert).getTagCompound()); - return true; - } - } else { - ItemStack tmp = item.copy(); - tmp.stackSize = 1; - ItemStack tank = null; - if (failedToInsert == null) { - tank = Util.FluidUtil.clearFluid(tmp); - } else { - if (tmp.getItem() instanceof IFluidContainerItem) { - tank = Util.FluidUtil.setFluidContainerAmount(tmp, (int) failedToInsert.getStackSize()); - } else if (FluidContainerRegistry.isContainer(tmp)) { - IAEFluidStack insertedFluid = input.copy(); - insertedFluid.decStackSize(failedToInsert.getStackSize()); - this.getProxy().getStorage().getFluidInventory() - .extractItems(insertedFluid, Actionable.MODULATE, new PlayerSource(player, this)); - return false; - } - } - if (tank != null && !player.inventory.addItemStackToInventory(tank)) { - player.entityDropItem(tank, 0); - } - } - item.stackSize--; - if (item.stackSize <= 0) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - } - } - - } catch (final GridAccessException ignored) {} - return true; - } - - @Override - protected void extractItem(final EntityPlayer player) { - final IAEFluidStack input = (IAEFluidStack) this.getDisplayed(); - ItemStack eq = player.getCurrentEquippedItem(); - if (input != null && Util.FluidUtil.isFluidContainer(eq) && Util.FluidUtil.isEmpty(eq)) { - try { - if (!this.getProxy().isActive()) { - return; - } - - final IEnergySource energy = this.getProxy().getEnergy(); - final IMEMonitor cell = this.getProxy().getStorage().getFluidInventory(); - ItemStack tank = eq.copy(); - tank.stackSize = 1; - MutablePair fillStack = Util.FluidUtil.fillStack(tank, input.getFluidStack()); - input.setStackSize(fillStack.left); - - final IAEFluidStack retrieved = Platform - .poweredExtraction(energy, cell, input, new PlayerSource(player, this)); - if (retrieved != null) { - if (!player.inventory.addItemStackToInventory(fillStack.right)) { - player.entityDropItem(fillStack.right.copy(), 0); - } - eq.stackSize--; - if (eq.stackSize <= 0) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - } - final InventoryAdaptor adaptor = InventoryAdaptor.getAdaptor(player, ForgeDirection.UNKNOWN); - ItemStack newItems = adaptor.addItems( - Util.FluidUtil.setFluidContainerAmount(fillStack.right, (int) retrieved.getStackSize())); - if (newItems != null) { - final TileEntity te = this.getTile(); - final List list = Collections.singletonList(newItems); - Platform.spawnDrops( - player.worldObj, - te.xCoord + this.getSide().offsetX, - te.yCoord + this.getSide().offsetY, - te.zCoord + this.getSide().offsetZ, - list); - } - - if (player.openContainer != null) { - player.openContainer.detectAndSendChanges(); - } - } - } catch (final GridAccessException ignored) {} } + + super.readFromNBT(data); } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java index 25089861..f20a74e9 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java @@ -1,36 +1,28 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; -import com.glodblock.github.common.parts.base.FCPartMonitor; +import appeng.parts.reporting.PartStorageMonitor; -import appeng.client.texture.CableBusTextures; -import appeng.helpers.Reflected; +public class PartFluidStorageMonitor extends PartStorageMonitor { -public class PartFluidStorageMonitor extends FCPartMonitor { - - private static final CableBusTextures FRONT_BRIGHT_ICON = CableBusTextures.PartStorageMonitor_Bright; - private static final CableBusTextures FRONT_DARK_ICON = CableBusTextures.PartStorageMonitor_Dark; - private static final CableBusTextures FRONT_COLORED_ICON = CableBusTextures.PartStorageMonitor_Colored; - private static final CableBusTextures FRONT_COLORED_ICON_LOCKED = CableBusTextures.PartStorageMonitor_Colored_Locked; - - @Reflected - public PartFluidStorageMonitor(final ItemStack is) { + public PartFluidStorageMonitor(ItemStack is) { super(is); } @Override - public CableBusTextures getFrontBright() { - return FRONT_BRIGHT_ICON; - } + public void readFromNBT(NBTTagCompound data) { + // Migrate old tag + if (data.hasKey("configuredItem")) { + final NBTTagCompound myItem = data.getCompoundTag("configuredItem"); + if (!myItem.hasNoTags() && !myItem.hasKey("StackType")) { + myItem.setString("StackType", FLUID_STACK_TYPE.getId()); + } + } - @Override - public CableBusTextures getFrontColored() { - return this.isLocked() ? FRONT_COLORED_ICON_LOCKED : FRONT_COLORED_ICON; - } - - @Override - public CableBusTextures getFrontDark() { - return FRONT_DARK_ICON; + super.readFromNBT(data); } } diff --git a/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java b/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java index b36d9848..52d07723 100644 --- a/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java +++ b/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java @@ -10,7 +10,6 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import com.glodblock.github.crossmod.waila.part.FluidInvWailaDataProvider; -import com.glodblock.github.crossmod.waila.part.FluidMonitorWailaDataProvider; import com.glodblock.github.crossmod.waila.part.SpeedWailaDataProvider; import com.google.common.base.Optional; import com.google.common.collect.Lists; @@ -32,8 +31,7 @@ public class PartWailaDataProvider implements IWailaDataProvider { public PartWailaDataProvider() { final IPartWailaDataProvider speed = new SpeedWailaDataProvider(); final IPartWailaDataProvider fluidInv = new FluidInvWailaDataProvider(); - final IPartWailaDataProvider fluidMonitor = new FluidMonitorWailaDataProvider(); - this.providers = Lists.newArrayList(speed, fluidInv, fluidMonitor); + this.providers = Lists.newArrayList(speed, fluidInv); } @Override diff --git a/src/main/java/com/glodblock/github/crossmod/waila/part/FluidMonitorWailaDataProvider.java b/src/main/java/com/glodblock/github/crossmod/waila/part/FluidMonitorWailaDataProvider.java deleted file mode 100644 index ad85f6f2..00000000 --- a/src/main/java/com/glodblock/github/crossmod/waila/part/FluidMonitorWailaDataProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.glodblock.github.crossmod.waila.part; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import com.glodblock.github.common.parts.base.FCPartMonitor; -import com.glodblock.github.crossmod.waila.Tooltip; -import com.glodblock.github.util.Util; - -import appeng.api.parts.IPart; -import appeng.api.storage.data.IAEFluidStack; -import appeng.integration.modules.waila.part.BasePartWailaDataProvider; -import mcp.mobius.waila.api.IWailaConfigHandler; -import mcp.mobius.waila.api.IWailaDataAccessor; - -public class FluidMonitorWailaDataProvider extends BasePartWailaDataProvider { - - private final String key = "fluidStore"; - - @Override - public List getWailaBody(final IPart part, final List currentToolTip, - final IWailaDataAccessor accessor, final IWailaConfigHandler config) { - if (part instanceof FCPartMonitor && accessor.getNBTData().hasKey(key)) { - IAEFluidStack iaeFluidStack = Util.loadFluidStackFromNBT(accessor.getNBTData().getCompoundTag(key)); - if (iaeFluidStack != null) currentToolTip.add( - Tooltip.fluidFormat( - iaeFluidStack.getFluidStack().getLocalizedName(), - iaeFluidStack.getStackSize())); - } - 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 FCPartMonitor && ((FCPartMonitor) part).getAEStoreFluidStack() != null) { - NBTTagCompound data = new NBTTagCompound(); - ((FCPartMonitor) part).getAEStoreFluidStack().writeToNBT(data); - tag.setTag(key, data); - } - return tag; - } -}