14 Integrations
ME1312 edited this page 2021-06-07 03:19:01 -04:00

This page will let you know what other plugins SubServers apps will interact with automatically when they are available.

Topics on This Page:
PlaceholderAPI
TitleAPI
Bukkit Item Naming

PlaceholderAPI

SubServers.Client.Bukkit provides PlaceholderAPI placeholders to those who want to use them. Naturally, we took this format to the extremes, so we needed our own page to explain these properly.

Using Placeholders

Like PlaceholderAPI's own BungeeCord placeholders, these placeholders use caching. To keep network resources down, we don't start requesting data until a placeholder is actually used. If you know you're going to use a placeholder and want immediate results, enable PlaceholderAPI-Ready in config.yml.

There are three prefixes for placeholders:

%subservers_example()%       - Runs the `example()` method with the default behavior
%subservers_color_example()% - Runs the `example()` method explicitly including color codes
%subservers_plain_example()% - Runs the `example()` method explicitly excluding color codes

There are different ways to format these placeholders. Here's a few notable ones:

%subservers_example%                                         - Runs the `example()` method with no arguments
%subservers_example(value1, value2)%                         - Runs the `example()` method with arguments
%subservers_example<&dExample, &bResponses>%                 - Runs the `example()` method with custom responses
%subservers_example(value1, value2)<&dExample, &bResponses>% - Runs the `example()` method with both

You can also use other methods and placeholders in arguments and custom responses:

%subservers_subserver.online()<&aOnline>%                       - Uses no other methods/placeholders
%subservers_subserver.online()<&b#server.players() online>%     - Uses the `server.players()` method
%subservers_subserver.online()<&b$redisbungee_example$ online>% - Uses the `%redisbungee_example%` placeholder

Valid Placeholders

%subservers_example()%
%subservers_players()%

For Proxies

%subservers_proxies()%
%subservers_proxy.displayname(Proxy)%
%subservers_proxy.type(Proxy)<Master Proxy, Proxy>%
%subservers_proxy.players(Proxy)%
%subservers_proxy.subdata(Proxy)<Connected, Disconnected>%
%subservers_proxy.subdata.channels(Proxy)%
%subservers_proxy.subdata.subchannels(Proxy)%
%subservers_proxy.signature(Proxy)%

If you don't select a proxy, the master proxy will be selected (if it's available).

For Hosts

%subservers_hosts()%
%subservers_host.displayname(Host)%
%subservers_host.available(Host)<Available, Unavailable>%
%subservers_host.enabled(Host)<Enabled, Disabled>%
%subservers_host.address(Host)%
%subservers_host.creator.templates(Host)%
%subservers_host.creator.template.displayname(Host, Template)%
%subservers_host.creator.template.enabled(Host, Template)<Enabled, Disabled>%
%subservers_host.creator.template.type(Host, Template)%
%subservers_host.creator.template.requiresversion(Host, Template)<Optional, Required>%
%subservers_host.creator.template.updatable(Host, Template)<Updatable, Not Updatable>%
%subservers_host.subservers(Host)%
%subservers_host.players(Host)%
%subservers_host.subdata(Host)<Connected, Unsupported, Disconnected>%
%subservers_host.subdata.channels(Host)%
%subservers_host.subdata.subchannels(Host)%
%subservers_host.signature(Host)%

If you don't select a host, the one this subserver exists on will be selected if it exists as one.

For Groups

%subservers_groups()%
%subservers_group.servers(Group)%
%subservers_group.players(Group)%

There is no default for selecting groups.

For Servers

%subservers_servers()%
%subservers_server.displayname(Server)%
%subservers_server.type(Server)<Subserver, Server>%
%subservers_server.groups(Server)%
%subservers_server.address(Server)%
%subservers_server.motd(Server)%
%subservers_server.restricted(Server)<Public, Private>%
%subservers_server.hidden(Server)<Visible, Hidden>%
%subservers_server.players(Server)%
%subservers_server.subdata(Server)<Connected, Disconnected>%
%subservers_server.subdata.channels(Server)%
%subservers_server.subdata.subchannels(Server)%
%subservers_server.signature(Server)%

If you don't select a server, this server will be selected.

For Subservers

%subservers_subservers()%
%subservers_subserver.displayname(Subserver)%
%subservers_subserver.available(Subserver)<Available, Unavailable>%
%subservers_subserver.enabled(Subserver)<Enabled, Disabled>%
%subservers_subserver.editable(Subserver)<Editable, Locked>%
%subservers_subserver.host(Subserver)%
%subservers_subserver.template(Subserver)%
%subservers_subserver.template.displayname(Subserver)%
%subservers_subserver.template.enabled(Subserver)<Enabled, Disabled>%
%subservers_subserver.template.type(Subserver)%
%subservers_subserver.template.requiresversion(Subserver)<Optional, Required>%
%subservers_subserver.template.updatable(Subserver)<Updatable, Not Updatable>%
%subservers_subserver.groups(Subserver)%
%subservers_subserver.address(Subserver)%
%subservers_subserver.motd(Subserver)%
%subservers_subserver.logging(Subserver)<Logging, Muted>%
%subservers_subserver.running(Subserver)<Running, Offline>%
%subservers_subserver.online(Subserver)<Online, Starting, Offline>%
%subservers_subserver.temporary(Subserver)<Permanent, Temporary>%
%subservers_subserver.stopaction(Subserver)%
%subservers_subserver.incompatibilities(Subserver)%
%subservers_subserver.incompatibilities.current(Subserver)%
%subservers_subserver.restricted(Subserver)<Public, Private>%
%subservers_subserver.hidden(Subserver)<Visible, Hidden>%
%subservers_subserver.players(Subserver)%
%subservers_subserver.subdata(Subserver)<Connected, Disconnected>%
%subservers_subserver.subdata.channels(Subserver)%
%subservers_subserver.subdata.subchannels(Subserver)%
%subservers_subserver.signature(Subserver)%

If you don't select a subserver, this subserver will be selected if it exists as one.

TitleAPI

API for title messages didn't get added into Bukkit until 1.11. So, until then, we had to use something else.

TitleAPI adds an API that is used to deliver title messages in SubServers.Client.Bukkit for 1.8, 1.9, and 1.10 servers.
That's all there really is to say about it.

Bukkit Item Naming

Item naming is something that's changed over the years, and SubServers.Client.Bukkit supports Minecraft versions all the way back to 1.7.10. So, here are the naming schemes available to you.

Numeric IDs

Numeric IDs were removed in 1.13, but if your servers are old enough, you can still make use of them in SubServers.

1   <- Smooth Stone
1:0 <- Smooth Stone (again)
1:1 <- Granite

Check this outdated looking website for more ids.

Namespaced IDs

These existed in the older versions, but were not finalized until 1.13. This means that, for example, minecraft:grass will show a different item entirely in 1.12 and 1.13.

minecraft:stone    <- Smooth Stone
minecraft:granite  <- Granite (1.13)
minecraft:repeater <- Redstone Repeater

Check this documentation for more names.

Legacy Bukkit Material IDs

Before Mojang started naming their items, Bukkit decided to give everything a name of their own, creating a third naming scheme. While also removed in 1.13, Spigot's plugin compatibility layer keeps this naming scheme alive, making it somewhat of a bridge between versions. As such, bukkit:grass shows the same item in both 1.12 and 1.13.

bukkit:stone   <- Smooth Stone
bukkit:stone#0 <- Smooth Stone (again)
bukkit:stone#1 <- Granite
bukkit:grass   <- Grass Block
bukkit:diode   <- Redstone Repeater

Check this legacy documentation for more names.