{"id":16377170,"url":"https://github.com/archy-x/slate","last_synced_at":"2025-12-30T16:22:47.102Z","repository":{"id":39615795,"uuid":"387361084","full_name":"Archy-X/Slate","owner":"Archy-X","description":"A configurable and concise inventory GUI framework for Bukkit.","archived":false,"fork":false,"pushed_at":"2024-05-23T01:42:17.000Z","size":765,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-23T01:47:51.281Z","etag":null,"topics":["bukkit","gui","inventory","minecraft"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Archy-X.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}},"created_at":"2021-07-19T06:25:24.000Z","updated_at":"2024-05-23T01:42:20.000Z","dependencies_parsed_at":"2022-08-25T00:51:14.300Z","dependency_job_id":"35306b22-c435-4b81-aaf5-e781d98f95c6","html_url":"https://github.com/Archy-X/Slate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archy-X%2FSlate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archy-X%2FSlate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archy-X%2FSlate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archy-X%2FSlate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Archy-X","download_url":"https://codeload.github.com/Archy-X/Slate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245052635,"owners_count":20553162,"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","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":["bukkit","gui","inventory","minecraft"],"created_at":"2024-10-11T03:42:31.791Z","updated_at":"2025-12-30T16:22:47.096Z","avatar_url":"https://github.com/Archy-X.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slate\n\nA configurable and concise inventory GUI framework for Bukkit.\n\n[![Maven Central Version](https://img.shields.io/maven-central/v/dev.aurelium/slate?style=flat-square)](https://central.sonatype.com/artifact/dev.aurelium/slate)\n\n## Overview\n\nSlate is a comprehensive GUI menu framework that uses a front-end YAML configuration file backed by code to define functionality.\n\nThe API is designed around:\n- Separation of appearance and functionality\n- Full configurability on the individual servers your plugin runs on\n- Rapid building and iteration to save development time\n- Writing the least amount of code needed to implement functionality\n## Features\n\n### Configuration Language\n\nThese features are natively supported through Slate's YAML-based configuration language:\n- Full item meta support\n- MiniMessage formatting\n- PlaceholderAPI support\n- Click actions to execute commands\n- Customizing the title and size of the menu\n- Full protection of items so they cannot be taken out of menus\n\n### API Features\n\nThe API is designed to be declarative and hierarchical. Code is structured using lambdas and builders to match the layout of the configuration file. API features include:\n\n- Running code when an item is clicked, including for specific mouse buttons\n- Placeholder system for inserting player-dependent data into menus at runtime\n- Page system\n- Templates for defining multiple instances of a similar item\n- Components for reusing pieces of lore across items\n- Custom configuration options with automatic updating for user configs\n\n## Documentation\n\n[Documentation can be found on the wiki](https://wiki.aurelium.dev/slate) (under construction).\n\n## Compatibility\n\n**Slate requires at least Java 17**, and has been tested on Minecraft 1.18 - 1.20. However, older server versions may work if they run Java 17 and 1.14.4 at minimum.\n\n## Installation\n\nRelease versions of the API are published to the Maven central repository.\n\n### Gradle\n\n**Kotlin DSL:**\n```Gradle Kotlin DSL\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation(\"dev.aurelium:slate:1.1.5\")\n}\n```\n\n**Groovy DSL:**\n```gradle\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation 'dev.aurelium:slate:1.1.5'\n}\n```\n\n### Maven\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003edev.aurelium\u003c/groupId\u003e\n    \u003cartifactId\u003eslate\u003c/artifactId\u003e\n    \u003cversion\u003e1.1.5\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nYou should use the Gradle [Shadow](https://github.com/johnrengelman/shadow) or Maven [Shade](https://maven.apache.org/plugins/maven-shade-plugin/usage.html) plugin to include Slate in your plugin jar. It is highly recommended to relocate the API packages to avoid conflict with plugins that may use conflicting Slate versions.\n\n\u003e Slate bundles the [Adventure](https://github.com/KyoriPowered/adventure) and MiniMessage APIs as dependencies. If you are only developing for Paper, which includes Adventure in the server, you can exclude the `adventure-platform-bukkit` and `adventure-text-minimessage` modules in the `net.kyori` package to reduce plugin jar size.\n\n## Getting Started\n\nThis basic example shows a menu with a single item that closes the menu when clicked.\n\nCreate a YAML configuration file for your menu in a sub-folder in your project resources folder, such as `menus/my_menu.yml`.\n\n```yaml\nsize: 3\nitems:\n  close:\n    material: barrier\n    pos: 0,0\n    display_name: \u003cred\u003eClose\n```\n\nCreate a Slate instance by passing in your Plugin instance and options. This example assumes you put this in the `onEnable` of your main class. After getting the instance, use it to build the functionality, generate the config file if missing, and load menus.\n\n```java\nSlate slate = new Slate(this, SlateOptions.builder()\n        .mainDirectory(new File(this.getDataFolder(), \"menus\"))\n        .build());\n\nslate.buildMenu(\"my_menu\", menu -\u003e {\n    menu.item(\"close\", item -\u003e {\n        item.onClick(c -\u003e c.player().closeInventory());\n    });\n});\n\nslate.generateFiles();\nslate.loadMenus();\n```\n\nFinally, show the menu to a player where you need to, like in a command:\n\n```java\nslate.openMenu(player, \"my_menu\");\n```\n\nIt's recommended to store the Slate instance as a field in your main class so you can access it elsewhere in your plugin through dependency injection. For example:\n\n```java\npublic class MyPlugin extends JavaPlugin {\n\n    private Slate slate;\n\n    @Override\n    public void onEnable() {\n        slate = ... // Instantiation shown above\n    }\n\n    public Slate getSlate() {\n        return slate;\n    }\n}\n```\n\n### Other Examples\n\nComplex examples can be seen in [AuraSkills](https://github.com/Archy-X/AuraSkills), a popular plugin that uses Slate for all menus.\n- [Skills menu](https://github.com/Archy-X/AuraSkills/blob/master/bukkit/src/main/java/dev/aurelium/auraskills/bukkit/menus/SkillsMenu.java) and its [config file](https://github.com/Archy-X/AuraSkills/blob/master/bukkit/src/main/resources/menus/skills.yml)\n- [Stats menu](https://github.com/Archy-X/AuraSkills/blob/master/bukkit/src/main/java/dev/aurelium/auraskills/bukkit/menus/StatsMenu.java) and its [config file](https://github.com/Archy-X/AuraSkills/blob/master/bukkit/src/main/resources/menus/stats.yml)\n- [Where menus are registered](https://github.com/Archy-X/AuraSkills/blob/master/bukkit/src/main/java/dev/aurelium/auraskills/bukkit/menus/MenuRegistrar.java)\n- [SlateOptions used and custom meta parsers](https://github.com/Archy-X/AuraSkills/blob/master/bukkit/src/main/java/dev/aurelium/auraskills/bukkit/menus/MenuOptions.java)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchy-x%2Fslate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchy-x%2Fslate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchy-x%2Fslate/lists"}