как изменить предмет в инвентаре?

Версия Minecraft
1.7.10

jopi

Попрошайка
1,421
30
260
Какой командой изменить?
player.setItemOnUse не работает
В world. ничего интересного
 
Решение
Можно попробовать так:
Java:
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Предмет));
Java:
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9){
     
        if(!world.isRemote){

            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(Game.OilBlock)){
                player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Game.OilBlockHot));
                return true;
            }
        }
        return false;
    }

jopi

Попрошайка
1,421
30
260
То-есть изменить? Заменить на другой или что ты хочешь с ним сделать?
Заменить на другой предмет(блок)
Мне еклипс предлагает мой блок3 превратить в INT вместо BLOCK в паблик блок. Ну в маин классе.
 

jopi

Попрошайка
1,421
30
260
А какой код для замены у тебя?
Java:
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9){
      
        if(!world.isRemote){

            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(Game.OilBlock)){
                player.setItemInUse(player.getCurrentEquippedItem(), Game.OilBlockHot);
                return true;
            }
        }
        return false;
    }
Почёркивает setItemInUse
 

jopi

Попрошайка
1,421
30
260
А какой код для замены у тебя?
я тут немного натупил, написал другой код но он только для итемов а мне нужно блоки сменить, что делать :?

Java:
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9){
      
        if(!world.isRemote){

            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(Game.OilBL)){
                player.inventory.consumeInventoryItem(Game.OilBL);
                player.inventory.setItemStack(Game.OilBlockHot);
                return true;
            }
        }
        return false;
    }
 

Eifel

Модератор
1,624
79
609
Можно попробовать так:
Java:
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Предмет));
Java:
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9){
     
        if(!world.isRemote){

            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(Game.OilBlock)){
                player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Game.OilBlockHot));
                return true;
            }
        }
        return false;
    }
 

jopi

Попрошайка
1,421
30
260
Потому что этот метод не заменяет предмет.
Можно попробовать так:
Java:
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Предмет));
Java:
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9){
     
        if(!world.isRemote){

            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(Game.OilBlock)){
                player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Game.OilBlockHot));
                return true;
            }
        }
        return false;
    }
Хмм...
Сейчас попробую.
До твоего ответа тест делаю

Java:
                player.inventory.consumeInventoryItem(Game.OilBL);
                player.inventory.setItemStack(new ItemStack(Game.OilBlockHot));
 

jopi

Попрошайка
1,421
30
260
Можно попробовать так:
Java:
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Предмет));
Java:
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9){
    
        if(!world.isRemote){

            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(Game.OilBlock)){
                player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Game.OilBlockHot));
                return true;
            }
        }
        return false;
    }
У меня пропадает итем но не появляется блок :/
Ща твой затестить попробую.
 

jopi

Попрошайка
1,421
30
260
Можно попробовать так:
Java:
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Предмет));
Java:
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9){
    
        if(!world.isRemote){

            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(Game.OilBlock)){
                player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Game.OilBlockHot));
                return true;
            }
        }
        return false;
    }
спасибо, не знаю почему мои 2 строки не хотят пахать...
 
Сверху