diff --git a/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java b/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java index 85fe2c0b..70282f3a 100644 --- a/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java +++ b/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java @@ -1,12 +1,16 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.common.storage.CellType; import com.glodblock.github.loader.ItemAndBlockHolder; import com.google.common.base.Optional; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEStackType; import appeng.items.AEBaseCell; public abstract class FCBaseItemCell extends AEBaseCell { @@ -23,8 +27,8 @@ public abstract class FCBaseItemCell extends AEBaseCell { } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; } public FCBaseItemCell(Optional subName) { diff --git a/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java index 4e6d0887..de546820 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java @@ -1,15 +1,19 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import java.util.EnumSet; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEStackType; import appeng.core.features.AEFeature; import appeng.items.AEBaseInfiniteCell; import cpw.mods.fml.common.registry.GameRegistry; @@ -42,7 +46,7 @@ public class ItemCreativeFluidStorageCell extends AEBaseInfiniteCell } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; } } diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java index 599630dd..6d39562c 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java @@ -5,7 +5,6 @@ import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; -import appeng.api.storage.StorageChannel; import appeng.items.storage.ItemVoidStorageCell; import cpw.mods.fml.common.registry.GameRegistry; @@ -23,9 +22,4 @@ public class ItemFluidVoidStorageCell extends ItemVoidStorageCell implements IRe setCreativeTab(FluidCraftingTabs.INSTANCE); return this; } - - @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; - } } diff --git a/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java index f0646c9e..d90453ab 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java @@ -1,18 +1,21 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; import static com.glodblock.github.util.Util.FluidUtil.water_bucket; import java.util.EnumSet; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; import com.glodblock.github.util.Util; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEStackType; import appeng.core.features.AEFeature; import appeng.items.AEBaseInfiniteCell; import appeng.tile.inventory.IAEStackInventory; @@ -62,7 +65,7 @@ public class ItemInfinityWaterStorageCell extends AEBaseInfiniteCell } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; } } diff --git a/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java b/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java index 0dc7863e..d40f9c7e 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java @@ -1,5 +1,7 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import java.util.List; import net.minecraft.client.gui.GuiScreen; @@ -9,6 +11,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.FluidCraft; import com.glodblock.github.api.FluidCraftAPI; import com.glodblock.github.common.tabs.FluidCraftingTabs; @@ -17,9 +21,9 @@ import com.glodblock.github.util.NameConst; import com.glodblock.github.util.RenderUtil; import appeng.api.implementations.guiobjects.IGuiItemObject; -import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAEStackType; import appeng.items.AEBasePortableCell; import appeng.items.contents.CellUpgrades; import appeng.items.contents.PortableCellViewer; @@ -79,12 +83,12 @@ public class ItemPortableFluidCell extends AEBasePortableCell implements IRegist @Override public IGuiItemObject getGuiObject(final ItemStack is, final World w, final EntityPlayer p, final int x, final int y, final int z) { - return new PortableCellViewer(is, x, StorageChannel.FLUIDS); + return new PortableCellViewer(is, x, FLUID_STACK_TYPE); } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; } @Override diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java index 702367ac..30fe136d 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java @@ -1,8 +1,10 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEStackType; import appeng.parts.misc.PartStorageBus; public class PartFluidStorageBus extends PartStorageBus { @@ -12,7 +14,7 @@ public class PartFluidStorageBus extends PartStorageBus { } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public IAEStackType getStackType() { + return FLUID_STACK_TYPE; } } diff --git a/src/main/java/com/glodblock/github/coremod/FCClassTransformer.java b/src/main/java/com/glodblock/github/coremod/FCClassTransformer.java index ebd48a06..99add6c3 100644 --- a/src/main/java/com/glodblock/github/coremod/FCClassTransformer.java +++ b/src/main/java/com/glodblock/github/coremod/FCClassTransformer.java @@ -8,7 +8,6 @@ import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; -import com.glodblock.github.coremod.transform.ExternalStorageRegistryTransformer; import com.glodblock.github.coremod.transform.GuiCraftingTransformer; import com.glodblock.github.coremod.transform.NEITransformer; import com.gtnewhorizon.gtnhlib.asm.ASMUtil; @@ -23,7 +22,6 @@ public class FCClassTransformer implements IClassTransformer { switch (transformedName) { case "appeng.client.gui.implementations.GuiCraftingCPU", "appeng.client.gui.implementations.GuiCraftConfirm", "net.p455w0rd.wirelesscraftingterminal.client.gui.GuiCraftConfirm", "appeng.client.gui.widgets.GuiCraftingTree" -> tform = GuiCraftingTransformer.INSTANCE; case "appeng.integration.modules.NEI" -> tform = NEITransformer.INSTANCE; - case "appeng.core.features.registries.ExternalStorageRegistry" -> tform = ExternalStorageRegistryTransformer.INSTANCE; default -> { return basicClass; } diff --git a/src/main/java/com/glodblock/github/coremod/transform/ExternalStorageRegistryTransformer.java b/src/main/java/com/glodblock/github/coremod/transform/ExternalStorageRegistryTransformer.java deleted file mode 100644 index 0ad99cc6..00000000 --- a/src/main/java/com/glodblock/github/coremod/transform/ExternalStorageRegistryTransformer.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.glodblock.github.coremod.transform; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -import com.glodblock.github.coremod.FCClassTransformer; - -public class ExternalStorageRegistryTransformer extends FCClassTransformer.ClassMapper { - - public static final ExternalStorageRegistryTransformer INSTANCE = new ExternalStorageRegistryTransformer(); - - private ExternalStorageRegistryTransformer() { - // NO-OP - } - - @Override - protected ClassVisitor getClassMapper(ClassVisitor downstream) { - return new TransformExternalStorageRegistry(Opcodes.ASM5, downstream); - } - - @Override - protected int getWriteFlags() { - return ClassWriter.COMPUTE_FRAMES; - } - - private static class TransformExternalStorageRegistry extends ClassVisitor { - - public TransformExternalStorageRegistry(int api, ClassVisitor cv) { - super(api, cv); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if ("getHandler".equals(name)) { - return new TransformGetHandler(api, super.visitMethod(access, name, desc, signature, exceptions)); - } else { - return super.visitMethod(access, name, desc, signature, exceptions); - } - } - } - - private static class TransformGetHandler extends MethodVisitor { - - private int cnt_return = 0; - private int cnt_if = 0; - private Label L6 = null; - private final Label L9 = new Label(); - - TransformGetHandler(int api, MethodVisitor mv) { - super(api, mv); - } - - @Override - public void visitJumpInsn(int opcode, Label label) { - if (opcode == Opcodes.IFEQ) { - cnt_if++; - } - if (cnt_if == 3) { - L6 = label; - cnt_if++; - super.visitJumpInsn(opcode, L9); - return; - } - super.visitJumpInsn(opcode, label); - } - - @Override - public void visitInsn(int opcode) { - if (opcode == Opcodes.ARETURN) { - cnt_return++; - } - super.visitInsn(opcode); - if (cnt_return == 2) { - super.visitLabel(L9); - super.visitFieldInsn( - Opcodes.GETSTATIC, - "com/glodblock/github/inventory/external/AEFluidTankHandler", - "INSTANCE", - "Lcom/glodblock/github/inventory/external/AEFluidTankHandler;"); - super.visitVarInsn(Opcodes.ALOAD, 1); - super.visitVarInsn(Opcodes.ALOAD, 2); - super.visitVarInsn(Opcodes.ALOAD, 3); - super.visitVarInsn(Opcodes.ALOAD, 4); - super.visitMethodInsn( - Opcodes.INVOKEVIRTUAL, - "com/glodblock/github/inventory/external/AEFluidTankHandler", - "canHandle", - "(Lnet/minecraft/tileentity/TileEntity;Lnet/minecraftforge/common/util/ForgeDirection;Lappeng/api/storage/StorageChannel;Lappeng/api/networking/security/BaseActionSource;)Z", - false); - super.visitJumpInsn(Opcodes.IFEQ, L6); - super.visitFieldInsn( - Opcodes.GETSTATIC, - "com/glodblock/github/inventory/external/AEFluidTankHandler", - "INSTANCE", - "Lcom/glodblock/github/inventory/external/AEFluidTankHandler;"); - super.visitInsn(Opcodes.ARETURN); - cnt_return++; - } - } - } -} diff --git a/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java b/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java deleted file mode 100644 index e1ced089..00000000 --- a/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.glodblock.github.inventory; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.annotation.Nonnull; - -import net.minecraft.event.ClickEvent; -import net.minecraft.event.HoverEvent; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatStyle; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTankInfo; -import net.minecraftforge.fluids.IFluidHandler; - -import appeng.api.AEApi; -import appeng.api.config.AccessRestriction; -import appeng.api.config.Actionable; -import appeng.api.config.StorageFilter; -import appeng.api.networking.security.BaseActionSource; -import appeng.api.networking.ticking.TickRateModulation; -import appeng.api.storage.IMEMonitor; -import appeng.api.storage.IMEMonitorHandlerReceiver; -import appeng.api.storage.StorageChannel; -import appeng.api.storage.data.IAEFluidStack; -import appeng.api.storage.data.IAEStack; -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(); - private final HashMap listeners = new HashMap<>(); - private BaseActionSource mySource; - private StorageFilter mode; - private boolean init = false; - - public MEMonitorIFluidHandler(IFluidHandler handler, ForgeDirection side) { - this.mode = StorageFilter.EXTRACTABLE_ONLY; - this.handler = handler; - this.side = side; - } - - public MEMonitorIFluidHandler(IFluidHandler handler) { - this.mode = StorageFilter.EXTRACTABLE_ONLY; - this.handler = handler; - this.side = ForgeDirection.UNKNOWN; - } - - public void addListener(IMEMonitorHandlerReceiver l, Object verificationToken) { - this.listeners.put(l, verificationToken); - } - - public void removeListener(IMEMonitorHandlerReceiver l) { - this.listeners.remove(l); - } - - public IAEFluidStack injectItems(IAEFluidStack input, Actionable type, BaseActionSource src) { - if (!this.handler.canFill(this.side, input.getFluid())) { - return input; - } - - int filled = this.handler.fill(this.side, input.getFluidStack(), type == Actionable.MODULATE); - - if (type == Actionable.MODULATE) { - this.onTick(); - } - - if ((long) filled == input.getStackSize()) { - return null; - } - - IAEFluidStack o = input.copy(); - o.setStackSize(input.getStackSize() - (long) filled); - return o; - } - - public IAEFluidStack extractItems(IAEFluidStack request, Actionable type, BaseActionSource src) { - if (!this.handler.canDrain(this.side, request.getFluid())) { - return null; - } - 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 issuesUrl = "https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/new"; - 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: ", - this.handler.getClass().getSimpleName(), - request.getFluidStack().getUnlocalizedName(), - removed.getUnlocalizedName()); - // elevate log to error if chat msg is removed to make it easier to find. - AELog.warn(msg + issuesUrl); - - ChatComponentText chatTxt = new ChatComponentText(msg); - chatTxt.setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED).setBold(true)); - - ChatComponentText chatUrl = new ChatComponentText(issuesUrl); - chatUrl.setChatStyle( - new ChatStyle().setUnderlined(true) - .setChatClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, issuesUrl)) - .setChatHoverEvent( - new HoverEvent( - HoverEvent.Action.SHOW_TEXT, - new ChatComponentText("Click to open link")))); - - ChatComponentText chat = new ChatComponentText(""); - chat.appendSibling(chatTxt); - chat.appendSibling(chatUrl); - - MinecraftServer.getServer().getConfigurationManager().sendChatMsg(chat); - } - IAEFluidStack o = request.copy(); - o.setStackSize(removed.amount); - if (type == Actionable.MODULATE) { - IAEFluidStack cachedStack = this.cache.findPrecise(request); - if (cachedStack != null) { - cachedStack.decStackSize(o.getStackSize()); - this.postDifference(Collections.singletonList(o.copy().setStackSize(-o.getStackSize()))); - } - } - return o; - } else { - return null; - } - } - - @Override - public StorageChannel getChannel() { - return StorageChannel.FLUIDS; - } - - // *Decompiled Stuff*// - - public TickRateModulation onTick() { - FluidTankInfo[] tankProperties = this.handler.getTankInfo(this.side); - IItemList currentlyOnStorage = AEApi.instance().storage().createFluidList(); - - if (tankProperties != null) { - for (FluidTankInfo tankProperty : tankProperties) { - if (this.mode != StorageFilter.EXTRACTABLE_ONLY || this.handler.drain(this.side, 1, false) != null) { - currentlyOnStorage.add(AEFluidStack.create(tankProperty.fluid)); - } - } - } - - // make diff between cache and new contents - IItemList> changes = AEApi.instance().storage().createAEStackList(); - // using non-enhanced for to prevent concurrency errors - for (Iterator iter = this.cache.iterator(); iter.hasNext();) { - IAEFluidStack copy = iter.next().copy(); - copy.setStackSize(-copy.getStackSize()); - changes.add(copy); - } - for (IAEFluidStack is : currentlyOnStorage) { - changes.add(is); - } - // update cache as soon as possible - this.cache = currentlyOnStorage; - // remove unchanged values - for (Iterator> iter = changes.iterator(); iter.hasNext();) { - if (iter.next().getStackSize() == 0L) { - iter.remove(); - } - } - - if (!changes.isEmpty()) { - this.postDifference(changes); - return TickRateModulation.URGENT; - } - - return TickRateModulation.SLOWER; - } - - private void postDifference(Iterable> a) { - if (a != null) { - Iterator> i = this.listeners.entrySet().iterator(); - - while (i.hasNext()) { - Map.Entry l = i.next(); - IMEMonitorHandlerReceiver key = l.getKey(); - if (key.isValid(l.getValue())) { - key.postChange(this, a, this.getActionSource()); - } else { - i.remove(); - } - } - } - } - - public AccessRestriction getAccess() { - return AccessRestriction.READ_WRITE; - } - - public boolean isPrioritized(IAEFluidStack input) { - return false; - } - - public boolean canAccept(IAEFluidStack input) { - return true; - } - - public int getPriority() { - return 0; - } - - public int getSlot() { - return 0; - } - - public boolean validForPass(int i) { - return true; - } - - public IItemList getAvailableItems(IItemList out, int iteration) { - if (!init) { - this.onTick(); - init = true; - } - for (IAEFluidStack fs : this.cache) { - out.addStorage(fs); - } - - return out; - } - - @Override - public IAEFluidStack getAvailableItem(@Nonnull IAEFluidStack request, int iteration) { - if (!init) { - this.onTick(); - init = true; - } - return this.cache.findPrecise(request); - } - - public IItemList getStorageList() { - return this.cache; - } - - public void setMode(StorageFilter mode) { - this.mode = mode; - } - - private BaseActionSource getActionSource() { - return this.mySource; - } - - public void setActionSource(BaseActionSource mySource) { - this.mySource = mySource; - } -} diff --git a/src/main/java/com/glodblock/github/inventory/external/AEFluidTankHandler.java b/src/main/java/com/glodblock/github/inventory/external/AEFluidTankHandler.java deleted file mode 100644 index acbde506..00000000 --- a/src/main/java/com/glodblock/github/inventory/external/AEFluidTankHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.glodblock.github.inventory.external; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.IFluidHandler; - -import com.glodblock.github.inventory.MEMonitorIFluidHandler; - -import appeng.api.networking.security.BaseActionSource; -import appeng.api.storage.IExternalStorageHandler; -import appeng.api.storage.IMEInventory; -import appeng.api.storage.StorageChannel; - -// This handler is too generic, so it will overlap other mods' fluid handler. -// It will be injected into external handler by ASM to make sure it is executed at last. -public class AEFluidTankHandler implements IExternalStorageHandler { - - public static final AEFluidTankHandler INSTANCE = new AEFluidTankHandler(); - - @Override - public boolean canHandle(TileEntity te, ForgeDirection d, StorageChannel channel, BaseActionSource mySrc) { - return channel == StorageChannel.FLUIDS && te instanceof IFluidHandler; - } - - @Override - @SuppressWarnings("rawtypes") - public IMEInventory getInventory(TileEntity te, ForgeDirection d, StorageChannel channel, BaseActionSource src) { - if (channel == StorageChannel.FLUIDS) { - return new MEMonitorIFluidHandler((IFluidHandler) te, d); - } - return null; - } -} diff --git a/src/main/java/com/glodblock/github/util/DualityFluidInterface.java b/src/main/java/com/glodblock/github/util/DualityFluidInterface.java index 43b13fe7..e26e0db3 100644 --- a/src/main/java/com/glodblock/github/util/DualityFluidInterface.java +++ b/src/main/java/com/glodblock/github/util/DualityFluidInterface.java @@ -1,5 +1,8 @@ package com.glodblock.github.util; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; +import static appeng.util.item.AEItemStackType.ITEM_STACK_TYPE; + import java.util.List; import java.util.Objects; @@ -18,7 +21,6 @@ import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.inventory.AEFluidInventory; import com.glodblock.github.inventory.IAEFluidInventory; import com.glodblock.github.inventory.IAEFluidTank; -import com.glodblock.github.inventory.MEMonitorIFluidHandler; import appeng.api.config.Actionable; import appeng.api.config.Upgrades; @@ -36,7 +38,6 @@ import appeng.api.networking.ticking.TickingRequest; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IStorageMonitorable; -import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.IConfigManager; @@ -44,6 +45,7 @@ import appeng.core.settings.TickRates; import appeng.helpers.IInterfaceHost; import appeng.me.GridAccessException; import appeng.me.helpers.AENetworkProxy; +import appeng.me.storage.MEMonitorIFluidHandler; import appeng.me.storage.MEMonitorPassThrough; import appeng.me.storage.NullInventory; import appeng.util.ConfigManager; @@ -67,10 +69,10 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable private int isWorking = -1; private final MEMonitorPassThrough items = new MEMonitorPassThrough( new NullInventory<>(), - StorageChannel.ITEMS); + ITEM_STACK_TYPE); private final MEMonitorPassThrough fluids = new MEMonitorPassThrough( new NullInventory<>(), - StorageChannel.FLUIDS); + FLUID_STACK_TYPE); private boolean resetConfigCache = true; public DualityFluidInterface(final AENetworkProxy networkProxy, final IInterfaceHost ih) {