mirror of
https://github.com/PlaceholderAPI/PlaceholderAPI
synced 2026-02-06 12:17:13 +01:00
Compare commits
10 Commits
wiki-updat
...
feat/wiki-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0e02d4755 | ||
|
|
13d1ae8336 | ||
|
|
d654cce5c1 | ||
|
|
6b78ec0da2 | ||
|
|
447ccd925c | ||
|
|
b3825b5c45 | ||
|
|
431e0234c2 | ||
|
|
589135a9f4 | ||
|
|
a32c6e4df0 | ||
|
|
27cee54915 |
@@ -4,6 +4,13 @@ description: Comprehensive guide on how to create a PlaceholderExpansion for oth
|
|||||||
|
|
||||||
# Creating a PlaceholderExpansion
|
# Creating a PlaceholderExpansion
|
||||||
|
|
||||||
|
/// warning | Important
|
||||||
|
These pages cover the creation of a PlaceholderExpansion for both Spigot/Paper-based and Hytale Servers!
|
||||||
|
|
||||||
|
Unless mentioned otherwise the provided code examples function for both platform types.
|
||||||
|
Please always check code blocks for :material-plus-circle: Icons with additional info!
|
||||||
|
///
|
||||||
|
|
||||||
This page will cover how you can create your own [`PlaceholderExpansion`][placeholderexpansion] which you can either integrate into your own plugin (Recommended) or [upload to the eCloud](expansion-cloud.md).
|
This page will cover how you can create your own [`PlaceholderExpansion`][placeholderexpansion] which you can either integrate into your own plugin (Recommended) or [upload to the eCloud](expansion-cloud.md).
|
||||||
|
|
||||||
It's worth noting that PlaceholderAPI relies on expansions being installed. PlaceholderAPI only acts as the core replacing utility while the expansions allow other plugins to use any installed placeholder in their own messages.
|
It's worth noting that PlaceholderAPI relies on expansions being installed. PlaceholderAPI only acts as the core replacing utility while the expansions allow other plugins to use any installed placeholder in their own messages.
|
||||||
@@ -74,6 +81,11 @@ public class SomeExpansion extends PlaceholderExpansion {
|
|||||||
public String onPlaceholderRequest(Player player, @NotNull String params) {
|
public String onPlaceholderRequest(Player player, @NotNull String params) {
|
||||||
// (5)
|
// (5)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onPlaceholderRequest(PlayerRef player, @NotNull String params) {
|
||||||
|
// (6)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -108,6 +120,16 @@ public class SomeExpansion extends PlaceholderExpansion {
|
|||||||
- `player` - Nullable Player instance to parse placeholders against.
|
- `player` - Nullable Player instance to parse placeholders against.
|
||||||
- `params` - Non-null String representing the part of the placeholder after the first `_` and before the closing `%` (or `}` for bracket placeholders).
|
- `params` - Non-null String representing the part of the placeholder after the first `_` and before the closing `%` (or `}` for bracket placeholders).
|
||||||
|
|
||||||
|
6. **Note:** Only exists for the Hytale Version of PlaceholderAPI!
|
||||||
|
|
||||||
|
Called by PlaceholderAPI through `onPlaceholderRequest(PlayerRef, String)` to have placeholder values parsed.
|
||||||
|
When `null` is returned will PlaceholderAPI treat it as invalid placeholder and return it unchanged.
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
|
||||||
|
- `player` - PlayerRef instance to parse placeholders against.
|
||||||
|
- `params` - Non-null String representing the part of the placeholder after the first `_` and before the closing `%` (or `}` for bracket placeholders).
|
||||||
|
|
||||||
/// note
|
/// note
|
||||||
Overriding `onRequest(OfflinePlayer, String)` or `onPlaceholderRequest(Player, String)` is not required if you [create relational placeholders](#making-a-relational-expansion).
|
Overriding `onRequest(OfflinePlayer, String)` or `onPlaceholderRequest(Player, String)` is not required if you [create relational placeholders](#making-a-relational-expansion).
|
||||||
///
|
///
|
||||||
@@ -133,16 +155,18 @@ You are also required to override and set `persist()` to `true`. This tells Plac
|
|||||||
attrs: { id: full-example-internal }
|
attrs: { id: full-example-internal }
|
||||||
type: example
|
type: example
|
||||||
|
|
||||||
//// note |
|
//// note | Important Notes
|
||||||
Please see the [Basic PlaceholderExpansion Structure](#basic-placeholderexpansion-structure) section for an explanation of all common methods in this example.
|
- Please see the [Basic PlaceholderExpansion Structure](#basic-placeholderexpansion-structure) section for an explanation of all common methods in this example.
|
||||||
|
- The below example is for a Spigot/Paper-based setup.
|
||||||
|
For a Hytale server, replace `me.clip` imports with `at.helpch` and replace `OfflinePlayer` with `PlayerRef` (Including the import).
|
||||||
|
|
||||||
Tab the :material-plus-circle: icons in the code block below for additional information.
|
Tab the :material-plus-circle: icons in the code block below for additional information.
|
||||||
////
|
////
|
||||||
|
|
||||||
```java { .annotate title="SomeExpansion.java" }
|
```java { .annotate title="SomeExpansion.java" }
|
||||||
package at.helpch.placeholderapi.example.expansion;
|
package com.example.plugin.expansion;
|
||||||
|
|
||||||
import at.helpch.placeholderapi.example.SomePlugin;
|
import com.example.plugin.SomePlugin;
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -206,19 +230,20 @@ public class SomeExpansion extends PlaceholderExpansion {
|
|||||||
6. Example of accessing data of the plugin's `config.yml` file.
|
6. Example of accessing data of the plugin's `config.yml` file.
|
||||||
|
|
||||||
7. Reaching this means that an invalid params String was given, so we return `null` to tell PlaceholderAPI that the placeholder was invalid.
|
7. Reaching this means that an invalid params String was given, so we return `null` to tell PlaceholderAPI that the placeholder was invalid.
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
||||||
### Register your Expansion
|
### Register your Expansion
|
||||||
|
|
||||||
Due to the PlaceholderExpansion being internal, PlaceholderAPI does not load it automatically, we'll need to do it manually.
|
Due to the PlaceholderExpansion being internal, PlaceholderAPI does not load it automatically, we'll need to do it manually.
|
||||||
This is being done by creating a new instance of your PlaceholderExpansion class and calling the `register()` method of it.
|
This is being done by creating a new instance of your PlaceholderExpansion class and calling the `register()` method of it:
|
||||||
|
|
||||||
Here is a quick example:
|
/// tab | Spigot, Paper, ...
|
||||||
|
|
||||||
```java { .annotate title="SomePlugin.java" }
|
```java { .annotate title="SomePlugin.java" }
|
||||||
package at.helpch.placeholderapi.example;
|
package com.example.plugin;
|
||||||
|
|
||||||
import at.helpch.placeholderapi.example.expansion.SomeExpansion;
|
import com.example.plugin.expansion.SomeExpansion;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@@ -238,6 +263,29 @@ public class SomePlugin extends JavaPlugin {
|
|||||||
|
|
||||||
2. This registers our expansion in PlaceholderAPI. It also gives the Plugin class as dependency injection to the Expansion class, so that we can use it.
|
2. This registers our expansion in PlaceholderAPI. It also gives the Plugin class as dependency injection to the Expansion class, so that we can use it.
|
||||||
|
|
||||||
|
///
|
||||||
|
|
||||||
|
/// tab | Hytale
|
||||||
|
|
||||||
|
```java { .annotate title="SomePlugin.java" }
|
||||||
|
package com.example.plugin;
|
||||||
|
|
||||||
|
import com.example.plugin.expansion.SomeExpansion;
|
||||||
|
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
|
||||||
|
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
|
||||||
|
|
||||||
|
public class SomePlugin extends JavaPlugin {
|
||||||
|
|
||||||
|
public SomePlugin(JavaPluginInit init) {
|
||||||
|
super(init)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Example of checking for PAPI and registering expansion
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
///
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
## Making an External Expansion
|
## Making an External Expansion
|
||||||
@@ -257,8 +305,10 @@ Downsides include a more tedious setup in terms of checking for a required plugi
|
|||||||
attrs: { id: full-example-external-no-dependency }
|
attrs: { id: full-example-external-no-dependency }
|
||||||
type: example
|
type: example
|
||||||
|
|
||||||
//// note |
|
//// note | Important Notes
|
||||||
Please see the [Basic PlaceholderExpansion Structure](#basic-placeholderexpansion-structure) section for an explanation of all common methods in this example.
|
- Please see the [Basic PlaceholderExpansion Structure](#basic-placeholderexpansion-structure) section for an explanation of all common methods in this example.
|
||||||
|
- The below example is for a Spigot/Paper-based setup.
|
||||||
|
For a Hytale server, replace `me.clip` imports with `at.helpch` and replace `OfflinePlayer` with `PlayerRef` (Including the import).
|
||||||
|
|
||||||
Tab the :material-plus-circle: icons in the code block below for additional information.
|
Tab the :material-plus-circle: icons in the code block below for additional information.
|
||||||
////
|
////
|
||||||
@@ -266,7 +316,7 @@ Tab the :material-plus-circle: icons in the code block below for additional info
|
|||||||
This is an example expansion without any plugin dependency.
|
This is an example expansion without any plugin dependency.
|
||||||
|
|
||||||
```java { .annotate title="SomeExpansion.java" }
|
```java { .annotate title="SomeExpansion.java" }
|
||||||
package at.helpch.placeholderapi.example.expansion;
|
package com.example.expansion;
|
||||||
|
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
@@ -314,8 +364,10 @@ public class SomeExpansion extends PlaceholderExpansion {
|
|||||||
attrs: { id: full-example-external-dependency }
|
attrs: { id: full-example-external-dependency }
|
||||||
type: example
|
type: example
|
||||||
|
|
||||||
//// note |
|
//// note | Important Notes
|
||||||
Please see the [Basic PlaceholderExpansion Structure](#basic-placeholderexpansion-structure) section for an explanation of all common methods in this example.
|
- Please see the [Basic PlaceholderExpansion Structure](#basic-placeholderexpansion-structure) section for an explanation of all common methods in this example.
|
||||||
|
- The below example is for a Spigot/Paper-based setup.
|
||||||
|
For a Hytale server, replace `me.clip` imports with `at.helpch` and replace `OfflinePlayer` with `PlayerRef` (Including the import).
|
||||||
|
|
||||||
Tab the :material-plus-circle: icons in the code block below for additional information.
|
Tab the :material-plus-circle: icons in the code block below for additional information.
|
||||||
////
|
////
|
||||||
@@ -323,9 +375,9 @@ Tab the :material-plus-circle: icons in the code block below for additional info
|
|||||||
This is an example expansion with a plugin dependency.
|
This is an example expansion with a plugin dependency.
|
||||||
|
|
||||||
```java { .annotate title="SomeExpansion.java" }
|
```java { .annotate title="SomeExpansion.java" }
|
||||||
package at.helpch.placeholderapi.example.expansion;
|
package com.example.expansion;
|
||||||
|
|
||||||
import at.helpch.placeholderapi.example.SomePlugin;
|
import com.example.plugin.SomePlugin;
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
@@ -383,7 +435,9 @@ public class SomeExpansion extends PlaceholderExpansion {
|
|||||||
2. The name of the plugin this expansion depends on.
|
2. The name of the plugin this expansion depends on.
|
||||||
It is recommended to set this, as it would result in PlaceholderAPI reporting any missing plugin for your expansion.
|
It is recommended to set this, as it would result in PlaceholderAPI reporting any missing plugin for your expansion.
|
||||||
|
|
||||||
3. This does two things:
|
3. **Note:** This only works on a Spigot/Paper-based server. A equivalent for Hytale servers is not yet known.
|
||||||
|
|
||||||
|
This does two things:
|
||||||
|
|
||||||
1. It sets the `plugin` instance to `SomePlugin` using Bukkit's PluginManager to retrieve a JavaPlugin instance that is cast to `SomePlugin`.
|
1. It sets the `plugin` instance to `SomePlugin` using Bukkit's PluginManager to retrieve a JavaPlugin instance that is cast to `SomePlugin`.
|
||||||
2. It checks if the retrieved instance is not null. If it is will this result in `canRegister()` returning false, resulting in PlaceholderAPI not loading our expansion.
|
2. It checks if the retrieved instance is not null. If it is will this result in `canRegister()` returning false, resulting in PlaceholderAPI not loading our expansion.
|
||||||
@@ -399,8 +453,9 @@ public class SomeExpansion extends PlaceholderExpansion {
|
|||||||
|
|
||||||
## Making a relational Expansion
|
## Making a relational Expansion
|
||||||
|
|
||||||
/// note
|
/// note | Notes
|
||||||
Relational Placeholders always start with `rel_` to properly identify them. This means that if you make a relational placeholder called `friends_is_friend` would the full placeholder be `%rel_friends_is_friend%`.
|
- Relational Placeholders always start with `rel_` to properly identify them. This means that if you make a relational placeholder called `friends_is_friend` would the full placeholder be `%rel_friends_is_friend%`.
|
||||||
|
- For Hytale, replace any mention of `Player` with `PlayerRef` and update any Imports in the code to `at.helpch` and related Hytale ones.
|
||||||
///
|
///
|
||||||
|
|
||||||
Relational PlaceholderExpansions are special in that they take two players as input, allowing you to give outputs based on their relation to each other.
|
Relational PlaceholderExpansions are special in that they take two players as input, allowing you to give outputs based on their relation to each other.
|
||||||
|
|||||||
@@ -11,28 +11,29 @@ Please note, that the examples in this page are only available for **Placeholder
|
|||||||
## First steps
|
## First steps
|
||||||
|
|
||||||
Before you can actually make use of PlaceholderAPI, you first have to import it into your project.
|
Before you can actually make use of PlaceholderAPI, you first have to import it into your project.
|
||||||
Use the below code example matching your dependency manager.
|
Use the below code example matching your project type and dependency manager.
|
||||||
|
|
||||||
/// tab | :simple-apachemaven: Maven
|
/// tab | Minecraft (Spigot, Paper, ...)
|
||||||
|
//// tab | :simple-apachemaven: Maven
|
||||||
```{ .xml title="pom.xml" data-md-component="api-version" }
|
```{ .xml title="pom.xml" data-md-component="api-version" }
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
<id>placeholderapi</id>
|
<id>placeholderapi</id>
|
||||||
<url>https://repo.extendedclip.com/releases/</url>
|
<url>https://repo.helpch.at/releases/</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>me.clip</groupId>
|
<groupId>me.clip</groupId>
|
||||||
<artifactId>placeholderapi</artifactId>
|
<artifactId>placeholderapi</artifactId>
|
||||||
<version>{version}</version>
|
<version>{version}</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
```
|
```
|
||||||
///
|
////
|
||||||
|
|
||||||
/// tab | :simple-gradle: Gradle
|
//// tab | :simple-gradle: Gradle
|
||||||
```{ .groovy title="build.gradle" data-md-component="api-version" }
|
```{ .groovy title="build.gradle" data-md-component="api-version" }
|
||||||
repositories {
|
repositories {
|
||||||
maven {
|
maven {
|
||||||
@@ -44,6 +45,56 @@ dependencies {
|
|||||||
compileOnly 'me.clip:placeholderapi:{version}'
|
compileOnly 'me.clip:placeholderapi:{version}'
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
////
|
||||||
|
///
|
||||||
|
|
||||||
|
/// tab | Hytale
|
||||||
|
//// tab | :simple-apachemaven: Maven
|
||||||
|
```{ .xml title="pom.xml" data-md-component="api-version" }
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>hytale</id>
|
||||||
|
<url>https://repo.codemc.io/repository/hytale/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>placeholderapi</id>
|
||||||
|
<url>https://repo.helpch.at/releases/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<!-- Replace {hytaleVersion} with the version you need -->
|
||||||
|
<groupId>com.hypixel.hytale</groupId>
|
||||||
|
<artifactId>Server</artifactId>
|
||||||
|
<version>{hytaleVersion}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>at.helpch</groupId>
|
||||||
|
<artifactId>placeholderapi-hytale</artifactId>
|
||||||
|
<version>{version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
```
|
||||||
|
////
|
||||||
|
|
||||||
|
//// tab | :simple-gradle: Gradle
|
||||||
|
```{ .groovy title="build.gradle" data-md-component="api-version" }
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = 'https://repo.codemc.io/repository/hytale/'
|
||||||
|
url = 'https://repo.helpch.at/releases/'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// Replace {hytaleVersion} with the version you need.
|
||||||
|
compileOnly 'com.hypixel.hytale:Server:{hytaleVersion}'
|
||||||
|
compileOnly 'at.helpch:placeholderapi-hytale:{version}'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
////
|
||||||
///
|
///
|
||||||
|
|
||||||
/// details | What is `{version}`?
|
/// details | What is `{version}`?
|
||||||
@@ -71,7 +122,7 @@ Tab the :material-plus-circle: icons in the code block below for additional info
|
|||||||
name: ExamplePlugin
|
name: ExamplePlugin
|
||||||
version: 1.0
|
version: 1.0
|
||||||
author: author
|
author: author
|
||||||
main: your.main.path.Here
|
main: com.example.plugin.ExamplePlugin
|
||||||
|
|
||||||
softdepend: ["PlaceholderAPI"] # (1)
|
softdepend: ["PlaceholderAPI"] # (1)
|
||||||
```
|
```
|
||||||
@@ -89,7 +140,7 @@ Tab the :material-plus-circle: icons in the code block below for additional info
|
|||||||
name: ExamplePlugin
|
name: ExamplePlugin
|
||||||
version: 1.0
|
version: 1.0
|
||||||
author: author
|
author: author
|
||||||
main: your.main.path.Here
|
main: com.example.plugin.ExamplePlugin
|
||||||
|
|
||||||
depend: ["PlaceholderAPI"] # (1)
|
depend: ["PlaceholderAPI"] # (1)
|
||||||
```
|
```
|
||||||
@@ -111,7 +162,7 @@ Tab the :material-plus-circle: icons in the code block below for additional info
|
|||||||
name: ExamplePlugin
|
name: ExamplePlugin
|
||||||
version: 1.0
|
version: 1.0
|
||||||
author: author
|
author: author
|
||||||
main: your.main.path.Here
|
main: com.example.plugin.ExamplePlugin
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
server:
|
server:
|
||||||
@@ -134,7 +185,7 @@ Tab the :material-plus-circle: icons in the code block below for additional info
|
|||||||
name: ExamplePlugin
|
name: ExamplePlugin
|
||||||
version: 1.0
|
version: 1.0
|
||||||
author: author
|
author: author
|
||||||
main: your.main.path.Here
|
main: com.example.plugin.ExamplePlugin
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
server:
|
server:
|
||||||
@@ -149,6 +200,42 @@ dependencies:
|
|||||||
|
|
||||||
///
|
///
|
||||||
|
|
||||||
|
/// tab | manifest.json (Hytale)
|
||||||
|
|
||||||
|
//// tab | Optional dependency
|
||||||
|
|
||||||
|
```{ .json .annotate title="manifest.json" }
|
||||||
|
{
|
||||||
|
"Group": "com.example",
|
||||||
|
"Name": "ExamplePlugin",
|
||||||
|
"Version": "1.0",
|
||||||
|
"Main": "com.example.plugin.ExamplePlugin",
|
||||||
|
"OptionalDependencies": {
|
||||||
|
"HelpChat:PlaceholderAPI": ">= 1.0.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
////
|
||||||
|
|
||||||
|
//// tab | Required dependency
|
||||||
|
|
||||||
|
```{ .json .annotate title="manifest.json" }
|
||||||
|
{
|
||||||
|
"Group": "com.example",
|
||||||
|
"Name": "ExamplePlugin",
|
||||||
|
"Version": "1.0",
|
||||||
|
"Main": "com.example.plugin.ExamplePlugin",
|
||||||
|
"Dependencies": {
|
||||||
|
"HelpChat:PlaceholderAPI": ">= 1.0.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
////
|
||||||
|
|
||||||
|
///
|
||||||
|
|
||||||
## Adding placeholders to PlaceholderAPI
|
## Adding placeholders to PlaceholderAPI
|
||||||
|
|
||||||
A full guide on how to create expansions can be found on the [Creating a PlaceholderExpansion](creating-a-placeholderexpansion.md) page.
|
A full guide on how to create expansions can be found on the [Creating a PlaceholderExpansion](creating-a-placeholderexpansion.md) page.
|
||||||
@@ -160,11 +247,9 @@ To use placeholders from other plugins in our own plugin, we simply have to [(so
|
|||||||
|
|
||||||
It is also important to point out, that any required plugin/dependency for an expansion has to be on the server and enabled, or the `setPlaceholders` method will just return the placeholder itself (do nothing).
|
It is also important to point out, that any required plugin/dependency for an expansion has to be on the server and enabled, or the `setPlaceholders` method will just return the placeholder itself (do nothing).
|
||||||
|
|
||||||
/// details | Example
|
/// tab | Spigot, Paper, ...
|
||||||
type: example
|
|
||||||
|
|
||||||
Let's assume we want to send a custom join message that shows the primary group a player has.
|
The following is an example plugin that sends `%player_name% joined the server! They are rank %vault_rank%` as the Join message, having the placeholders be replaced by PlaceholderAPI.
|
||||||
To achieve this, we can do the following:
|
|
||||||
|
|
||||||
//// note |
|
//// note |
|
||||||
The below example assumes a **soft dependency** on PlaceholderAPI to handle PlaceholderAPI not being present more decently.
|
The below example assumes a **soft dependency** on PlaceholderAPI to handle PlaceholderAPI not being present more decently.
|
||||||
@@ -173,7 +258,7 @@ Tab the :material-plus-circle: icons in the code block below for additional info
|
|||||||
////
|
////
|
||||||
|
|
||||||
```{ .java .annotate title="JoinExample.java" }
|
```{ .java .annotate title="JoinExample.java" }
|
||||||
package at.helpch.placeholderapi;
|
package com.example.plugin;
|
||||||
|
|
||||||
import me.clip.placeholderapi.PlaceholderAPI;
|
import me.clip.placeholderapi.PlaceholderAPI;
|
||||||
|
|
||||||
@@ -215,4 +300,45 @@ public class JoinExample extends JavaPlugin implements Listener {
|
|||||||
In our example are we providing a text containing `%player_name%` and `%vault_rank%` to be parsed, which require the Player and Vault expansion respectively.
|
In our example are we providing a text containing `%player_name%` and `%vault_rank%` to be parsed, which require the Player and Vault expansion respectively.
|
||||||
|
|
||||||
Example output: `Notch joined the server! They are rank Admin`
|
Example output: `Notch joined the server! They are rank Admin`
|
||||||
|
|
||||||
|
///
|
||||||
|
|
||||||
|
/// tab | Hytale
|
||||||
|
|
||||||
|
The following is an example plugin that sends `%player_name% joined the server! They are rank %vault_rank%` as the Join message, having the placeholders be replaced by PlaceholderAPI.
|
||||||
|
|
||||||
|
``` { .java .annotate title="JoinExample.java" }
|
||||||
|
packate com.example.plugin;
|
||||||
|
|
||||||
|
import at.helpch.placeholderapi.PlaceholderAPI;
|
||||||
|
|
||||||
|
import com.hypixel.hytale.server.core.event.events.player.PlayerReadyEvent;
|
||||||
|
import com.hypixel.hytale.server.core.Message;
|
||||||
|
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
|
||||||
|
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
|
||||||
|
|
||||||
|
public class JoinExample extends JavaPlugin {
|
||||||
|
|
||||||
|
public JoinExample(JavaPluginInit init) {
|
||||||
|
super(init)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setup() {
|
||||||
|
// (1)
|
||||||
|
getEventRegistry().registerGlobal(PlayerReadyEvent.class, this::onPlayerReady);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPlayerReady(PlayerReadyEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
// (2)
|
||||||
|
player.sendMessage(PlaceholderAPI.setPlaceholders(Message.raw("Welcome %player_name%!"), player))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
1. We tell the server to call `onPlayerReady` whenever a `PlayerReadyEvent` fires.
|
||||||
|
2. PlaceholderAPI offers multiple `setPlaceholders` methods that can either return a `String` or a `Message` object, depending on your needs.
|
||||||
|
Note that these methods require input of the same type: `setPlaceholders(String, PlayerRef)` for String and `setPlaceholders(Message, PlayerRef)` for Messages.
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ When a plugin or [`/papi parse me %placeholder%`](users/commands.md#papi-parse)
|
|||||||
Some expansions may not be integrated into a plugin or don't even have a plugin to depend on, meaning that they may be their own separate jar file that you have to download.
|
Some expansions may not be integrated into a plugin or don't even have a plugin to depend on, meaning that they may be their own separate jar file that you have to download.
|
||||||
Such expansions can usually be found on the eCloud of PlaceholderAPI and be downloaded using the [`/papi ecloud download <expansion>`](users/commands.md#papi-ecloud-download) command.
|
Such expansions can usually be found on the eCloud of PlaceholderAPI and be downloaded using the [`/papi ecloud download <expansion>`](users/commands.md#papi-ecloud-download) command.
|
||||||
|
|
||||||
Whether an expansion is available on the eCloud or not can be found out in the [Placeholder List](users/placeholder-list.md) with any expansion displaying a papi command being downlodable.
|
Whether an expansion is available on the eCloud or not can be found out in the [Placeholder List](users/placeholder-list/index.md) with any expansion displaying a papi command being downlodable.
|
||||||
|
|
||||||
- ### Plugin actually supports PlaceholderAPI
|
- ### Plugin actually supports PlaceholderAPI
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ When a plugin or [`/papi parse me %placeholder%`](users/commands.md#papi-parse)
|
|||||||
Double-check that the placeholder you set doesn't contain a typo. You can use [`/papi ecloud placeholders <expansion>`](users/commands.md#papi-ecloud-placeholders) (replace `<expansion>` with the name of the expansion) to get a list of all the placeholders the expansion may have.
|
Double-check that the placeholder you set doesn't contain a typo. You can use [`/papi ecloud placeholders <expansion>`](users/commands.md#papi-ecloud-placeholders) (replace `<expansion>` with the name of the expansion) to get a list of all the placeholders the expansion may have.
|
||||||
Keep in mind that this only works for separate expansions on the eCloud and not for those that are loaded by plugins.
|
Keep in mind that this only works for separate expansions on the eCloud and not for those that are loaded by plugins.
|
||||||
|
|
||||||
Additionally can the placeholder list from the eCloud be outdated. It is recommended to check the [Placeholder List](users/placeholder-list.md) or see if there is any documentation for the placeholders you want to use.
|
Additionally can the placeholder list from the eCloud be outdated. It is recommended to check the [Placeholder List](users/placeholder-list/index.md) or see if there is any documentation for the placeholders you want to use.
|
||||||
|
|
||||||
- ### Plugin is enabled
|
- ### Plugin is enabled
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ It also has a community-curated list of all available Placeholder expansions and
|
|||||||
|
|
||||||
- [:octicons-chevron-right-16: Commands](users/commands.md)
|
- [:octicons-chevron-right-16: Commands](users/commands.md)
|
||||||
- [:octicons-chevron-right-16: Using Placeholders](users/using-placeholders.md)
|
- [:octicons-chevron-right-16: Using Placeholders](users/using-placeholders.md)
|
||||||
- [:octicons-chevron-right-16: Placeholder List](users/placeholder-list.md)
|
- [:octicons-chevron-right-16: Placeholder List](users/placeholder-list/index.md)
|
||||||
- [:octicons-chevron-right-16: Plugins using PlaceholderAPI](users/plugins-using-placeholderapi.md)
|
- [:octicons-chevron-right-16: Plugins using PlaceholderAPI](users/plugins-using-placeholderapi.md)
|
||||||
|
|
||||||
- ### :material-file-code: Dev Guides
|
- ### :material-file-code: Dev Guides
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ The pages listed under this section are meant for server owners who want to use
|
|||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Community-curated list of available PlaceholderExpansions and their placeholders.
|
Community-curated lists of available Placeholder Expansions and their placeholders for the Minecraft and Hytale versions of PlaceholderAPI.
|
||||||
|
|
||||||
- [:octicons-chevron-right-16: Go to Page](placeholder-list.md)
|
- [:octicons-chevron-right-16: Go to Page](placeholder-list/index.md)
|
||||||
|
|
||||||
- ### Plugins using PlaceholderAPI
|
- ### Plugins using PlaceholderAPI
|
||||||
|
|
||||||
@@ -42,4 +42,4 @@ The pages listed under this section are meant for server owners who want to use
|
|||||||
|
|
||||||
- [:octicons-chevron-right-16: Go to Page](plugins-using-placeholderapi.md)
|
- [:octicons-chevron-right-16: Go to Page](plugins-using-placeholderapi.md)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
283
docs/users/placeholder-list/hytale.md
Normal file
283
docs/users/placeholder-list/hytale.md
Normal file
@@ -0,0 +1,283 @@
|
|||||||
|
# Hytale
|
||||||
|
|
||||||
|
This is a list of all available placeholders for the Hytale version of PlaceholderAPI.
|
||||||
|
For the Minecraft version, visit [this page](minecraft.md).
|
||||||
|
|
||||||
|
A download-command may be found in the infobox located below the title of the Expansion.
|
||||||
|
Should `Built into Plugin` be displayed is the Expansion included in the Plugin it depends on. Should a URL be shown does it mean you have to download it manually and add it to the `expansions` folder yourself.
|
||||||
|
|
||||||
|
/// note
|
||||||
|
This placeholder list is provided "as-is" without any guarantee of being accurate and/or up-to-date.
|
||||||
|
|
||||||
|
Page is only updated on request. We recommend contributing to this list by [making a Pull request](https://github.com/PlaceholderAPI/PlaceholderAPI/pulls).
|
||||||
|
Further details on how to contribute to this list or the wiki as a whole can be found on the [README file of the Wiki](https://github.com/PlaceholderAPI/PlaceholderAPI/blob/wiki/README.md).
|
||||||
|
///
|
||||||
|
|
||||||
|
- [Standalone](#standalone)
|
||||||
|
- A
|
||||||
|
- *No Expansions*
|
||||||
|
- B
|
||||||
|
- *No Expansions*
|
||||||
|
- C
|
||||||
|
- *No Expansions*
|
||||||
|
- D
|
||||||
|
- *No Expansions*
|
||||||
|
- E
|
||||||
|
- *No Expansions*
|
||||||
|
- F
|
||||||
|
- *No Expansions*
|
||||||
|
- G
|
||||||
|
- *No Expansions*
|
||||||
|
- H
|
||||||
|
- *No Expansions*
|
||||||
|
- I
|
||||||
|
- *No Expansions*
|
||||||
|
- J
|
||||||
|
- *No Expansions*
|
||||||
|
- K
|
||||||
|
- *No Expansions*
|
||||||
|
- L
|
||||||
|
- *No Expansions*
|
||||||
|
- M
|
||||||
|
- *No Expansions*
|
||||||
|
- N
|
||||||
|
- *No Expansions*
|
||||||
|
- O
|
||||||
|
- *No Expansions*
|
||||||
|
- P
|
||||||
|
- [Player](#player)
|
||||||
|
- Q
|
||||||
|
- *No Expansions*
|
||||||
|
- R
|
||||||
|
- *No Expansions*
|
||||||
|
- S
|
||||||
|
- *No Expansions*
|
||||||
|
- T
|
||||||
|
- *No Expansions*
|
||||||
|
- U
|
||||||
|
- *No Expansions*
|
||||||
|
- V
|
||||||
|
- *No Expansions*
|
||||||
|
- W
|
||||||
|
- *No Expansions*
|
||||||
|
- X
|
||||||
|
- *No Expansions*
|
||||||
|
- Y
|
||||||
|
- *No Expansions*
|
||||||
|
- Z
|
||||||
|
- *No Expansions*
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
- [Plugin-placeholders](#plugin-placeholders)
|
||||||
|
- A
|
||||||
|
- *No Expansions*
|
||||||
|
- B
|
||||||
|
- *No Expansions*
|
||||||
|
- C
|
||||||
|
- *No Expansions*
|
||||||
|
- D
|
||||||
|
- *No Expansions*
|
||||||
|
- E
|
||||||
|
- *No Expansions*
|
||||||
|
- F
|
||||||
|
- *No Expansions*
|
||||||
|
- G
|
||||||
|
- *No Expansions*
|
||||||
|
- H
|
||||||
|
- *No Expansions*
|
||||||
|
- I
|
||||||
|
- *No Expansions*
|
||||||
|
- J
|
||||||
|
- *No Expansions*
|
||||||
|
- K
|
||||||
|
- *No Expansions*
|
||||||
|
- L
|
||||||
|
- *No Expansions*
|
||||||
|
- M
|
||||||
|
- *No Expansions*
|
||||||
|
- N
|
||||||
|
- *No Expansions*
|
||||||
|
- O
|
||||||
|
- *No Expansions*
|
||||||
|
- P
|
||||||
|
- *No Expansions*
|
||||||
|
- Q
|
||||||
|
- *No Expansions*
|
||||||
|
- R
|
||||||
|
- *No Expansions*
|
||||||
|
- S
|
||||||
|
- *No Expansions*
|
||||||
|
- T
|
||||||
|
- *No Expansions*
|
||||||
|
- U
|
||||||
|
- *No Expansions*
|
||||||
|
- V
|
||||||
|
- *No Expansions*
|
||||||
|
- W
|
||||||
|
- *No Expansions*
|
||||||
|
- X
|
||||||
|
- *No Expansions*
|
||||||
|
- Y
|
||||||
|
- *No Expansions*
|
||||||
|
- Z
|
||||||
|
- *No Expansions*
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Standalone
|
||||||
|
|
||||||
|
Expansions listed here don't need any plugin/mod or extra library to function properly, unless mentioned otherwise.
|
||||||
|
A majority of these Expansions are maintained by the PlaceholderAPI team and can be considered *official*.
|
||||||
|
|
||||||
|
### **Player**
|
||||||
|
/// command | papi ecloud download Player
|
||||||
|
///
|
||||||
|
|
||||||
|
```
|
||||||
|
%player_uuid%
|
||||||
|
%player_username%
|
||||||
|
%player_language%
|
||||||
|
%player_world_uuid%
|
||||||
|
%player_x%
|
||||||
|
%player_y%
|
||||||
|
%player_z%
|
||||||
|
%player_yaw%
|
||||||
|
%player_pitch%
|
||||||
|
%player_has_played_before%
|
||||||
|
%player_name%
|
||||||
|
%player_gamemode%
|
||||||
|
%player_world%
|
||||||
|
%player_biome%
|
||||||
|
%player_item_in_hand%
|
||||||
|
%player_item_in_hand_quantity%
|
||||||
|
%player_item_in_hand_durability%
|
||||||
|
%player_item_in_hand_broken%
|
||||||
|
%player_item_in_hand_unbreakable%
|
||||||
|
%player_current_fall_distance%
|
||||||
|
%player_view_radius%
|
||||||
|
%player_client_view_radius%
|
||||||
|
%player_since_last_spawn_nanos%
|
||||||
|
%player_mount_entity_id%
|
||||||
|
%player_is_collidable%
|
||||||
|
%player_health%
|
||||||
|
%player_health_max%
|
||||||
|
%player_health_min%
|
||||||
|
%player_ammo%
|
||||||
|
%player_ammo_max%
|
||||||
|
%player_ammo_min%
|
||||||
|
%player_stamina%
|
||||||
|
%player_stamina_max%
|
||||||
|
%player_stamina_min%
|
||||||
|
%player_mana%
|
||||||
|
%player_mana_max%
|
||||||
|
%player_mana_min%
|
||||||
|
%player_oxygen%
|
||||||
|
%player_oxygen_max%
|
||||||
|
%player_oxygen_min%
|
||||||
|
%player_signature_energy%
|
||||||
|
%player_signature_energy_max%
|
||||||
|
%player_signature_energy_min%
|
||||||
|
%player_has_permission_<permission>%
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
### **Server**
|
||||||
|
/// command | papi ecloud download Server
|
||||||
|
///
|
||||||
|
|
||||||
|
```
|
||||||
|
%server_name%
|
||||||
|
%server_online%
|
||||||
|
%server_worlds%
|
||||||
|
%server_max_players%
|
||||||
|
%server_max_view_radius%
|
||||||
|
%server_motd%
|
||||||
|
%server_default_gamemode%
|
||||||
|
%server_default_world%
|
||||||
|
%server_rate_limit_enabled%
|
||||||
|
%server_rate_limit_packets_per_second%
|
||||||
|
%server_rate_limit_burst_capacity%
|
||||||
|
%server_is_booting%
|
||||||
|
%server_is_shutting_down%
|
||||||
|
%server_boot_timestamp%
|
||||||
|
%server_uptime_millis%
|
||||||
|
%server_uptime_seconds%
|
||||||
|
%server_uptime%
|
||||||
|
%server_plugin_count%
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
### **World**
|
||||||
|
/// command | papi ecloud download World
|
||||||
|
///
|
||||||
|
|
||||||
|
```
|
||||||
|
%world_total%
|
||||||
|
%world_biome%
|
||||||
|
%world_time%
|
||||||
|
%world_timein12%
|
||||||
|
%world_fulltime%
|
||||||
|
%world_dayprogress%
|
||||||
|
%world_moonphase%
|
||||||
|
%world_sunlightfactor%
|
||||||
|
%world_date%
|
||||||
|
%world_sunddirection_x%
|
||||||
|
%world_sunddirection_y%
|
||||||
|
%world_sunddirection_z%
|
||||||
|
%world_name_<world>%
|
||||||
|
%world_uuid_<world>%
|
||||||
|
%world_seed_<world>%
|
||||||
|
%world_canpvp_<world>%
|
||||||
|
%world_spawnnpc_<world>%
|
||||||
|
%world_npcfrozen_<world>%
|
||||||
|
%world_falldamage_<world>%
|
||||||
|
%world_objectivemarkers_<world>%
|
||||||
|
%world_entities_<world>%
|
||||||
|
%world_players_<world>%
|
||||||
|
%world_players_<world>_<group>%
|
||||||
|
%world_haspermission_<world>_<permission>%
|
||||||
|
%world_playerexist_<world>_<playername>%
|
||||||
|
%world_recentjoin_<world>%
|
||||||
|
%world_recentquit_<world>%
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Plugin-placeholders
|
||||||
|
|
||||||
|
Expansions listed here require the linked resource (plugin/mod) to work properly.
|
||||||
|
|
||||||
|
Most of the listed Expansions are NOT made and maintained by the PlaceholderAPI team.
|
||||||
|
Please see ?510 for a list of all expansions officially maintained by the PlaceholderAPI team.
|
||||||
|
|
||||||
|
### **[LuckPerms](https://www.spigotmc.org/resources/28140/)**
|
||||||
|
/// command | papi ecloud download LuckPerms
|
||||||
|
///
|
||||||
|
|
||||||
|
```
|
||||||
|
%luckperms_prefix%
|
||||||
|
%luckperms_suffix%
|
||||||
|
%luckperms_meta_<metakey>%
|
||||||
|
%luckperms_prefix_element_<element>%
|
||||||
|
%luckperms_suffix_element_<element>%
|
||||||
|
%luckperms_context_<contextkey>%
|
||||||
|
%luckperms_groups%
|
||||||
|
%luckperms_primary_group_name%
|
||||||
|
%luckperms_has_permission_<permission>%
|
||||||
|
%luckperms_inherits_permission_<permission>%
|
||||||
|
%luckperms_check_permission_<permission>%
|
||||||
|
%luckperms_in_group_<group>%
|
||||||
|
%luckperms_inherits_group_<group>%
|
||||||
|
%luckperms_on_track_<track>%
|
||||||
|
%luckperms_has_groups_on_track_<track>%
|
||||||
|
%luckperms_highest_group_by_weight%
|
||||||
|
%luckperms_lowest_group_by_weight%
|
||||||
|
%luckperms_first_group_on_tracks_<tracks>%
|
||||||
|
%luckperms_last_group_on_tracks_<tracks>%
|
||||||
|
%luckperms_expiry_time_<permission>%
|
||||||
|
%luckperms_inherited_expiry_time_<permission>%
|
||||||
|
%luckperms_group_expiry_time_<groupname>%
|
||||||
|
```
|
||||||
20
docs/users/placeholder-list/index.md
Normal file
20
docs/users/placeholder-list/index.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Placeholder List
|
||||||
|
|
||||||
|
PlaceholderAPI is home of countless community-made Placeholder Expansions.
|
||||||
|
To help you find the expansion you need, we are providing official placeholder lists that include available PlaceholderAPI expansions and their placeholders for both Minecraft (Spigot, Paper, etc.) and Hytale.
|
||||||
|
|
||||||
|
<div class="grid cards" markdown>
|
||||||
|
|
||||||
|
- ## [Minecraft](minecraft.md)
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Placeholder list for the Minecraft version of PlaceholderAPI.
|
||||||
|
|
||||||
|
- ## [Hytale](hytale.md)
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Placeholder list for the Hytale version of PlaceholderAPI.
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -2,9 +2,10 @@
|
|||||||
description: Community-curated list of available PlaceholderExpansions and their placeholders.
|
description: Community-curated list of available PlaceholderExpansions and their placeholders.
|
||||||
---
|
---
|
||||||
|
|
||||||
# Placeholder List
|
# Minecraft
|
||||||
|
|
||||||
This is a list of all available placeholders.
|
This is a list of all available placeholders for the Minecraft version of PlaceholderAPI.
|
||||||
|
For the Hytale version, visit [this page](hytale.md).
|
||||||
|
|
||||||
A download-command may be found in the infobox located below the title of the Expansion.
|
A download-command may be found in the infobox located below the title of the Expansion.
|
||||||
Should `Built into Plugin` be displayed is the Expansion included in the Plugin it depends on. Should a URL be shown does it mean you have to download it manually and add it to the `expansions` folder yourself.
|
Should `Built into Plugin` be displayed is the Expansion included in the Plugin it depends on. Should a URL be shown does it mean you have to download it manually and add it to the `expansions` folder yourself.
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -39,7 +39,7 @@ This feature exists since version 2.11.4 of PlaceholderAPI
|
|||||||
The way PlaceholderAPI's system works, allows a Placeholder Expansion and its corresponding placeholders to either be included within a plugin (If placeholder requires said plugin) or to be available as a separate jar file on the eCloud of PlaceholderAPI.
|
The way PlaceholderAPI's system works, allows a Placeholder Expansion and its corresponding placeholders to either be included within a plugin (If placeholder requires said plugin) or to be available as a separate jar file on the eCloud of PlaceholderAPI.
|
||||||
Depending on what type you have, will you need to do some extra steps to use the placeholder from the Placeholder Expansion.
|
Depending on what type you have, will you need to do some extra steps to use the placeholder from the Placeholder Expansion.
|
||||||
|
|
||||||
One way to find out, if an Expansion is included or separate, is to check the [Placeholder List](placeholder-list.md) page for any entry of it.
|
One way to find out, if an Expansion is included or separate, is to check the [Placeholder List](placeholder-list/index.md) page for any entry of it.
|
||||||
If it exists on the page, can you check the infobox right below the title of the Expansion for one of the following cases:
|
If it exists on the page, can you check the infobox right below the title of the Expansion for one of the following cases:
|
||||||
|
|
||||||
- `papi ecloud download <expansion>`: The expansion is on the ecloud and needs to be downloaded using the [`/papi ecloud download` command](commands.md#papi-ecloud-download).
|
- `papi ecloud download <expansion>`: The expansion is on the ecloud and needs to be downloaded using the [`/papi ecloud download` command](commands.md#papi-ecloud-download).
|
||||||
|
|||||||
@@ -76,7 +76,10 @@ nav:
|
|||||||
- users/index.md
|
- users/index.md
|
||||||
- users/commands.md
|
- users/commands.md
|
||||||
- users/using-placeholders.md
|
- users/using-placeholders.md
|
||||||
- users/placeholder-list.md
|
- Placeholder List:
|
||||||
|
- users/placeholder-list/index.md
|
||||||
|
- users/placeholder-list/minecraft.md
|
||||||
|
- users/placeholder-list/hytale.md
|
||||||
- users/plugins-using-placeholderapi.md
|
- users/plugins-using-placeholderapi.md
|
||||||
- Dev Guides:
|
- Dev Guides:
|
||||||
- developers/index.md
|
- developers/index.md
|
||||||
|
|||||||
Reference in New Issue
Block a user