Настройка TileEntity

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.7.10
90
1
Здравствуйте. Недавно начал разбираться с созданием GUI. По образцу из инет сделал простенький гуй с одним слотом. Вроде все работает, только есть несколько проблем:
1) При попытке положить что либо в слот левой кнопкой мыши то, что ты кладешь исчезает. Да и вообще при нажатии на слот ЛКМ его содержимое исчезает.
2) Если класть предметы правой кнопкой, то их количество удваивается в слоте. Хотя, когда переносишь из этого слота обратно в инвентарь, то количество становится нормальным. Подскажите, где косяки. Код TileEntity частично содрал с кода у печки.
public class BlockTestTile extends TileEntity implements ISidedInventory,IPipeConnection{
   private ItemStack[] testItemStack=new ItemStack[1];
   @Override
   public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
       return new int[0];
   }

   @Override
   public boolean canInsertItem(int p_102007_1_, ItemStack p_102007_2_, int p_102007_3_) {
       return this.isItemValidForSlot(p_102007_1_, p_102007_2_);
   }

   @Override
   public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_, int p_102008_3_) {
       return false;
   }

   @Override
   public int getSizeInventory() {
       return testItemStack.length;
   }

   @Override
   public ItemStack getStackInSlot(int index) {
       if (index < 0 || index >= this.getSizeInventory())
           return null;
       return this.testItemStack[index];
   }

   @Override
   public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) {
       if (this.testItemStack[p_70298_1_] != null)
       {
           ItemStack itemstack;

           if (this.testItemStack[p_70298_1_].stackSize <= p_70298_2_)
           {
               itemstack = this.testItemStack[p_70298_1_];
               this.testItemStack[p_70298_1_] = null;
               return itemstack;
           }
           else
           {
               itemstack = this.testItemStack[p_70298_1_].splitStack(p_70298_2_);

               if (this.testItemStack[p_70298_1_].stackSize == 0)
               {
                   this.testItemStack[p_70298_1_] = null;
               }

               return itemstack;
           }
       }
       else
       {
           return null;
       }
   }

   @Override
   public ItemStack getStackInSlotOnClosing(int p_70304_1_) {

       if (this.testItemStack[0] != null)
       {
           ItemStack itemstack = this.testItemStack[0];
           this.testItemStack[0] = null;
           return itemstack;
       }
       else
       {
           return null;
       }
   }

   @Override
   public void setInventorySlotContents(int index, ItemStack stack) {

       if (index < 0 || index >= this.getSizeInventory())
           return;

       if (stack != null && stack.stackSize > this.getInventoryStackLimit())
           stack.stackSize = this.getInventoryStackLimit();

       if (stack != null && stack.stackSize == 0)
           stack = null;

       this.testItemStack[index] = stack;
       this.markDirty();
       //System.out.println("stack: "+Integer.toString(stack.stackSize));
       //System.out.println("index: "+Integer.toString(index));
   }

   @Override
   public String getInventoryName() {
       return "TestInventory";
   }

   @Override
   public boolean hasCustomInventoryName() {
       return true;
   }

   @Override
   public int getInventoryStackLimit() {
       return 64;
   }

   @Override
   public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
       return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : p_70300_1_.getDistanceSq((double)this.xCoord + 0.5D,
               (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
   }

   @Override
   public void openInventory() {}

   @Override
   public void closeInventory() {}

   @Override
   public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
       return true;
   }

   @Override
   public ConnectOverride overridePipeConnection(IPipeTile.PipeType pipeType, ForgeDirection forgeDirection) {
       if(pipeType!= IPipeTile.PipeType.ITEM) {
           return ConnectOverride.CONNECT;
       }else {
           return ConnectOverride.DISCONNECT;
       }
   }
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху