示例#1
0
 public override net.minecraft.src.ItemStack Func_27086_a(int i)
 {
     net.minecraft.src.ItemStack itemstack = null;
     net.minecraft.src.Slot      slot      = (net.minecraft.src.Slot)inventorySlots[i];
     if (slot != null && slot.Func_27006_b())
     {
         net.minecraft.src.ItemStack itemstack1 = slot.GetStack();
         itemstack = itemstack1.Copy();
         if (i < field_27088_b * 9)
         {
             Func_28126_a(itemstack1, field_27088_b * 9, inventorySlots.Count, true);
         }
         else
         {
             Func_28126_a(itemstack1, 0, field_27088_b * 9, false);
         }
         if (itemstack1.stackSize == 0)
         {
             slot.PutStack(null);
         }
         else
         {
             slot.OnSlotChanged();
         }
     }
     return(itemstack);
 }
示例#2
0
 public virtual net.minecraft.src.ItemStack Func_27086_a(int i)
 {
     net.minecraft.src.Slot slot = (net.minecraft.src.Slot)inventorySlots[i];
     if (slot != null)
     {
         return(slot.GetStack());
     }
     else
     {
         return(null);
     }
 }
示例#3
0
 public virtual net.minecraft.src.Slot Func_20127_a(net.minecraft.src.IInventory iinventory
                                                    , int i)
 {
     for (int j = 0; j < inventorySlots.Count; j++)
     {
         net.minecraft.src.Slot slot = (net.minecraft.src.Slot)inventorySlots[j];
         if (slot.IsHere(iinventory, i))
         {
             return(slot);
         }
     }
     return(null);
 }
 public override net.minecraft.src.ItemStack Func_27086_a(int i)
 {
     net.minecraft.src.ItemStack itemstack = null;
     net.minecraft.src.Slot      slot      = (net.minecraft.src.Slot)inventorySlots[i];
     if (slot != null && slot.Func_27006_b())
     {
         net.minecraft.src.ItemStack itemstack1 = slot.GetStack();
         itemstack = itemstack1.Copy();
         if (i == 2)
         {
             Func_28126_a(itemstack1, 3, 39, true);
         }
         else
         {
             if (i >= 3 && i < 30)
             {
                 Func_28126_a(itemstack1, 30, 39, false);
             }
             else
             {
                 if (i >= 30 && i < 39)
                 {
                     Func_28126_a(itemstack1, 3, 30, false);
                 }
                 else
                 {
                     Func_28126_a(itemstack1, 3, 39, false);
                 }
             }
         }
         if (itemstack1.stackSize == 0)
         {
             slot.PutStack(null);
         }
         else
         {
             slot.OnSlotChanged();
         }
         if (itemstack1.stackSize != itemstack.stackSize)
         {
             slot.OnPickupFromSlot(itemstack1);
         }
         else
         {
             return(null);
         }
     }
     return(itemstack);
 }
示例#5
0
        protected internal virtual void Func_28126_a(net.minecraft.src.ItemStack itemstack
                                                     , int i, int j, bool flag)
        {
            int k = i;

            if (flag)
            {
                k = j - 1;
            }
            if (itemstack.Func_21132_c())
            {
                while (itemstack.stackSize > 0 && (!flag && k < j || flag && k >= i))
                {
                    net.minecraft.src.Slot      slot       = (net.minecraft.src.Slot)inventorySlots[k];
                    net.minecraft.src.ItemStack itemstack1 = slot.GetStack();
                    if (itemstack1 != null && itemstack1.itemID == itemstack.itemID && (!itemstack.GetHasSubtypes
                                                                                            () || itemstack.GetItemDamage() == itemstack1.GetItemDamage()))
                    {
                        int i1 = itemstack1.stackSize + itemstack.stackSize;
                        if (i1 <= itemstack.GetMaxStackSize())
                        {
                            itemstack.stackSize  = 0;
                            itemstack1.stackSize = i1;
                            slot.OnSlotChanged();
                        }
                        else
                        {
                            if (itemstack1.stackSize < itemstack.GetMaxStackSize())
                            {
                                itemstack.stackSize -= itemstack.GetMaxStackSize() - itemstack1.stackSize;
                                itemstack1.stackSize = itemstack.GetMaxStackSize();
                                slot.OnSlotChanged();
                            }
                        }
                    }
                    if (flag)
                    {
                        k--;
                    }
                    else
                    {
                        k++;
                    }
                }
            }
            if (itemstack.stackSize > 0)
            {
                int l;
                if (flag)
                {
                    l = j - 1;
                }
                else
                {
                    l = i;
                }
                do
                {
                    if ((flag || l >= j) && (!flag || l < i))
                    {
                        break;
                    }
                    net.minecraft.src.Slot      slot1      = (net.minecraft.src.Slot)inventorySlots[l];
                    net.minecraft.src.ItemStack itemstack2 = slot1.GetStack();
                    if (itemstack2 == null)
                    {
                        slot1.PutStack(itemstack.Copy());
                        slot1.OnSlotChanged();
                        itemstack.stackSize = 0;
                        break;
                    }
                    if (flag)
                    {
                        l--;
                    }
                    else
                    {
                        l++;
                    }
                }while (true);
            }
        }
