Удаление предметов в плагине minecraft spigot

#instance #bukkit

Вопрос:

Поэтому я пытаюсь приготовить тушеное мясо с грибами, которое, когда вы его пьете, возвращает вам 6 продуктов, но когда я попытался удалить тушеное remove(Material.MUSHROOM_STEW); мясо, я понял, что оно может удалить все тушеное мясо, которое у вас есть в инвентаре, когда вы его пьете. Могу я узнать, как удалить 1 предмет только тогда, когда вы его пьете? Для кода просто обозначьте счетчик продуктов питания, идущий вверх, как // do stuff

Ответ №1:

вы можете сделать что-то подобное. На PlayerItemConsumeEvent мы проверяем, какой предмет съел игрок. Затем, если это тушеное мясо, мы отменяем событие приема пищи, затем даем игроку 6 дополнительных уровней еды и удаляем предмет из их инвентаря.

 @EventHandler
public void PlayerItemConsumeEvent(PlayerItemConsumeEvent e) {
    if(e.getItem().equals(new ItemStack(Material.MUSHROOM_STEW))) {
        // player ate stew
        Player player = e.getPlayer();
        e.setCancelled(true);
        player.setFoodLevel(player.getFoodLevel()   6);
        player.getInventory().getItemInMainHand().setAmount(player.getInventory().getItemInMainHand().getAmount() - 1);
        return;
    }
    // player ate something else than stew
}
 

Комментарии:

1. Привет, я вижу, ты новый участник. Я бы вернулся домой, попробовал это и вернулся к тебе, я сейчас в школе… Я думаю, что пока это имеет смысл

2. э-э-э, когда уровень еды, кажется, не повышается на то, на что я его установил, потому что я установил его на 10

3. Есть двадцать уровней еды, если вы увеличите ее на десять, это добавит пять голодных батончиков.

4. Вы всегда должны проверять, чтобы предмет в руке был ненулевым. Иногда это будет так, даже если предполагается, что у игрока в руке суп. Кроме того, по умолчанию имеется 20 слотов для продуктов питания ( 6 слотов для продуктов питания = 12 половинок продуктов питания). Возможно, вы также захотите ограничить уровень питания с помощью Math.max(player.getFoodLevel() 12, 20);

5. БорисНЛ я знаю, но он все равно увеличивается всего на 6, я хочу приготовить суп на заказ, чтобы, когда вы его пьете, он давал вам 10 очков голода