55import appeng .api .storage .IStorageChannel ;
66import appeng .api .storage .data .IAEItemStack ;
77import appeng .api .storage .data .IAEStack ;
8+ import appeng .api .storage .data .IItemList ;
89import appeng .me .cache .GridStorageCache ;
910import appeng .me .cache .NetworkMonitor ;
1011import appeng .me .storage .NetworkInventoryHandler ;
@@ -46,10 +47,26 @@ public void postAlterationOfStoredItems(final IStorageChannel<?> chan, final Ite
4647 if (chan == Util .getFluidChannel () || (ModAndClassUtil .GAS && chan == Util .getGasChannel ())) {
4748 final var list = new ObjectArrayList <IAEItemStack >();
4849 for (final IAEStack <?> i : input ) {
49- final var drop = Util .packAEStackToDrop (i );
50- if (drop != null ) list .add (drop );
50+ final var size = i .getStackSize ();
51+ final var drop = Util .packAEStackToDrop (size > 0 ? i : i .setStackSize (-size ));
52+ if (drop != null ) list .add (drop .setStackSize (size ));
53+ i .setStackSize (size );
5154 }
5255 ((FCNetworkMonitor ) this .storageMonitors .get (Util .getItemChannel ())).fc$postChange (true , list , src );
5356 }
5457 }
58+
59+ @ Inject (method = "postChangesToNetwork" , at = @ At ("TAIL" ))
60+ private <T extends IAEStack <T >, C extends IStorageChannel <T >> void postChangesToNetwork (final C chan , final int upOrDown , final IItemList <T > availableItems , final IActionSource src , final CallbackInfo ci ) {
61+ if (chan == Util .getFluidChannel () || (ModAndClassUtil .GAS && chan == Util .getGasChannel ())) {
62+ final var list = new ObjectArrayList <IAEItemStack >();
63+ for (final IAEStack <?> i : availableItems ) {
64+ final var size = i .getStackSize ();
65+ final var drop = Util .packAEStackToDrop (size > 0 ? i : i .setStackSize (-size ));
66+ if (drop != null ) list .add (drop .setStackSize (size ));
67+ i .setStackSize (size );
68+ }
69+ ((FCNetworkMonitor ) this .storageMonitors .get (Util .getItemChannel ())).fc$postChange (upOrDown > 0 , list , src );
70+ }
71+ }
5572}
0 commit comments