ChestSort/HOW_TO_USE_API.md

112 lines
3.4 KiB
Markdown
Raw Normal View History

2018-11-07 23:59:42 +01:00
# API Usage
2018-11-08 00:33:30 +01:00
2020-06-10 18:43:12 +02:00
If you want to use ChestSort's advanced sorting features for your own plugin, or if ChestSort causes trouble with your own plugin, you can use the ChestSort API. It provides methods to sort any given inventory, following the rules you have specified in your ChestSort's plugin.yml and the corresponding category files, and a cancellable ChestSortEvent event that is fired whenever ChestSort is about to sort an inventory.
2018-11-08 00:33:30 +01:00
2020-06-10 18:21:41 +02:00
## Maven repository
You can use maven to add ChestSort as a dependency to your Spigot-/Bukkit-Plugin:
2018-11-07 23:59:42 +01:00
2020-07-12 02:51:51 +02:00
```xml
2020-06-10 18:21:41 +02:00
<repositories>
<repository>
<id>jeff-media-repo</id>
<url>https://repo.jeff-media.de/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>de.jeff_media</groupId>
2020-07-12 02:51:51 +02:00
<artifactId>ChestSortAPI</artifactId>
<version>8.13.1</version> <!-- Check www.chestsort.de for latest version -->
<scope>compile</scope>
2020-06-10 18:21:41 +02:00
</dependency>
</dependencies>
```
2020-07-12 02:51:51 +02:00
If you use the `Sortable`class or the `ISortable` interface, you must also shade the ChestSortAPI into your plugin:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
```
2020-06-10 18:21:41 +02:00
## Accessing the API
2020-07-12 02:51:51 +02:00
Then you can access the API via the plugin manager:
2018-11-07 23:59:42 +01:00
```
2020-07-12 03:02:07 +02:00
ChestSort chestSort = (ChestSort) getServer().getPluginManager().getPlugin("ChestSort");
if(chestSort==null) {
2020-06-10 18:21:41 +02:00
getLogger().severe("Error: ChestSort is not installed.");
return;
2018-11-08 00:00:24 +01:00
}
2020-06-10 18:21:41 +02:00
ChestSortAPI chestSortAPI = chestSort.getAPI();
2018-11-07 23:59:42 +01:00
```
2020-06-10 18:21:41 +02:00
### Sorting inventories
2018-11-07 23:59:42 +01:00
Now, you can sort any Inventory! Just like this:
2020-07-12 02:51:51 +02:00
```java
2020-06-10 18:21:41 +02:00
chestSortAPI.sortInventory(Inventory inventory);
2018-11-08 00:00:24 +01:00
```
2018-11-08 16:41:02 +01:00
2019-01-12 15:51:21 +01:00
To sort only specific slots, you can pass slot numbers where to start and end sorting. ChestSort will not modify the inventory outside the given slot range.
2018-11-08 16:41:02 +01:00
2020-07-12 02:51:51 +02:00
```java
2020-06-10 18:21:41 +02:00
chestSortAPI.sortInventory(Inventory inventory, int startSlot, int endSlot);
2019-01-12 15:51:21 +01:00
```
You can also check if a player has automatic sorting enabled or disabled:
2020-07-12 02:51:51 +02:00
```java
2020-06-10 18:21:41 +02:00
boolean sortingEnabled = chestSortAPI.sortingEnabled(Player player);
```
### Custom ChestSort event
If you want to prevent ChestSort from sorting a certain inventory, you can listen to the ChestSortEvent event.
2020-07-12 02:51:51 +02:00
```java
2020-06-10 18:21:41 +02:00
@EventHandler
public void onChestSortEvent(ChestSortEvent event) {
if(event.getInventory() == whatever) {
event.setCancelled(true);
}
}
```
2020-07-12 02:51:51 +02:00
### Making custom inventories sortable
If you create a new Inventory inside your plugin, you can use the `Sortable` class to tell ChestSort that your custom inventory should be sortable.
```java
2020-07-12 03:02:07 +02:00
Inventory inv = Bukkit.createInventory(new Sortable(), 9, "Example");
```
You can also store another InventoryHolder in the Inventory if needed:
```java
Sortable holder = new Sortable(player)
2020-07-12 02:51:51 +02:00
```
2020-06-10 18:21:41 +02:00
## Example Plugin
2020-06-10 18:43:12 +02:00
Here is a complete example plugin that shows to add and use the ChestSort API: [LINK](https://github.com/JEFF-Media-GbR/ChestSortAPIExample)
2020-07-12 03:02:07 +02:00
## Source code
The source code for the API can be found [here](https://github.com/JEFF-Media-GbR/Spigot-ChestSortAPI).