Fixed issue with Terminal Inventories on Servers.
This commit is contained in:
parent
bc9cc1b9f3
commit
9f26cc0b43
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue