TileEntity

Версия Minecraft
1.7.10
212
8
29
Когда беру предмет из контейнера TileEntity, предмет пропадает.
Предмет появляется там таким образом
Java:
        @Override
        public void updateEntity() {
            if(Некий таймер) {
                ...
                     inventory.setInventorySlotContents(0, stack);
            }
        }
В чем может быть проблема?
 

timaxa007

Модератор
5,831
409
672
Много что.
Но первое что на ум идёт, плохо открывающийся Gui с контейнером.
Дальше, плохая регистрация: TileEntity, GuiHandler или т.д.
Если есть свои созданные слоты, то убедись что выполняет всё правильно (и Shift-Click тоже).
Убедись, что лишнего SideOnly нет.
if(Некий таймер) {
...
inventory.setInventorySlotContents(0, stack);
if (!worldObj.isRemote) добавление/изменение, а то ещё создаст дополнительно, на клиентской стороне.
 
212
8
29
(и Shift-Click тоже).
Крашит игру.
открывающийся Gui с контейнером.
Java:
        TileEntity tile = w.getTileEntity(x, y, z);
        if (tile instanceof TileEntityS && !player.capabilities.isCreativeMode) {
            TileEntityS te = (TileEntityS)tile;
            if (te.inventory == null) return true;
            player.openGui(Core.instance, 1, w, x, y, z);
        }
Java:
    @Override
    public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        TileEntity tile = world.getTileEntity(x, y, z);
           switch(ID)
           {
             case 1:
                   if (!(tile instanceof TileEntityS)) return null;
                return new SContainer(player, (TileEntityS)tile);
           
           }
            return null;
    }

    @Override
    @SideOnly(CLIENT)
    public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        TileEntity tile = world.getTileEntity(x, y, z);
           switch(ID)
           {
            case 1:
                   if (!(tile instanceof TileEntityS)) return null;
                return new SGui(player, (TileEntityS)tile);
               
           }
           return null;
    }

плохая регистрация: TileEntity, GuiHandler
Java:
NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());

blockS = new BlockS();
GameRegistry.registerBlock(blockS, "blockS");
 GameRegistry.registerTileEntity(TileEntityS.class, "TileEntityS");

Java:
     public SteelCabinetContainer(EntityPlayer player, TileEntitySt tile)
    {
            this.player = player;
            this.playerInventory = player.inventory;
            this.tile = tile;
            if (tile.inventory == null) return;
            tile.inventory.openInventory();

            addSlots();
        }
Java:
    public SGui(EntityPlayer player, TileEntityS tile) {
        super(new SContainer(player, tile));
        if (tile.inventory == null) return;
    }
 
7,099
324
1,510
А точнее transferStackInSlot
 
Сверху