Fixed issue with Terminal Inventories on Servers.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package appeng.container;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@@ -37,10 +38,14 @@ import appeng.container.slot.SlotFake;
|
||||
import appeng.container.slot.SlotInaccessable;
|
||||
import appeng.container.slot.SlotPlayerHotBar;
|
||||
import appeng.container.slot.SlotPlayerInv;
|
||||
import appeng.core.AELog;
|
||||
import appeng.core.sync.network.NetworkHandler;
|
||||
import appeng.core.sync.packets.PacketInventoryAction;
|
||||
import appeng.helpers.InventoryAction;
|
||||
import appeng.util.InventoryAdaptor;
|
||||
import appeng.util.Platform;
|
||||
import appeng.util.inv.AdaptorPlayerHand;
|
||||
import appeng.util.item.AEItemStack;
|
||||
|
||||
public abstract class AEBaseContainer extends Container
|
||||
{
|
||||
@@ -556,7 +561,7 @@ public abstract class AEBaseContainer extends Container
|
||||
if ( fail != null )
|
||||
cellInv.injectItems( ais, Actionable.MODULATE, mySrc );
|
||||
|
||||
player.updateHeldItem();
|
||||
updateHeld( player );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -575,7 +580,7 @@ public abstract class AEBaseContainer extends Container
|
||||
player.inventory.setItemStack( ais.getItemStack() );
|
||||
else
|
||||
player.inventory.setItemStack( null );
|
||||
player.updateHeldItem();
|
||||
updateHeld( player );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -586,7 +591,7 @@ public abstract class AEBaseContainer extends Container
|
||||
player.inventory.setItemStack( ais.getItemStack() );
|
||||
else
|
||||
player.inventory.setItemStack( null );
|
||||
player.updateHeldItem();
|
||||
updateHeld( player );
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -606,7 +611,7 @@ public abstract class AEBaseContainer extends Container
|
||||
player.inventory.setItemStack( ais.getItemStack() );
|
||||
else
|
||||
player.inventory.setItemStack( null );
|
||||
player.updateHeldItem();
|
||||
updateHeld( player );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -620,7 +625,7 @@ public abstract class AEBaseContainer extends Container
|
||||
is.stackSize--;
|
||||
if ( is.stackSize <= 0 )
|
||||
player.inventory.setItemStack( null );
|
||||
player.updateHeldItem();
|
||||
updateHeld( player );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -631,7 +636,7 @@ public abstract class AEBaseContainer extends Container
|
||||
ItemStack is = slotItem.getItemStack();
|
||||
is.stackSize = is.getMaxStackSize();
|
||||
player.inventory.setItemStack( is );
|
||||
player.updateHeldItem();
|
||||
updateHeld( player );
|
||||
}
|
||||
break;
|
||||
case MOVE_REGION:
|
||||
@@ -641,4 +646,16 @@ public abstract class AEBaseContainer extends Container
|
||||
}
|
||||
}
|
||||
|
||||
private void updateHeld(EntityPlayerMP p)
|
||||
{
|
||||
try
|
||||
{
|
||||
NetworkHandler.instance.sendTo( new PacketInventoryAction( InventoryAction.UPDATE_HAND, 0, AEItemStack.create( p.inventory.getItemStack() ) ), p );
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
AELog.error( e );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import java.io.IOException;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.client.ClientHelper;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.core.sync.AppEngPacket;
|
||||
import appeng.core.sync.network.INetworkInfo;
|
||||
@@ -43,6 +44,18 @@ public class PacketInventoryAction extends AppEngPacket
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clientPacketData(INetworkInfo network, AppEngPacket packet, EntityPlayer player)
|
||||
{
|
||||
if ( action == InventoryAction.UPDATE_HAND )
|
||||
{
|
||||
if ( slotItem == null )
|
||||
ClientHelper.proxy.getPlayers().get( 0 ).inventory.setItemStack( null );
|
||||
else
|
||||
ClientHelper.proxy.getPlayers().get( 0 ).inventory.setItemStack( slotItem.getItemStack() );
|
||||
}
|
||||
}
|
||||
|
||||
// api
|
||||
public PacketInventoryAction(InventoryAction action, int slot, IAEItemStack slotItem) throws IOException {
|
||||
this.action = action;
|
||||
|
||||
@@ -9,5 +9,5 @@ public enum InventoryAction
|
||||
CRAFT_STACK, CRAFT_ITEM, CRAFT_SHIFT,
|
||||
|
||||
// extra...
|
||||
MOVE_REGION, PICKUP_SINGLE
|
||||
MOVE_REGION, PICKUP_SINGLE, UPDATE_HAND
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user