Você pode colocar dados sobre o comando em YAML como bloco, nome lore etc
getConfig().getConfigurationSection("commands").getValues(false)
Comece quantos "comandos estão na configuração" (comprimento do jogo) e então calcule, quantos 9 entalhes você necessita
caso que o comando 10 você necessite o entalhe 2x 9 (1 fileira no inventário)
Crie então o inventário e adicione o contest para todos os comandos
public static Inventory myInventory = Bukkit.createInventory(null, rows, "MyUltraCommands");
E, em seguida, colocar comandos no arraylist que você vai loop
int actual = 0;
for(String comm : commands) {
ItemStack is = new ItemStack(config.get("commands."+comm+".id"),1,0);
//wathever stuff with is
myInventory.setItem(actual, is);
actual++;
}
E, em seguida, se você tiver comandos no registrador de registro de matriz para InventoryClickEvent e você pode verificar o estoque e item e, em seguida, executar o que quiser
Bukkit().getServer().dispatchCommand(player, cmd);