Improved Plugin Logic
This commit is contained in:
parent
19679e85f2
commit
e912f64756
90
src/main/java/me/feusalamander/vmessage/Configuration.java
Normal file
90
src/main/java/me/feusalamander/vmessage/Configuration.java
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
package me.feusalamander.vmessage;
|
||||||
|
|
||||||
|
import com.moandjiezana.toml.Toml;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public final class Configuration {
|
||||||
|
private final String messageFormat;
|
||||||
|
private final String joinFormat;
|
||||||
|
private final String leaveFormat;
|
||||||
|
private final String changeFormat;
|
||||||
|
private final boolean messageEnabled;
|
||||||
|
private final boolean joinEnabled;
|
||||||
|
private final boolean leaveEnabled;
|
||||||
|
private final boolean changeEnabled;
|
||||||
|
|
||||||
|
Configuration(Toml config) {
|
||||||
|
messageFormat = config.getString("Message.format", "");
|
||||||
|
joinFormat = config.getString("Join.format", "");
|
||||||
|
leaveFormat = config.getString("Leave.format", "");
|
||||||
|
changeFormat = config.getString("Server-change.format", "");
|
||||||
|
|
||||||
|
messageEnabled = config.getBoolean("Message.enabled", false);
|
||||||
|
joinEnabled = config.getBoolean("Join.enabled", false);
|
||||||
|
leaveEnabled = config.getBoolean("Leave.enabled", false);
|
||||||
|
changeEnabled = config.getBoolean("Server-change.enabled", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Configuration load(Path dataDirectory) {
|
||||||
|
Path f = createConfig(dataDirectory);
|
||||||
|
if (f != null) {
|
||||||
|
Toml config = new Toml().read(f.toFile());
|
||||||
|
return new Configuration(config);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Path createConfig(Path dataDirectory){
|
||||||
|
try {
|
||||||
|
if (Files.notExists(dataDirectory)){
|
||||||
|
Files.createDirectory(dataDirectory);
|
||||||
|
}
|
||||||
|
Path f = dataDirectory.resolve("config.toml");
|
||||||
|
if (Files.notExists(f)){
|
||||||
|
try (InputStream stream = Configuration.class.getResourceAsStream("/config.toml")) {
|
||||||
|
Files.copy(Objects.requireNonNull(stream), f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return f;
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessageFormat() {
|
||||||
|
return this.messageFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getJoinFormat() {
|
||||||
|
return this.joinFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLeaveFormat() {
|
||||||
|
return this.leaveFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChangeFormat() {
|
||||||
|
return this.changeFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMessageEnabled() {
|
||||||
|
return this.messageEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isJoinEnabled() {
|
||||||
|
return this.joinEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLeaveEnabled() {
|
||||||
|
return this.leaveEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isChangeEnabled() {
|
||||||
|
return this.changeEnabled;
|
||||||
|
}
|
||||||
|
}
|
107
src/main/java/me/feusalamander/vmessage/Listeners.java
Normal file
107
src/main/java/me/feusalamander/vmessage/Listeners.java
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
package me.feusalamander.vmessage;
|
||||||
|
|
||||||
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
|
import com.velocitypowered.api.event.connection.DisconnectEvent;
|
||||||
|
import com.velocitypowered.api.event.connection.PostLoginEvent;
|
||||||
|
import com.velocitypowered.api.event.player.PlayerChatEvent;
|
||||||
|
import com.velocitypowered.api.event.player.ServerConnectedEvent;
|
||||||
|
import com.velocitypowered.api.proxy.Player;
|
||||||
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
|
import com.velocitypowered.api.proxy.ServerConnection;
|
||||||
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
import net.luckperms.api.LuckPerms;
|
||||||
|
import net.luckperms.api.LuckPermsProvider;
|
||||||
|
import net.luckperms.api.model.user.User;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public final class Listeners {
|
||||||
|
private static final LegacyComponentSerializer SERIALIZER = LegacyComponentSerializer.builder()
|
||||||
|
.character('&')
|
||||||
|
.hexColors()
|
||||||
|
.build();
|
||||||
|
private LuckPerms luckPermsAPI;
|
||||||
|
private final Configuration configuration;
|
||||||
|
private final ProxyServer proxyServer;
|
||||||
|
|
||||||
|
Listeners(ProxyServer proxyServer, Configuration configuration) {
|
||||||
|
if (proxyServer.getPluginManager().getPlugin("luckperms").isPresent()){
|
||||||
|
this.luckPermsAPI = LuckPermsProvider.get();
|
||||||
|
}
|
||||||
|
this.configuration = configuration;
|
||||||
|
this.proxyServer = proxyServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onMessage(PlayerChatEvent e){
|
||||||
|
if (!configuration.isMessageEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player p = e.getPlayer();
|
||||||
|
String m = e.getMessage();
|
||||||
|
String message = configuration.getMessageFormat()
|
||||||
|
.replace("#player#", p.getUsername())
|
||||||
|
.replace("#message#", m)
|
||||||
|
.replace("#server#", p.getCurrentServer().orElseThrow().getServerInfo().getName());
|
||||||
|
if (luckPermsAPI != null){
|
||||||
|
User user = luckPermsAPI.getPlayerAdapter(Player.class).getUser(p);
|
||||||
|
message = message.replace("#prefix#", Objects.requireNonNull(user.getCachedData().getMetaData().getPrefix()));
|
||||||
|
}
|
||||||
|
final String finalMessage = message;
|
||||||
|
proxyServer.getAllServers().forEach(server -> {
|
||||||
|
if (!Objects.equals(p.getCurrentServer().map(ServerConnection::getServerInfo).orElse(null), server.getServerInfo())){
|
||||||
|
server.sendMessage(SERIALIZER.deserialize(finalMessage));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onJoin(PostLoginEvent e){
|
||||||
|
if (!configuration.isJoinEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player p = e.getPlayer();
|
||||||
|
String message = configuration.getJoinFormat().replace("#player#", p.getUsername());
|
||||||
|
if (luckPermsAPI != null){
|
||||||
|
User user = luckPermsAPI.getPlayerAdapter(Player.class).getUser(p);
|
||||||
|
message = message.replace("#prefix#", Objects.requireNonNull(user.getCachedData().getMetaData().getPrefix()));
|
||||||
|
}
|
||||||
|
proxyServer.sendMessage(SERIALIZER.deserialize(message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onLeave(DisconnectEvent e){
|
||||||
|
if (!configuration.isLeaveEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player p = e.getPlayer();
|
||||||
|
String message = configuration.getLeaveFormat()
|
||||||
|
.replace("#player#", p.getUsername());
|
||||||
|
if (luckPermsAPI != null){
|
||||||
|
User user = luckPermsAPI.getPlayerAdapter(Player.class).getUser(p);
|
||||||
|
message = message.replace("#prefix#", Objects.requireNonNull(user.getCachedData().getMetaData().getPrefix()));
|
||||||
|
}
|
||||||
|
proxyServer.sendMessage(SERIALIZER.deserialize(message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onChange(ServerConnectedEvent e){
|
||||||
|
if (!configuration.isChangeEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
e.getPreviousServer().ifPresent(server -> {
|
||||||
|
RegisteredServer actual = e.getServer();
|
||||||
|
Player p = e.getPlayer();
|
||||||
|
String message = configuration.getChangeFormat()
|
||||||
|
.replace("#player#", p.getUsername())
|
||||||
|
.replace("#oldserver#", server.getServerInfo().getName())
|
||||||
|
.replace("#server#", actual.getServerInfo().getName());
|
||||||
|
if (luckPermsAPI != null){
|
||||||
|
User user = luckPermsAPI.getPlayerAdapter(Player.class).getUser(p);
|
||||||
|
message = message.replace("#prefix#", Objects.requireNonNull(user.getCachedData().getMetaData().getPrefix()));
|
||||||
|
}
|
||||||
|
proxyServer.sendMessage(SERIALIZER.deserialize(message));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
47
src/main/java/me/feusalamander/vmessage/VMessage.java
Normal file
47
src/main/java/me/feusalamander/vmessage/VMessage.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package me.feusalamander.vmessage;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||||
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
|
import com.velocitypowered.api.plugin.Dependency;
|
||||||
|
import com.velocitypowered.api.plugin.Plugin;
|
||||||
|
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
||||||
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
|
@Plugin(
|
||||||
|
id = "vmessage",
|
||||||
|
name = "Vmessage",
|
||||||
|
version = "1.2",
|
||||||
|
description = "A velocity plugin that creates a multi server chat for the network",
|
||||||
|
authors = {"FeuSalamander"},
|
||||||
|
dependencies = { @Dependency(id = "luckperms", optional = true) }
|
||||||
|
)
|
||||||
|
public class VMessage {
|
||||||
|
private final ProxyServer proxy;
|
||||||
|
private final Logger logger;
|
||||||
|
private final Metrics.Factory metricsFactory;
|
||||||
|
private final Path dataDirectory;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public VMessage(ProxyServer proxy, Logger logger, Metrics.Factory metricsFactory, @DataDirectory Path dataDirectory) {
|
||||||
|
this.proxy = proxy;
|
||||||
|
this.logger = logger;
|
||||||
|
this.metricsFactory = metricsFactory;
|
||||||
|
this.dataDirectory = dataDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onProxyInitialization(ProxyInitializeEvent event) {
|
||||||
|
Configuration configuration = Configuration.load(dataDirectory);
|
||||||
|
|
||||||
|
if (configuration == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
metricsFactory.make(this, 16527);
|
||||||
|
proxy.getEventManager().register(this, new Listeners(proxy, configuration));
|
||||||
|
logger.info("Vmessage by FeuSalamander is working !");
|
||||||
|
}
|
||||||
|
}
|
@ -1,161 +0,0 @@
|
|||||||
package me.feusalamander.vmessage;
|
|
||||||
import com.google.inject.Inject;
|
|
||||||
import com.moandjiezana.toml.Toml;
|
|
||||||
import com.velocitypowered.api.event.connection.DisconnectEvent;
|
|
||||||
import com.velocitypowered.api.event.connection.LoginEvent;
|
|
||||||
import com.velocitypowered.api.event.player.*;
|
|
||||||
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
|
||||||
import com.velocitypowered.api.event.Subscribe;
|
|
||||||
import com.velocitypowered.api.plugin.Plugin;
|
|
||||||
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
|
||||||
import com.velocitypowered.api.proxy.Player;
|
|
||||||
import com.velocitypowered.api.proxy.ProxyServer;
|
|
||||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
import net.luckperms.api.LuckPerms;
|
|
||||||
import net.luckperms.api.LuckPermsProvider;
|
|
||||||
import net.luckperms.api.model.user.User;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
@Plugin(
|
|
||||||
id = "vmessage",
|
|
||||||
name = "Vmessage",
|
|
||||||
version = "1.2",
|
|
||||||
description = "A velocity plugin that creates a multi server chat for the network",
|
|
||||||
authors = {"FeuSalamander"}
|
|
||||||
)
|
|
||||||
public class vmessage {
|
|
||||||
@Inject
|
|
||||||
private final ProxyServer proxy;
|
|
||||||
@Inject
|
|
||||||
private final Logger logger;
|
|
||||||
@Inject
|
|
||||||
private final Metrics.Factory metricsFactory;
|
|
||||||
@Inject
|
|
||||||
private final @DataDirectory Path dataDirectory;
|
|
||||||
@Inject
|
|
||||||
public vmessage(ProxyServer proxy, Logger logger, Metrics.Factory metricsFactory, @DataDirectory Path dataDirectory) {
|
|
||||||
this.proxy = proxy;
|
|
||||||
this.logger = logger;
|
|
||||||
this.metricsFactory = metricsFactory;
|
|
||||||
this.dataDirectory = dataDirectory;
|
|
||||||
}
|
|
||||||
private String messageraw = "";
|
|
||||||
private String joinraw = "";
|
|
||||||
private String leaveraw = "";
|
|
||||||
private String changeraw = "";
|
|
||||||
private String message = "";
|
|
||||||
private String join = "";
|
|
||||||
private String leave = "";
|
|
||||||
private String change = "";
|
|
||||||
private boolean messageb = false;
|
|
||||||
private boolean joinb = false;
|
|
||||||
private boolean leaveb = false;
|
|
||||||
private boolean changeb = false;
|
|
||||||
@Subscribe
|
|
||||||
private void onProxyInitialization(ProxyInitializeEvent event) {
|
|
||||||
logger.info("Vmessage by FeuSalamander is working !");
|
|
||||||
Metrics metrics = metricsFactory.make(this, 16527);
|
|
||||||
File directory = dataDirectory.toFile();
|
|
||||||
File f = new File(directory, "config.toml");
|
|
||||||
Toml config = new Toml().read(f);
|
|
||||||
createconfig();
|
|
||||||
if(config.getBoolean("Message.enabled"))messageb = true;
|
|
||||||
if(config.getBoolean("Join.enabled"))joinb = true;
|
|
||||||
if(config.getBoolean("Leave.enabled"))leaveb = true;
|
|
||||||
if(config.getBoolean("Server-change.enabled"))changeb = true;
|
|
||||||
messageraw = config.getString("Message.format");
|
|
||||||
joinraw = config.getString("Join.format");
|
|
||||||
leaveraw = config.getString("Leave.format");
|
|
||||||
changeraw = config.getString("Server-change.format");
|
|
||||||
}
|
|
||||||
@Subscribe
|
|
||||||
private void onMessage(PlayerChatEvent e){
|
|
||||||
if(messageb){
|
|
||||||
Player p = e.getPlayer();
|
|
||||||
String m = e.getMessage();
|
|
||||||
message = messageraw.replaceAll("#player#", p.getUsername()).replaceAll("#message#",m).replaceAll("#server#",p.getCurrentServer().get().getServerInfo().getName()).replaceAll("&", "§");
|
|
||||||
if(proxy.getPluginManager().getPlugin("luckperms").isPresent()){
|
|
||||||
LuckPerms api = LuckPermsProvider.get();
|
|
||||||
User user = api.getPlayerAdapter(Player.class).getUser(p);
|
|
||||||
message = message.replaceAll("#prefix#", user.getCachedData().getMetaData().getPrefix().replaceAll("&", "§"));
|
|
||||||
}
|
|
||||||
proxy.getAllServers().forEach(registeredServer -> sendMessage(registeredServer, p));
|
|
||||||
message = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Subscribe
|
|
||||||
private void onJoin(LoginEvent e){
|
|
||||||
if(joinb){
|
|
||||||
Player p = e.getPlayer();
|
|
||||||
join = joinraw.replaceAll("#player#", p.getUsername());
|
|
||||||
if(proxy.getPluginManager().getPlugin("luckperms").isPresent()){
|
|
||||||
LuckPerms api = LuckPermsProvider.get();
|
|
||||||
User user = api.getPlayerAdapter(Player.class).getUser(p);
|
|
||||||
join = join.replaceAll("#prefix#", user.getCachedData().getMetaData().getPrefix().replaceAll("&", "§"));
|
|
||||||
}
|
|
||||||
proxy.getAllServers().forEach(registeredServer -> registeredServer.sendMessage(Component.text(join)));
|
|
||||||
join = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Subscribe
|
|
||||||
private void onLeave(DisconnectEvent e){
|
|
||||||
if(leaveb){
|
|
||||||
Player p = e.getPlayer();
|
|
||||||
leave = leaveraw.replaceAll("#player#", p.getUsername());
|
|
||||||
if(proxy.getPluginManager().getPlugin("luckperms").isPresent()){
|
|
||||||
LuckPerms api = LuckPermsProvider.get();
|
|
||||||
User user = api.getPlayerAdapter(Player.class).getUser(p);
|
|
||||||
leave = leave.replaceAll("#prefix#", user.getCachedData().getMetaData().getPrefix().replaceAll("&", "§"));
|
|
||||||
}
|
|
||||||
proxy.getAllServers().forEach(registeredServer -> registeredServer.sendMessage(Component.text(leave)));
|
|
||||||
leave = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Subscribe
|
|
||||||
private void onChange(ServerConnectedEvent e){
|
|
||||||
if(changeb){
|
|
||||||
Optional<RegisteredServer> old = e.getPreviousServer();
|
|
||||||
RegisteredServer New = e.getServer();
|
|
||||||
Player p = e.getPlayer();
|
|
||||||
if(old.isPresent()){
|
|
||||||
change = changeraw.replaceAll("#player#", p.getUsername()).replaceAll("#oldserver#", old.get().getServerInfo().getName()).replaceAll("#server#", New.getServerInfo().getName());
|
|
||||||
if(proxy.getPluginManager().getPlugin("luckperms").isPresent()){
|
|
||||||
LuckPerms api = LuckPermsProvider.get();
|
|
||||||
User user = api.getPlayerAdapter(Player.class).getUser(p);
|
|
||||||
change = change.replaceAll("#prefix#", user.getCachedData().getMetaData().getPrefix().replaceAll("&", "§"));
|
|
||||||
}
|
|
||||||
proxy.getAllServers().forEach(registeredServer -> registeredServer.sendMessage(Component.text(change)));
|
|
||||||
change = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void sendMessage(RegisteredServer s, Player p){
|
|
||||||
if(!(Objects.equals(p.getCurrentServer().get().getServerInfo().getName(), s.getServerInfo().getName()))){
|
|
||||||
s.sendMessage(Component.text(message));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void createconfig(){
|
|
||||||
File dataDirectoryFile = this.dataDirectory.toFile();
|
|
||||||
if (!dataDirectoryFile.exists()){
|
|
||||||
dataDirectoryFile.mkdir();
|
|
||||||
}
|
|
||||||
File f = new File(dataDirectoryFile, "config.toml");
|
|
||||||
if(!(f.exists())){
|
|
||||||
try{
|
|
||||||
InputStream file = this.getClass().getResourceAsStream("/config.toml");
|
|
||||||
Files.copy(file, f.toPath());
|
|
||||||
}catch (IOException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,19 +4,19 @@
|
|||||||
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
||||||
#- "#message#" : return the player's message
|
#- "#message#" : return the player's message
|
||||||
#- "#server#" : return the player's server name
|
#- "#server#" : return the player's server name
|
||||||
format = "§a(#server#) #prefix# #player# §8§l> §r#message#"
|
format = "&a(#server#) #prefix# #player# &8&l> &r#message#"
|
||||||
enabled = true
|
enabled = true
|
||||||
[Join]
|
[Join]
|
||||||
#place holders:
|
#place holders:
|
||||||
#- "#player#" : return the player name
|
#- "#player#" : return the player name
|
||||||
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
||||||
format = "§7#prefix# #player# §ejoined the network"
|
format = "&7#prefix# #player# &ejoined the network"
|
||||||
enabled = true
|
enabled = true
|
||||||
[Leave]
|
[Leave]
|
||||||
#place holders:
|
#place holders:
|
||||||
#- "#player#" : return the player name
|
#- "#player#" : return the player name
|
||||||
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
||||||
format = "#§7prefix# #player# §eleft the network"
|
format = "#&7prefix# #player# &eleft the network"
|
||||||
enabled = true
|
enabled = true
|
||||||
[Server-change]
|
[Server-change]
|
||||||
#place holders:
|
#place holders:
|
||||||
@ -24,5 +24,5 @@ enabled = true
|
|||||||
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
#- "#prefix#" : return the player's luckperms prefix (don't place it if you don't have luckperms on your server)
|
||||||
#- "#oldserver#" : return the previous player's server name
|
#- "#oldserver#" : return the previous player's server name
|
||||||
#- "#server#" : return the new player's server name
|
#- "#server#" : return the new player's server name
|
||||||
format = "§7#prefix# #player# §eleft §c#oldserver# §eto join §a#server#"
|
format = "&7#prefix# #player# &eleft &c#oldserver# &eto join &a#server#"
|
||||||
enabled = true
|
enabled = true
|
Loading…
Reference in New Issue
Block a user