{"id":24306768,"url":"https://github.com/efekos/managedmenus","last_synced_at":"2025-10-12T12:02:50.350Z","repository":{"id":270526879,"uuid":"910569219","full_name":"efekos/ManagedMenus","owner":"efekos","description":"Lightweight custom GUI library for Spigot \u0026 Paper.","archived":false,"fork":false,"pushed_at":"2025-02-18T14:16:22.000Z","size":66,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-10T11:13:21.751Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/efekos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-31T17:00:01.000Z","updated_at":"2025-01-28T13:48:11.000Z","dependencies_parsed_at":"2025-01-28T14:31:03.192Z","dependency_job_id":"f88eb6a9-ae4a-4b24-b11c-7ce85f32f5ba","html_url":"https://github.com/efekos/ManagedMenus","commit_stats":null,"previous_names":["efekos/managedmenus"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/efekos/ManagedMenus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efekos%2FManagedMenus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efekos%2FManagedMenus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efekos%2FManagedMenus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efekos%2FManagedMenus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/efekos","download_url":"https://codeload.github.com/efekos/ManagedMenus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efekos%2FManagedMenus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011230,"owners_count":26084923,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-17T03:48:31.588Z","updated_at":"2025-10-12T12:02:50.312Z","avatar_url":"https://github.com/efekos.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](./assets/ManagedMenus.png)\n# ManagedMenus\n\n![](https://badgen.net/github/license/efekos/ManagedMenus)\n![](https://badgen.net/github/stars/efekos/ManagedMenus)\n![](https://badgen.net/github/release/efekos/ManagedMenus)\n![](https://badgen.net/github/releases/efekos/ManagedMenus)\n![](https://badgen.net/github/merged-prs/efekos/ManagedMenus)\n![](https://badgen.net/github/issues/efekos/ManagedMenus)\n\n\u003c!-- TOC --\u003e\n* [ManagedMenus](#managedmenus)\n* [Installation](#installation)\n  * [Maven](#maven)\n  * [Gradle](#gradle)\n* [Usage](#usage)\n* [License](#license)\n\u003c!-- TOC --\u003e\n\nManagedMenus is a lightweight library used to create and handle custom GUIs easily in Spigot and Paper plugins.\n\n# Installation\n\n## Maven\n\n1. Add this repository:\n\n````xml\n\u003crepository\u003e\n    \u003cid\u003eefekosdev\u003c/id\u003e\n    \u003curl\u003ehttps://efekos.dev/maven\u003c/url\u003e\n\u003c/repository\u003e\n````\n\n2. Add this dependency. Use the latest release as the version. Replace `mm-paper` with `mm-spigot` if you use Spigot.\n\n````xml\n\u003cdependency\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003edev.efekos.mm\u003c/groupId\u003e\n        \u003cartifactId\u003emm-paper\u003c/artifactId\u003e\n        \u003cversion\u003e1.0\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependency\u003e\n````\n\n## Gradle\n\n1. Add this repository:\n\n```gradle\nmaven { url = 'https://efekos.dev/maven' }\n```\n\n2. Add this dependency. Use the latest release as the version. Replace `mm-paper` with `mm-spigot` if you use Spigot.\n\n```gralde\nimplementation 'dev.efekos.mm:mm-paper:1.0'\n```\n\n# Usage\n\nHere is a quick example to get started.\n\n````java\nPlayer player;\nJavaPlugin instance; // Your plugin instance is required when creating a menu\nAdvancement diamonds = Bukkit.getAdvancement(new NamespacedKey(\"minecraft\",\"story/mine_diamond\"));\nAdvancement enchanter = Bukkit.getAdvancement(new NamespacedKey(\"minecraft\",\"story/enchant_item\"));\nMenu menu = new Menu(Component.text(\"Vault\"), instance, 6 /*rows, so a large chest*/)\n        .addItem(MenuItem.background(BackgroundColor.BLACK))\n        .addItem(MenuItem.skull(0,player))\n        .addItem(MenuItem.button(new ItemStack(Material.IRON_AXE,1))\n                .slot(1) // you don't have to define slots like this every time. There are many other static methods in MenuItem.\n                .onClick((slot, clickedItem, clicker, inventory) -\u003e clicker.damage(20))\n        )\n        .addItem(MenuItem.dynamicStack(new ItemStack(Material.IRON_PICKAXE,1)) // The difference between normal buttons/stacks and dynamic buttons/stacks\n                .slot(2)                                                       // is that dynamic stacks refresh their data in every tick\n                .dynamicMaterial((inventory, p) -\u003e p.getAdvancementProgress(diamonds).isDone()?Material.DIAMOND_PICKAXE:Material.IRON_PICKAXE)\n                .dynamicGlint((inventory, p) -\u003e p.getAdvancementProgress(enchanter).isDone()) // Uses mending to add glint and hides enchantments\n                .dynamicName((inventory, p) -\u003e Component.text(p.getName()).append(Component.text(\"'s pickaxe\")))\n                .refreshRate(2) // You can adjust the refresh rate if refreshing every tick is too much for the data used in the item\n        )\n        .addItem(MenuItem.square(BackgroundColor.BLUE.item())\n                .position(1,1)\n                .size(7,4)\n        )\n        .addItem(MenuItem.clickListener(9,10,11,12,13,14,15,16) // does not add any item, only to listen to clicks in specific slots.\n                .onClick((slot, clickedItem, clicker, inventory) -\u003e clicker.sendMessage(Component.text(\"You clicked the second row!\")))\n        )\n        .addItem(MenuItem.ticker((inventory, player1) -\u003e System.out.println(\"debug log: \"+player1.getName()+\" : \"+inventory.getSize()))) // just a ticker, useful for counters.\n        .onOpen(inventoryOpenEvent -\u003e inventoryOpenEvent.getPlayer().sendMessage(Component.text(\"You opened the inventory!\")))\n        .onClose(inventoryCloseEvent -\u003e inventoryCloseEvent.getPlayer().sendMessage(Component.text(\"You closed the inventory!\")))\n        ;\n        menu.open(player);\n````\n\n# License\n\nThis library is licensed with the [MIT License](./LICENSE.md).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefekos%2Fmanagedmenus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fefekos%2Fmanagedmenus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefekos%2Fmanagedmenus/lists"}