#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 очков голода