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.