示例#6
0
 protected internal virtual void AddSlot(net.minecraft.src.Slot slot)
 {
     slot.id = inventorySlots.Count;
     inventorySlots.Add(slot);
     inventoryItemStacks.Add(null);
 }
示例#7
0
 public virtual net.minecraft.src.ItemStack Func_27085_a(int i, int j, bool flag,
                                                         net.minecraft.src.EntityPlayer entityplayer)
 {
     net.minecraft.src.ItemStack itemstack = null;
     if (j == 0 || j == 1)
     {
         net.minecraft.src.InventoryPlayer inventoryplayer = entityplayer.inventory;
         if (i == -999)
         {
             if (inventoryplayer.GetItemStack() != null && i == -999)
             {
                 if (j == 0)
                 {
                     entityplayer.DropPlayerItem(inventoryplayer.GetItemStack());
                     inventoryplayer.SetItemStack(null);
                 }
                 if (j == 1)
                 {
                     entityplayer.DropPlayerItem(inventoryplayer.GetItemStack().SplitStack(1));
                     if (inventoryplayer.GetItemStack().stackSize == 0)
                     {
                         inventoryplayer.SetItemStack(null);
                     }
                 }
             }
         }
         else
         {
             if (flag)
             {
                 net.minecraft.src.ItemStack itemstack1 = Func_27086_a(i);
                 if (itemstack1 != null)
                 {
                     int k = itemstack1.stackSize;
                     itemstack = itemstack1.Copy();
                     net.minecraft.src.Slot slot1 = (net.minecraft.src.Slot)inventorySlots[i];
                     if (slot1 != null && slot1.GetStack() != null)
                     {
                         int l = slot1.GetStack().stackSize;
                         if (l < k)
                         {
                             Func_27085_a(i, j, flag, entityplayer);
                         }
                     }
                 }
             }
             else
             {
                 net.minecraft.src.Slot slot = (net.minecraft.src.Slot)inventorySlots[i];
                 if (slot != null)
                 {
                     slot.OnSlotChanged();
                     net.minecraft.src.ItemStack itemstack2 = slot.GetStack();
                     net.minecraft.src.ItemStack itemstack3 = inventoryplayer.GetItemStack();
                     if (itemstack2 != null)
                     {
                         itemstack = itemstack2.Copy();
                     }
                     if (itemstack2 == null)
                     {
                         if (itemstack3 != null && slot.IsItemValid(itemstack3))
                         {
                             int i1 = j != 0 ? 1 : itemstack3.stackSize;
                             if (i1 > slot.GetSlotStackLimit())
                             {
                                 i1 = slot.GetSlotStackLimit();
                             }
                             slot.PutStack(itemstack3.SplitStack(i1));
                             if (itemstack3.stackSize == 0)
                             {
                                 inventoryplayer.SetItemStack(null);
                             }
                         }
                     }
                     else
                     {
                         if (itemstack3 == null)
                         {
                             int j1 = j != 0 ? (itemstack2.stackSize + 1) / 2 : itemstack2.stackSize;
                             net.minecraft.src.ItemStack itemstack5 = slot.DecrStackSize(j1);
                             inventoryplayer.SetItemStack(itemstack5);
                             if (itemstack2.stackSize == 0)
                             {
                                 slot.PutStack(null);
                             }
                             slot.OnPickupFromSlot(inventoryplayer.GetItemStack());
                         }
                         else
                         {
                             if (slot.IsItemValid(itemstack3))
                             {
                                 if (itemstack2.itemID != itemstack3.itemID || itemstack2.GetHasSubtypes() && itemstack2
                                     .GetItemDamage() != itemstack3.GetItemDamage())
                                 {
                                     if (itemstack3.stackSize <= slot.GetSlotStackLimit())
                                     {
                                         net.minecraft.src.ItemStack itemstack4 = itemstack2;
                                         slot.PutStack(itemstack3);
                                         inventoryplayer.SetItemStack(itemstack4);
                                     }
                                 }
                                 else
                                 {
                                     int k1 = j != 0 ? 1 : itemstack3.stackSize;
                                     if (k1 > slot.GetSlotStackLimit() - itemstack2.stackSize)
                                     {
                                         k1 = slot.GetSlotStackLimit() - itemstack2.stackSize;
                                     }
                                     if (k1 > itemstack3.GetMaxStackSize() - itemstack2.stackSize)
                                     {
                                         k1 = itemstack3.GetMaxStackSize() - itemstack2.stackSize;
                                     }
                                     itemstack3.SplitStack(k1);
                                     if (itemstack3.stackSize == 0)
                                     {
                                         inventoryplayer.SetItemStack(null);
                                     }
                                     itemstack2.stackSize += k1;
                                 }
                             }
                             else
                             {
                                 if (itemstack2.itemID == itemstack3.itemID && itemstack3.GetMaxStackSize() > 1 &&
                                     (!itemstack2.GetHasSubtypes() || itemstack2.GetItemDamage() == itemstack3.GetItemDamage
                                          ()))
                                 {
                                     int l1 = itemstack2.stackSize;
                                     if (l1 > 0 && l1 + itemstack3.stackSize <= itemstack3.GetMaxStackSize())
                                     {
                                         itemstack3.stackSize += l1;
                                         itemstack2.SplitStack(l1);
                                         if (itemstack2.stackSize == 0)
                                         {
                                             slot.PutStack(null);
                                         }
                                         slot.OnPickupFromSlot(inventoryplayer.GetItemStack());
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return(itemstack);
 }
示例#8
0
        public override void HandlePlace(net.minecraft.src.Packet15Place packet15place)
        {
            net.minecraft.src.WorldServer worldserver = mcServer.GetWorldServer(playerEntity
                                                                                .dimension);
            net.minecraft.src.ItemStack itemstack = playerEntity.inventory.GetCurrentItem();
            bool flag = worldserver.weirdIsOpCache = worldserver.worldProvider.worldType != 0 ||
                                                     mcServer.serverConfigurationManager.IsOp(playerEntity.username);

            if (packet15place.direction == 255)
            {
                if (itemstack == null)
                {
                    return;
                }
                playerEntity.itemInWorldManager.Func_6154_a(playerEntity, worldserver, itemstack);
            }
            else
            {
                int i = packet15place.xPosition;
                int j = packet15place.yPosition;
                int k = packet15place.zPosition;
                int l = packet15place.direction;
                net.minecraft.src.ChunkCoordinates chunkcoordinates = worldserver.GetSpawnPoint();
                int i1 = (int)net.minecraft.src.MathHelper.Abs(i - chunkcoordinates.posX);
                int j1 = (int)net.minecraft.src.MathHelper.Abs(k - chunkcoordinates.posZ);
                if (i1 > j1)
                {
                    j1 = i1;
                }
                if (hasMoved && playerEntity.GetDistanceSq((double)i + 0.5D, (double)j + 0.5D, (double
                                                                                                )k + 0.5D) < 64D && (j1 > 16 || flag))
                {
                    playerEntity.itemInWorldManager.ActiveBlockOrUseItem(playerEntity, worldserver, itemstack
                                                                         , i, j, k, l);
                }
                playerEntity.netServerHandler.SendPacket(new net.minecraft.src.Packet53BlockChange
                                                             (i, j, k, worldserver));
                if (l == 0)
                {
                    j--;
                }
                if (l == 1)
                {
                    j++;
                }
                if (l == 2)
                {
                    k--;
                }
                if (l == 3)
                {
                    k++;
                }
                if (l == 4)
                {
                    i--;
                }
                if (l == 5)
                {
                    i++;
                }
                playerEntity.netServerHandler.SendPacket(new net.minecraft.src.Packet53BlockChange
                                                             (i, j, k, worldserver));
            }
            itemstack = playerEntity.inventory.GetCurrentItem();
            if (itemstack != null && itemstack.stackSize == 0)
            {
                playerEntity.inventory.mainInventory[playerEntity.inventory.currentItem] = null;
            }
            playerEntity.isChangingQuantityOnly = true;
            playerEntity.inventory.mainInventory[playerEntity.inventory.currentItem] = net.minecraft.src.ItemStack
                                                                                       .CloneStack(playerEntity.inventory.mainInventory[playerEntity.inventory.currentItem
                                                                                                   ]);
            net.minecraft.src.Slot slot = playerEntity.currentCraftingInventory.Func_20127_a(
                playerEntity.inventory, playerEntity.inventory.currentItem);
            playerEntity.currentCraftingInventory.UpdateCraftingMatrix();
            playerEntity.isChangingQuantityOnly = false;
            if (!net.minecraft.src.ItemStack.AreItemStacksEqual(playerEntity.inventory.GetCurrentItem
                                                                    (), packet15place.itemStack))
            {
                SendPacket(new net.minecraft.src.Packet103SetSlot(playerEntity.currentCraftingInventory
                                                                  .windowId, slot.id, playerEntity.inventory.GetCurrentItem()));
            }
            worldserver.weirdIsOpCache = false;
        }