From aa730bccd8e17c168d311e35b596e6a9ff0d231e Mon Sep 17 00:00:00 2001 From: Guillaume Mercier <10gui-gui10@live.ca> Date: Tue, 25 Mar 2025 21:33:23 -0400 Subject: [PATCH] Add one time log if removed fluid isn't the same as the requested fluid. This should help us diagnose similar issues in the future. --- .../github/inventory/MEMonitorIFluidHandler.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java b/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java index 02abc3de..06bf49e8 100644 --- a/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java +++ b/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java @@ -25,10 +25,13 @@ import appeng.api.storage.IMEMonitorHandlerReceiver; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IItemList; +import appeng.core.AELog; import appeng.util.item.AEFluidStack; public class MEMonitorIFluidHandler implements IMEMonitor { + private static boolean WrongFluidRemovedWarnIssued = false; + private final IFluidHandler handler; private final ForgeDirection side; private IItemList cache = AEApi.instance().storage().createFluidList(); @@ -82,6 +85,16 @@ public class MEMonitorIFluidHandler implements IMEMonitor { } FluidStack removed = this.handler.drain(this.side, request.getFluidStack(), type == Actionable.MODULATE); if (removed != null && removed.amount != 0) { + // perform a one time log if the removed fluid isn't what's reported since this will create a dupe exploit + if (!WrongFluidRemovedWarnIssued && !removed.isFluidEqual(request.getFluidStack())) { + WrongFluidRemovedWarnIssued = true; + String msg = String.format( + "[AE2FC] MEMonitorIFluidHandler.extractItems got the wrong fluids while extracting from %s. expected %s got %s. Please report this message if seen: https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/new", + this.handler.getClass().getSimpleName(), + request.getFluidStack().getUnlocalizedName(), + removed.getUnlocalizedName()); + AELog.warn(msg); + } IAEFluidStack o = request.copy(); o.setStackSize(removed.amount); if (type == Actionable.MODULATE) {