Fixed issue with Terminal Inventories on Servers.

This commit is contained in:
AlgorithmX2 2014-02-09 18:56:35 -06:00
parent bc9cc1b9f3
commit 9f26cc0b43
3 changed files with 37 additions and 7 deletions

View file

@ -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 );
}
}
}

View file

@ -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;

View file

@ -9,5 +9,5 @@ public enum InventoryAction
CRAFT_STACK, CRAFT_ITEM, CRAFT_SHIFT,
// extra...
MOVE_REGION, PICKUP_SINGLE
MOVE_REGION, PICKUP_SINGLE, UPDATE_HAND
}