Помогите npe в скорбордах

Вот создаешь такой класс, чтоб по 10 раз не копировать одно и тоже на каждый борд.
Код:
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);
    }
}
Ну и где надо создаешь нужный борд Board board = new Board("Имя борда");
Потом работаешь с ним используя гетеры сетеры.
Ты думаешь я это потом не буду делать? Я это в функции закину
 
Чего? Ничего не понял. Дай плиз код, а то не понимаю почему евент другой
Я тебе дал ивент смены текущего предмета в руке игрока.
PHP:
    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
Я тебе ответил на твой вопрос. Если ты его неправильно сформулировал - это только твои проблемы.
если игрок взял меч показать скорборд
 
А отвечать ты будешь?
 
ТО ЕСТЬ Я СУДА БУДУ ТЕБЕ ВСЕЕЕ ПРЕДМЕТЫ БАКИТА БЕЗ КИРОК КИДАТЬ
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_SWORD,
Material.STONE_SWORD,
Material.GOLDEN_SWORD,
Material.IRON_SWORD,
Material.WOODEN_SWORD,
Material.NETHERITE_SWORD
И ЕЩЁ ОЧЕНЬ МНОГО ПРЕДМЕТОВ
};
Совсем глупый? Кинь сюда все нужные тебе кирки и поменяй метод isSword + условие в onItemHeld.
 
Последнее редактирование:
Раз уж ты сам догадаться не можешь, держи
PHP:
    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;
    }
 
Назад
Верх