1818import  net .minecraft .world .item .ArmorItem ;
1919import  net .minecraft .world .item .ItemStack ;
2020import  net .minecraft .world .level .block .entity .BlockEntity ;
21+ import  net .neoforged .neoforge .capabilities .Capabilities ;
2122import  net .neoforged .neoforge .items .IItemHandler ;
2223import  net .neoforged .neoforge .items .wrapper .PlayerArmorInvWrapper ;
2324import  net .neoforged .neoforge .items .wrapper .PlayerInvWrapper ;
@@ -57,22 +58,23 @@ public final MethodResult addItemToPlayer(String invDirection, Map<?, ?> item) t
5758        if  (filter .rightPresent ())
5859            return  MethodResult .of (0 , filter .getRight ());
5960
60-         return  MethodResult . of ( addItemCommon (invDirection , filter .getLeft ()),  null );
61+         return  addItemCommon (invDirection , filter .getLeft ());
6162    }
6263
63-     private  int  addItemCommon (String  invDirection , ItemFilter  filter ) throws  LuaException  {
64+     private  MethodResult  addItemCommon (String  invDirection , ItemFilter  filter ) throws  LuaException  {
6465        Direction  direction  = validateSide (invDirection );
6566
66-         BlockEntity  targetEntity  = owner .getLevel ().getBlockEntity (owner .getPos ().relative (direction ));
67-         IItemHandler  inventoryFrom  = null ; // targetEntity != null ? targetEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, direction).resolve().orElse(null) : null; 
6867        Pair <IItemHandler , Integer > inventoryTo  = getHandlerFromSlot (filter .getToSlot ());
68+         IItemHandler  inventoryFrom  = getLevel ().getCapability (Capabilities .ItemHandler .BLOCK , owner .getPos ().relative (direction ), direction .getOpposite ());
69+         if  (inventoryFrom  == null )
70+             return  MethodResult .of (0 , "INVENTORY_FROM_INVALID" );
6971
7072        inventoryTo .ifRightPresent (slot  -> filter .toSlot  = slot );
7173
7274        //if (invSlot >= inventoryTo.getSlots() || invSlot < 0) 
7375        //  throw new LuaException("Inventory out of bounds " + invSlot + " (max: " + (inventoryTo.getSlots() - 1) + ")"); 
7476
75-         return  InventoryUtil .moveItem (inventoryFrom , inventoryTo .getLeft (), filter );
77+         return  MethodResult . of ( InventoryUtil .moveItem (inventoryFrom , inventoryTo .getLeft (), filter ) );
7678    }
7779
7880    @ LuaFunction (mainThread  = true )
@@ -87,9 +89,8 @@ public final MethodResult removeItemFromPlayer(String invDirection, Map<?, ?> it
8789    private  MethodResult  removeItemCommon (String  invDirection , ItemFilter  filter ) throws  LuaException  {
8890        Direction  direction  = validateSide (invDirection );
8991
90-         BlockEntity  targetEntity  = owner .getLevel ().getBlockEntity (owner .getPos ().relative (direction ));
9192        Pair <IItemHandler , Integer > inventoryFrom  = getHandlerFromSlot (filter .getFromSlot ());
92-         IItemHandler  inventoryTo  = null ;  //targetEntity != null ? targetEntity .getCapability(ForgeCapabilities.ITEM_HANDLER, direction).resolve ().orElse(null) : null ;
93+         IItemHandler  inventoryTo  = getLevel () .getCapability (Capabilities . ItemHandler . BLOCK ,  owner . getPos ().relative ( direction ),  direction . getOpposite ()) ;
9394
9495        if  (inventoryTo  == null )
9596            return  MethodResult .of (0 , "INVENTORY_TO_INVALID" );
0 commit comments