kangarko / Foundation

Foundation™ helps you create highly customized Minecraft plugins (based on Spigot/Paper API) that support multiple MC versions.
https://mineacademy.org
305 stars 63 forks source link

1.20.1: Getting an ArrayIndexOutOfBoundsException without any stack-trace with cause of "null"? No logs also in the error.log file #262

Closed deilyyxx closed 7 months ago

deilyyxx commented 7 months ago
public class SelectHunters extends MenuPagged<Player> {
    private Player[] targets;

    public SelectHunters(String title, Iterable<Player> targets, Player viewer) {
        super(targets);
        setViewer(viewer);
        setSlotNumbersVisible();
        setSize(9*6);
        setSound(new SimpleSound(Sound.UI_BUTTON_CLICK, 1, 1));
        setTitle("&6Choose target");
        ItemStack deco = ItemCreator.of(CompMaterial.GRAY_STAINED_GLASS_PANE, "").make();
        for (int i = 0; i < 8; i++) {
            setItem(i, deco);
        }
        setItem(9, deco);
        setItem(17, deco);
        setItem(18, deco);
        setItem(26, deco);
        setItem(27, deco);
        setItem(35, deco);
        setItem(36, deco);
        setItem(44, deco);
        setItem(45, deco);
        setItem(53, deco);
        setItem(54, deco);
        MineAcademyTestPlugin.getInstance().getLogger().warning("Tried to register a menu.");
    }

    public void show(Player player) {
        player.closeInventory();
        this.displayTo(player);
        player.sendMessage("We tried to display the menu to you");
    }

    @Override
    protected ItemStack convertToItemStack(Player player) {
        ItemStack stack = new ItemStack(Material.PLAYER_HEAD);
        if (stack.getItemMeta() == null) return NO_ITEM;

        return ItemCreator.of(CompMaterial.PLAYER_HEAD).skullOwner(player.getPlayerProfile().getTextures().getSkin() != null
                ? player.getPlayerProfile().getTextures().getSkin().toString() : "https://textures.minecraft.net/texture/2705fd94a0c431927fb4e639b0fcfb49717e412285a02b439e0112da22b2e2ec").name("&a" + player.getName()).clearLore().lore("", "&7Simply click on the head", "&7to select the target player.").make();
    }

    @Override
    protected void onPageClick(Player player, Player playerClass, ClickType click) {
        player.closeInventory();
        player.sendMessage(Formatting.doubleFormat("<gradient:#ff0000:red>Successfully set the target to <bold>'" + playerClass.getName() + "'<reset><red>!"));
        new SimpleSound(Sound.ENTITY_PLAYER_LEVELUP, 1, 1f).play(player);
    }
}

This is happening when I try to set items in the menu in my class constructor and yes I have a viewer set. My code is specified above!

kangarko commented 7 months ago

Please post your null pointer exception.