- Баллы
- 76
- Имя в Minecraft
- LOVEC3327
PlayerItemHeldEventМне нужно при ломании блока киркой, чтобы появлялся скорборд, если игрок взял меч показать скорборд
p.setScoreboard(SBManager.sb);
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
PlayerItemHeldEventМне нужно при ломании блока киркой, чтобы появлялся скорборд, если игрок взял меч показать скорборд
p.setScoreboard(SBManager.sb);
Чего? Ничего не понял. Дай плиз код, а то не понимаю почему евент другой
Ты думаешь я это потом не буду делать? Я это в функции закинуВот создаешь такой класс, чтоб по 10 раз не копировать одно и тоже на каждый борд.
Ну и где надо создаешь нужный борд Board board = new Board("Имя борда");Код:public class Board { private Scoreboard board; private Objective objective; public Board(String name) { this.board = Bukkit.getScoreboardManager().getNewScoreboard(); this.objective = board.registerNewObjective(name, name, name); this.objective.setDisplaySlot(DisplaySlot.SIDEBAR); } public Scoreboard getScoreboard() { return this.board; } public int getScore(String name) { Score score = this.objective.getScore(name); return score.getScore(); } public void setScore(String name, int index) { Score score = this.objective.getScore(name); score.setScore(index); } public void resetScores(String name) { this.board.resetScores(name); } }
Потом работаешь с ним используя гетеры сетеры.
Я тебе дал ивент смены текущего предмета в руке игрока.Чего? Ничего не понял. Дай плиз код, а то не понимаю почему евент другой
private final Material[] TYPES = new Material[]{
Material.DIAMOND_SWORD,
Material.STONE_SWORD,
Material.GOLDEN_SWORD,
Material.IRON_SWORD,
Material.WOODEN_SWORD,
Material.NETHERITE_SWORD
};
@EventHandler
void onItemHeld(PlayerItemHeldEvent e) {
if (!isSword(e.getPlayer().getInventory().getItem(e.getNewSlot())))
return;
e.getPlayer().sendMessage("Вы взяли меч!");
//TODO
}
private boolean isSword(ItemStack stack) {
if (stack == null)
return false;
for (Material material : TYPES) {
if (stack.getType() == material)
return true;
}
return false;
}
Я тебе ответил на твой вопрос. Если ты его неправильно сформулировал - это только твои проблемы.Ты де#@#
Мне нужно если игрок взял не WOOD_PICKAXE, DIAMON_PICKAXE то ему высвечивается p.setScoreboard
если игрок взял меч показать скорборд
Так переделай под себя, в чем проблема?А отвечать ты будешь?
Совсем глупый? Кинь сюда все нужные тебе кирки и поменяй метод isSword + условие в onItemHeld.ТО ЕСТЬ Я СУДА БУДУ ТЕБЕ ВСЕЕЕ ПРЕДМЕТЫ БАКИТА БЕЗ КИРОК КИДАТЬ
private final Material[] TYPES = new Material[]{
Material.DIAMOND_SWORD,
Material.STONE_SWORD,
Material.GOLDEN_SWORD,
Material.IRON_SWORD,
Material.WOODEN_SWORD,
Material.NETHERITE_SWORD
И ЕЩЁ ОЧЕНЬ МНОГО ПРЕДМЕТОВ
};
private final Material[] TYPES = new Material[]{
Material.DIAMOND_PICKAXE,
Material.IRON_PICKAXE,
Material.STONE_PICKAXE,
Material.GOLDEN_PICKAXE,
Material.WOODEN_PICKAXE,
Material.NETHERITE_PICKAXE
};
@EventHandler
void onItemHeld(PlayerItemHeldEvent e) {
if (isPickaxe(e.getPlayer().getInventory().getItem(e.getNewSlot())))
return;
e.getPlayer().sendMessage("Вы взяли НЕ кирку!");
//TODO
}
private boolean isPickaxe(ItemStack stack) {
if (stack == null)
return false;
for (Material material : TYPES) {
if (stack.getType() == material)
return true;
}
return false;
}