# DesertWell [![Discord](https://img.shields.io/discord/818135932103557162?color=7289da&logo=discord)](https://discord.gg/tVYhJfyDWG) [![](https://jitpack.io/v/net.william278/DesertWell.svg)](https://jitpack.io/#net.william278/DesertWell) DesertWell is a simple library providing various utilities to aid Minecraft plugin development. Requires Java 11+. ![Example of an about menu](images/about-menu-screenshot.png) ## Features ### About menus `AboutMenu.class` allows for the generation of plugin about menus, as seen above. To create an about menu, use `AboutMenu#create(title)` with the resource name, then use the various builder methods to build out the menu. ```java public class ExamplePlugin extends JavaPlugin { // Displays the about menu to the player and logs it to console public void showAboutMenu(Player player) { final AboutMenu menu = AboutMenu.create("Example") .withDescription("A powerful, intuitive and flexible teleportation suite") .withVersion(Version.fromString(plugin.getDescription().getVersion())) .addAttribution("Author", AboutMenu.Credit.of("William278").withDescription("Click to visit website").withUrl("https://william278.net")) .addAttribution("Contributors", AboutMenu.Credit.of("Contributor 1").withDescription("Code, refactoring") .addAttribution("Translators", AboutMenu.Credit.of("Translator 1").withDescription("Spanish (es-es)"), AboutMenu.Credit.of("Translator 1").withDescription("Italian (it-it)") .addButtons( AboutMenu.Link.of("https://william278.net/").withText("Wesbite").withIcon("⛏"), AboutMenu.Link.of("https://discord.gg/tVYhJfyDWG").withText("Discord").withIcon("⭐").withColor("#6773f5")))); // Display the menu to the player player.spigot().sendMessage(menu.toMineDown().toComponents()); // Use #toString to get a console-friendly version of the menu getLogger().info(AboutMenu.toString()); } } ``` ### Version `Version.class` provides a simple way to compare semantic plugin and Minecraft versions. `VersionChecker.class` provides a utility for querying Spigot resources for the latest version of a plugin and comparing with the current version in order to check for updates. ```java public class ExamplePlugin extends JavaPlugin { // Checks for updates and logs to console public void checkForUpdates() { final int spigotResourceId = 97144; final UpdateChecker updateChecker = UpdateChecker.create(Version.fromString("1.0.0"), spigotResourceId); updateChecker.isUpToDate().thenAccept(upToDate -> { if (upToDate) { getLogger().info("Running the latest version (" + updateChecker.getCurrentVersion() + ")."); } else { getLogger().info("An update is available! Download from: https://www.spigotmc.org/resources/" + spigotResourceId); } }); } } ``` ## Installation DesertWell is available on JitPack. You can browse the Javadocs [here](https://javadoc.jitpack.io/net/william278/DesertWell/latest/javadoc/). Note that your plugin will also need to shade (or shade a library that includes) [MineDown](https://github.com/Phoenix616/MineDown). ### Maven To include the library with Maven, in your `pom.xml` file, first add the JitPack repository: ```xml jitpack.io https://jitpack.io ``` Then, add the dependency in your `` section. Remember to replace `Tag` with the current DesertWell version. ```xml net.william278 DesertWell Tag compile ``` ### Gradle & others JitPack has a [handy guide](https://jitpack.io/#net.william278/DesertWell/#How_to) for how to use the dependency with other build platforms. ## License DesertWell is licensed under Apache-2.0.