From abf06762d35b6d8784c326af23ad7a871d4a0b50 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Thu, 4 Apr 2019 10:46:53 +0100 Subject: [PATCH 01/16] Added an empty database manager class to spigot --- multichat/pom.xml | 2 +- .../database/DatabaseManager.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java diff --git a/multichat/pom.xml b/multichat/pom.xml index 0a966d27..0eb2ecb8 100644 --- a/multichat/pom.xml +++ b/multichat/pom.xml @@ -5,7 +5,7 @@ xyz.olivermartin.multichat multichat - 1.7.3 + post-1.7.3 diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java new file mode 100644 index 00000000..db8b4556 --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java @@ -0,0 +1,21 @@ +package xyz.olivermartin.multichat.spigotbridge.database; + +public class DatabaseManager { + + private static DatabaseManager instance; + + public static DatabaseManager getInstance() { + return instance; + } + + static { + instance = new DatabaseManager(); + } + + /* END STATIC */ + + private DatabaseManager() { + /* EMPTY */ + } + +} From f942646c22b4228b4be71e1ff14b160d7d7467c1 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Thu, 4 Apr 2019 10:53:53 +0100 Subject: [PATCH 02/16] SQLite is now a maven dependency --- multichat/pom.xml | 6 ++++ .../database/DatabaseManager.java | 30 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/multichat/pom.xml b/multichat/pom.xml index 0eb2ecb8..a9f89924 100644 --- a/multichat/pom.xml +++ b/multichat/pom.xml @@ -57,6 +57,12 @@ + + org.xerial + sqlite-jdbc + 3.27.2.1 + + org.spongepowered spongeapi diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java index db8b4556..4bf0cb1b 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java @@ -1,5 +1,10 @@ package xyz.olivermartin.multichat.spigotbridge.database; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.SQLException; + public class DatabaseManager { private static DatabaseManager instance; @@ -18,4 +23,29 @@ private DatabaseManager() { /* EMPTY */ } + public static void main(String args[]) { + + DatabaseManager.getInstance().createDatabase("testing.db"); + + } + + /** + * Generic class to create a sqlite database + */ + public void createDatabase(String fileName) { + + String url = "jdbc:sqlite:C:/sqlite/db/" + fileName; + + try (Connection conn = DriverManager.getConnection(url)) { + if (conn != null) { + DatabaseMetaData meta = conn.getMetaData(); + System.out.println("The driver name is " + meta.getDriverName()); + System.out.println("A new database has been created."); + } + + } catch (SQLException e) { + System.out.println(e.getMessage()); + } + } + } From d827400b6ffd0e410f0d9931b650674de1dc6f55 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Thu, 4 Apr 2019 11:30:39 +0100 Subject: [PATCH 03/16] Generic database manager work --- .../database/DatabaseManager.java | 76 +++++++++++------- .../spigotbridge/database/DatabaseMode.java | 7 ++ .../database/GenericDatabase.java | 36 +++++++++ .../spigotbridge/database/SQLiteDatabase.java | 77 +++++++++++++++++++ 4 files changed, 167 insertions(+), 29 deletions(-) create mode 100644 multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseMode.java create mode 100644 multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/GenericDatabase.java create mode 100644 multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java index 4bf0cb1b..7b412031 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java @@ -1,51 +1,69 @@ package xyz.olivermartin.multichat.spigotbridge.database; -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.DriverManager; -import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; public class DatabaseManager { private static DatabaseManager instance; - + public static DatabaseManager getInstance() { return instance; } - + static { instance = new DatabaseManager(); } - + /* END STATIC */ - + + private String databasePath = "C:/multichat/db/"; + private DatabaseMode databaseMode = DatabaseMode.SQLite; + + private Map databases; + private DatabaseManager() { - /* EMPTY */ + databases = new HashMap(); } - + public static void main(String args[]) { - DatabaseManager.getInstance().createDatabase("testing.db"); - } - + + public GenericDatabase createDatabase(String name) { + return createDatabase(name, name); + } + /** * Generic class to create a sqlite database */ - public void createDatabase(String fileName) { - - String url = "jdbc:sqlite:C:/sqlite/db/" + fileName; - - try (Connection conn = DriverManager.getConnection(url)) { - if (conn != null) { - DatabaseMetaData meta = conn.getMetaData(); - System.out.println("The driver name is " + meta.getDriverName()); - System.out.println("A new database has been created."); - } - - } catch (SQLException e) { - System.out.println(e.getMessage()); - } - } - + public GenericDatabase createDatabase(String databaseName, String fileName) { + + switch (databaseMode) { + case SQLite: + default: + // TODO check doesnt already exist + databases.put(databaseName.toLowerCase(), new SQLiteDatabase(databasePath, fileName)); + return databases.get(databaseName.toLowerCase()); + } + + } + + public Optional getDatabase(String databaseName) { + if (databases.containsKey(databaseName.toLowerCase())) { + return Optional.of(databases.get(databaseName.toLowerCase())); + } else { + return Optional.empty(); + } + } + + public void removeDatabase(String databaseName) { + if (databases.containsKey(databaseName.toLowerCase())) { + GenericDatabase gdb = databases.get(databaseName.toLowerCase()); + gdb.disconnectFromDatabase(); + databases.remove(databaseName.toLowerCase()); + } + } + } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseMode.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseMode.java new file mode 100644 index 00000000..1696d475 --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseMode.java @@ -0,0 +1,7 @@ +package xyz.olivermartin.multichat.spigotbridge.database; + +public enum DatabaseMode { + + SQLite + +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/GenericDatabase.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/GenericDatabase.java new file mode 100644 index 00000000..2d31261d --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/GenericDatabase.java @@ -0,0 +1,36 @@ +package xyz.olivermartin.multichat.spigotbridge.database; + +public abstract class GenericDatabase { + + protected String url; + private boolean ready; + + public GenericDatabase(String url) { + this.url = url; + ready = setupDatabase(url); + } + + public String getURL() { + return this.url; + } + + public boolean isReady() { + return this.ready; + } + + protected abstract boolean setupDatabase(String url); + + protected abstract void disconnect(); + + protected abstract boolean connect(); + + public void connectToDatabase() { + this.ready = connect(); + } + + public void disconnectFromDatabase() { + disconnect(); + this.ready = false; + } + +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java new file mode 100644 index 00000000..ceb4e45c --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java @@ -0,0 +1,77 @@ +package xyz.olivermartin.multichat.spigotbridge.database; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class SQLiteDatabase extends GenericDatabase { + + private static final String URL_PREFIX = "jdbc:sqlite:"; + private Connection conn; + + public SQLiteDatabase(String path, String filename) { + super(URL_PREFIX + path + filename); + } + + protected boolean setupDatabase(String url) { + + try (Connection conn = DriverManager.getConnection(url)) { + + if (conn != null) { + DatabaseMetaData meta = conn.getMetaData(); + System.out.println("The driver name is " + meta.getDriverName()); + System.out.println("A new database has been created."); + + this.conn = conn; + + // Database successfully created + return true; + } + + } catch (SQLException e) { + System.out.println(e.getMessage()); + } + + // Database not successfully created + return false; + + } + + @Override + protected void disconnect() { + + if (conn != null) { + try { + if (!conn.isClosed()) { + conn.close(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + } + + @Override + protected boolean connect() { + + if (conn == null) { + + return setupDatabase(url); + + } else { + try { + if (conn.isClosed()) { + return setupDatabase(url); + } + } catch (SQLException e) { + return false; + } + } + + // Already connected + return true; + } + +} From 4e61e45a97f64df9e60384acc736d46138a42d76 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Thu, 4 Apr 2019 12:10:34 +0100 Subject: [PATCH 04/16] More setup stuff for databases in 1.8 --- .../database/DatabaseManager.java | 32 ++++++++++++++++++- .../spigotbridge/database/SQLiteDatabase.java | 5 +-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java index 7b412031..31de05a7 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/DatabaseManager.java @@ -1,9 +1,20 @@ package xyz.olivermartin.multichat.spigotbridge.database; +import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Optional; +/* + * DROP TABLE IF EXISTS nicknames; + +CREATE TABLE nicknames(id VARCHAR(128) PRIMARY KEY, u_nick VARCHAR(255), f_nick VARCHAR(255)); + +INSERT INTO nicknames VALUES ('255-444-2221--11-11', 'revilo', '&4Revilo'); + +SELECT * FROM nicknames; + */ + public class DatabaseManager { private static DatabaseManager instance; @@ -18,7 +29,7 @@ public static DatabaseManager getInstance() { /* END STATIC */ - private String databasePath = "C:/multichat/db/"; + private File databasePath; private DatabaseMode databaseMode = DatabaseMode.SQLite; private Map databases; @@ -27,19 +38,38 @@ private DatabaseManager() { databases = new HashMap(); } + //////////// + public static void main(String args[]) { + DatabaseManager.getInstance().setPath(new File("C:\\multichat\\db\\")); DatabaseManager.getInstance().createDatabase("testing.db"); } + + //////////// + + public void setPath(File path) { + this.databasePath = path; + } public GenericDatabase createDatabase(String name) { return createDatabase(name, name); } + + public boolean isReady() { + return databasePath != null; + } /** * Generic class to create a sqlite database */ public GenericDatabase createDatabase(String databaseName, String fileName) { + if (!isReady()) throw new RuntimeException("MultiChat Database Manager Not Ready!"); + + if (!databasePath.exists()) { + databasePath.mkdirs(); + } + switch (databaseMode) { case SQLite: default: diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java index ceb4e45c..4eeff0a3 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/database/SQLiteDatabase.java @@ -1,5 +1,6 @@ package xyz.olivermartin.multichat.spigotbridge.database; +import java.io.File; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; @@ -10,8 +11,8 @@ public class SQLiteDatabase extends GenericDatabase { private static final String URL_PREFIX = "jdbc:sqlite:"; private Connection conn; - public SQLiteDatabase(String path, String filename) { - super(URL_PREFIX + path + filename); + public SQLiteDatabase(File path, String filename) { + super(URL_PREFIX + path + File.separator + filename); } protected boolean setupDatabase(String url) { From 499148ff64f67d2fb470bfb3af55ffec40085231 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Fri, 5 Apr 2019 11:02:45 +0100 Subject: [PATCH 05/16] Implemented changeable nickname max length in spigot --- .../spigotbridge/MultiChatSpigot.java | 8 ++++ .../spigotbridge/commands/CommandHandler.java | 40 ++++++++++++++++--- multichat/src/main/resources/spigotconfig.yml | 6 +++ 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java index c17be521..9e793fd4 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java @@ -86,6 +86,8 @@ public static boolean hookedPAPI() { public static boolean showNicknamePrefix = false; public static String nicknamePrefix = "~"; public static List nicknameBlacklist = new ArrayList(); + public static int nicknameMaxLength = 20; + public static boolean nicknameLengthIncludeFormatting = false; @SuppressWarnings("unchecked") public void onEnable() { @@ -125,6 +127,12 @@ public void onEnable() { showNicknamePrefix = config.getBoolean("show_nickname_prefix"); nicknamePrefix = config.getString("nickname_prefix"); nicknameBlacklist = config.getStringList("nickname_blacklist"); + if (config.contains("nickname_length_limit")) { + + nicknameMaxLength = config.getInt("nickname_length_limit"); + nicknameLengthIncludeFormatting = config.getBoolean("nickname_length_limit_formatting"); + + } } File f = new File(configDir, nameDataFile); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java index 30e4591e..8747544d 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java @@ -77,6 +77,12 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label, MultiChatSpigot.showNicknamePrefix = config.getBoolean("show_nickname_prefix"); MultiChatSpigot.nicknamePrefix = config.getString("nickname_prefix"); MultiChatSpigot.nicknameBlacklist = config.getStringList("nickname_blacklist"); + if (config.contains("nickname_length_limit")) { + + MultiChatSpigot.nicknameMaxLength = config.getInt("nickname_length_limit"); + MultiChatSpigot.nicknameLengthIncludeFormatting = config.getBoolean("nickname_length_limit_formatting"); + + } } commandSender.sendMessage(ChatColor.GREEN + "The plugin has been reloaded!"); @@ -137,11 +143,22 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label, return true; } - if (NameManager.getInstance().stripAllFormattingCodes(args[0]).length() > 20 && !sender.hasPermission("multichatspigot.nick.anylength")) { + if (MultiChatSpigot.nicknameLengthIncludeFormatting) { + // Include formatting codes in the nickname length + if (args[0].length() > MultiChatSpigot.nicknameMaxLength && !sender.hasPermission("multichatspigot.nick.anylength")) { - sender.sendMessage(ChatColor.DARK_RED + "Sorry your nickname is too long, max 20 characters! (Excluding format codes)"); - return true; + sender.sendMessage(ChatColor.DARK_RED + "Sorry your nickname is too long, max " + MultiChatSpigot.nicknameMaxLength + " characters! (Including format codes)"); + return true; + } + } else { + // Do not include formatting codes in the nickname length + if (NameManager.getInstance().stripAllFormattingCodes(args[0]).length() > MultiChatSpigot.nicknameMaxLength && !sender.hasPermission("multichatspigot.nick.anylength")) { + + sender.sendMessage(ChatColor.DARK_RED + "Sorry your nickname is too long, max " + MultiChatSpigot.nicknameMaxLength + " characters! (Excluding format codes)"); + return true; + + } } String targetNickname = NameManager.getInstance().stripAllFormattingCodes(NameManager.getInstance().getCurrentName(targetUUID)); @@ -221,11 +238,22 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label, return true; } - if (NameManager.getInstance().stripAllFormattingCodes(args[1]).length() > 20 && !sender.hasPermission("multichatspigot.nick.anylength")) { + if (MultiChatSpigot.nicknameLengthIncludeFormatting) { + // Include formatting codes in the nickname length + if (args[1].length() > MultiChatSpigot.nicknameMaxLength && !sender.hasPermission("multichatspigot.nick.anylength")) { - sender.sendMessage(ChatColor.DARK_RED + "Sorry your nickname is too long, max 20 characters! (Excluding format codes)"); - return true; + sender.sendMessage(ChatColor.DARK_RED + "Sorry your nickname is too long, max " + MultiChatSpigot.nicknameMaxLength + " characters! (Including format codes)"); + return true; + + } + } else { + // Do not include formatting codes in the nickname length + if (NameManager.getInstance().stripAllFormattingCodes(args[1]).length() > MultiChatSpigot.nicknameMaxLength && !sender.hasPermission("multichatspigot.nick.anylength")) { + + sender.sendMessage(ChatColor.DARK_RED + "Sorry your nickname is too long, max " + MultiChatSpigot.nicknameMaxLength + " characters! (Excluding format codes)"); + return true; + } } String targetNickname = NameManager.getInstance().stripAllFormattingCodes(NameManager.getInstance().getCurrentName(targetUUID)); diff --git a/multichat/src/main/resources/spigotconfig.yml b/multichat/src/main/resources/spigotconfig.yml index 2f0a1928..d5ac1277 100644 --- a/multichat/src/main/resources/spigotconfig.yml +++ b/multichat/src/main/resources/spigotconfig.yml @@ -103,3 +103,9 @@ show_nickname_prefix: false # What should the prefix before nicknames be? nickname_prefix: "~" + +# The maximum length for nicknames +nickname_length_limit: 20 + +# Should formatting codes such as "&3" be counted in the length of the nickname? +nickname_length_limit_formatting: false From c045c364b1fb2e9f149a8ddf7f87808d5dd90e6f Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Fri, 5 Apr 2019 21:12:59 +0100 Subject: [PATCH 06/16] Made all channel lengths compatible with 1.7 --- .../xyz/olivermartin/multichat/bungee/BungeeComm.java | 8 ++++---- .../java/xyz/olivermartin/multichat/bungee/MultiChat.java | 6 +++--- .../multichat/spigotbridge/MultiChatSpigot.java | 6 +++--- .../listeners/MultiChatPluginMessageListener.java | 6 +++--- .../multichat/spongebridge/MultiChatSponge.java | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java index 18000a9e..92808f3d 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java @@ -88,7 +88,7 @@ public static void sendCommandMessage(String command, ServerInfo server) { e.printStackTrace(); } - server.sendData("multichat:action", stream.toByteArray()); + server.sendData("multichat:act", stream.toByteArray()); } @@ -107,7 +107,7 @@ public static void sendPlayerCommandMessage(String command, String playerRegex, e.printStackTrace(); } - server.sendData("multichat:paction", stream.toByteArray()); + server.sendData("multichat:pact", stream.toByteArray()); } @@ -173,9 +173,9 @@ public static void sendPlayerChannelMessage(String playerName, String channel, C e.printStackTrace(); } - server.sendData("multichat:channel", stream.toByteArray()); + server.sendData("multichat:ch", stream.toByteArray()); - DebugManager.log("Sent message on multichat:channel channel!"); + DebugManager.log("Sent message on multichat:ch channel!"); } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java index 27f70c29..ea0c96e8 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java @@ -279,10 +279,10 @@ public void onEnable() { getProxy().registerChannel("multichat:suffix"); getProxy().registerChannel("multichat:nick"); getProxy().registerChannel("multichat:world"); - getProxy().registerChannel("multichat:action"); - getProxy().registerChannel("multichat:paction"); + getProxy().registerChannel("multichat:act"); + getProxy().registerChannel("multichat:pact"); getProxy().registerChannel("multichat:chat"); - getProxy().registerChannel("multichat:channel"); + getProxy().registerChannel("multichat:ch"); getProxy().registerChannel("multichat:ignore"); getProxy().getPluginManager().registerListener(this, new BungeeComm()); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java index 9e793fd4..1fac658a 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java @@ -234,9 +234,9 @@ public void onEnable() { getServer().getMessenger().registerOutgoingPluginChannel(this, "multichat:nick"); getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:comm", MultiChatPluginMessageListener.getInstance()); getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:chat", MultiChatPluginMessageListener.getInstance()); - getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:action", MultiChatPluginMessageListener.getInstance()); - getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:paction", MultiChatPluginMessageListener.getInstance()); - getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:channel", MultiChatPluginMessageListener.getInstance()); + getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:act", MultiChatPluginMessageListener.getInstance()); + getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:pact", MultiChatPluginMessageListener.getInstance()); + getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:ch", MultiChatPluginMessageListener.getInstance()); getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:ignore", MultiChatPluginMessageListener.getInstance()); // Register listeners diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/listeners/MultiChatPluginMessageListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/listeners/MultiChatPluginMessageListener.java index 68a3940a..b097b3d2 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/listeners/MultiChatPluginMessageListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/listeners/MultiChatPluginMessageListener.java @@ -88,7 +88,7 @@ public void onPluginMessageReceived(String channel, Player player, byte[] bytes) e.printStackTrace(); } - } else if (channel.equals("multichat:action")) { + } else if (channel.equals("multichat:act")) { ByteArrayInputStream stream = new ByteArrayInputStream(bytes); DataInputStream in = new DataInputStream(stream); @@ -104,7 +104,7 @@ public void onPluginMessageReceived(String channel, Player player, byte[] bytes) e.printStackTrace(); } - } else if (channel.equals("multichat:paction")) { + } else if (channel.equals("multichat:pact")) { ByteArrayInputStream stream = new ByteArrayInputStream(bytes); DataInputStream in = new DataInputStream(stream); @@ -147,7 +147,7 @@ public void onPluginMessageReceived(String channel, Player player, byte[] bytes) } - } else if (channel.equals("multichat:channel")) { + } else if (channel.equals("multichat:ch")) { ByteArrayInputStream stream = new ByteArrayInputStream(bytes); //DataInputStream in = new DataInputStream(stream); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java b/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java index 31f4857c..8b8a3684 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java @@ -184,14 +184,14 @@ public void onServerStart(GameStartedServerEvent event) { ChannelBinding.RawDataChannel commChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:comm"); ChannelBinding.RawDataChannel chatChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:chat"); - ChannelBinding.RawDataChannel actionChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:action"); - ChannelBinding.RawDataChannel playerActionChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:paction"); + ChannelBinding.RawDataChannel actionChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:act"); + ChannelBinding.RawDataChannel playerActionChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:pact"); ChannelBinding.RawDataChannel prefixChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:prefix"); ChannelBinding.RawDataChannel suffixChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:suffix"); ChannelBinding.RawDataChannel worldChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:world"); ChannelBinding.RawDataChannel nickChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:nick"); - ChannelBinding.RawDataChannel channelChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:channel"); + ChannelBinding.RawDataChannel channelChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:ch"); ChannelBinding.RawDataChannel ignoreChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:ignore"); commChannel.addListener(Platform.Type.SERVER, new MetaListener(commChannel)); From c000680e2b2b3cab346903dfd3e33fe8b01337e2 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Sat, 6 Apr 2019 11:54:55 +0100 Subject: [PATCH 07/16] Added bstats metrics --- multichat/pom.xml | 37 +++++++++++++++++++ .../multichat/bungee/MultiChat.java | 5 +++ 2 files changed, 42 insertions(+) diff --git a/multichat/pom.xml b/multichat/pom.xml index 0a966d27..8b9784ef 100644 --- a/multichat/pom.xml +++ b/multichat/pom.xml @@ -9,6 +9,11 @@ + + CodeMC + https://repo.codemc.org/repository/maven-public + + sponge http://repo.spongepowered.org/maven @@ -43,6 +48,31 @@ + + org.apache.maven.plugins + maven-shade-plugin + 3.1.0 + + + + + org.bstats + + xyz.olivermartin.bungee + + + + + + package + + shade + + + + + org.apache.maven.plugins maven-compiler-plugin @@ -57,6 +87,13 @@ + + org.bstats + bstats-bungeecord + 1.4 + compile + + org.spongepowered spongeapi diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java index 27f70c29..9cb316cf 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java @@ -15,6 +15,8 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; +import org.bstats.bungeecord.Metrics; + import com.olivermartin410.plugins.TChatInfo; import com.olivermartin410.plugins.TGroupChatInfo; @@ -230,6 +232,9 @@ public void run() { public void onEnable() { instance = this; + + @SuppressWarnings("unused") + Metrics metrics = new Metrics(this); configDir = getDataFolder(); if (!getDataFolder().exists()) { From 9cf408b724f66f62e7eae1fcf49815a907ae8c88 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Sat, 6 Apr 2019 12:33:25 +0100 Subject: [PATCH 08/16] added other generated pom --- multichat/dependency-reduced-pom.xml | 231 +++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 multichat/dependency-reduced-pom.xml diff --git a/multichat/dependency-reduced-pom.xml b/multichat/dependency-reduced-pom.xml new file mode 100644 index 00000000..a3ee3196 --- /dev/null +++ b/multichat/dependency-reduced-pom.xml @@ -0,0 +1,231 @@ + + + 4.0.0 + xyz.olivermartin.multichat + multichat + 1.7.3 + + + + maven-shade-plugin + 3.1.0 + + + package + + shade + + + + + + + org.bstats + xyz.olivermartin.bungee + + + + + + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + + + + CodeMC + https://repo.codemc.org/repository/maven-public + + + sponge + http://repo.spongepowered.org/maven + + + bungeecord-repo + https://oss.sonatype.org/content/repositories/snapshots + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + vault-repo + http://nexus.hc.to/content/repositories/pub_releases + + + placeholderapi + http://repo.extendedclip.com/content/repositories/placeholderapi/ + + + jitpack.io + https://jitpack.io + + + + + org.spongepowered + spongeapi + 7.1.0 + provided + + + error_prone_annotations + com.google.errorprone + + + gson + com.google.code.gson + + + commons-lang3 + org.apache.commons + + + jsr305 + com.google.code.findbugs + + + guice + com.google.inject + + + caffeine + com.github.ben-manes.caffeine + + + guava + com.github.ben-manes.caffeine + + + plugin-meta + org.spongepowered + + + configurate-hocon + org.spongepowered + + + configurate-gson + org.spongepowered + + + configurate-yaml + org.spongepowered + + + flow-math + com.flowpowered + + + flow-noise + com.flowpowered + + + asm + org.ow2.asm + + + + + net.md-5 + bungeecord-api + 1.13-SNAPSHOT + provided + + + bungeecord-chat + net.md-5 + + + bungeecord-config + net.md-5 + + + bungeecord-event + net.md-5 + + + bungeecord-protocol + net.md-5 + + + + + net.md-5 + bungeecord-api + 1.13-SNAPSHOT + javadoc + provided + + + bungeecord-chat + net.md-5 + + + bungeecord-config + net.md-5 + + + bungeecord-event + net.md-5 + + + bungeecord-protocol + net.md-5 + + + + + org.spigotmc + spigot-api + 1.13.1-R0.1-SNAPSHOT + provided + + + commons-lang + commons-lang + + + json-simple + com.googlecode.json-simple + + + snakeyaml + org.yaml + + + gson + com.google.code.gson + + + bungeecord-chat + net.md-5 + + + + + net.milkbowl.vault + VaultAPI + 1.6 + provided + + + bukkit + org.bukkit + + + + + me.clip + placeholderapi + 2.9.2 + provided + + + + From ef176453c8b663a46d3f104b75fa278dd7cdf472 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Sun, 7 Apr 2019 23:06:44 +0100 Subject: [PATCH 09/16] Attempt to fetch spigot and sponge displaynames to bungeecord --- .../multichat/bungee/BungeeComm.java | 32 +++++++++++++++++++ .../multichat/bungee/MultiChat.java | 1 + .../multichat/bungee/PlayerMeta.java | 10 ++++-- .../multichat/bungee/PlayerMetaManager.java | 13 +++++--- .../multichat/spigotbridge/MetaManager.java | 5 +++ .../spigotbridge/MultiChatSpigot.java | 1 + .../spongebridge/MultiChatSponge.java | 12 ++++++- 7 files changed, 67 insertions(+), 7 deletions(-) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java index 92808f3d..f777ae51 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java @@ -357,6 +357,38 @@ public static void onPluginMessage(PluginMessageEvent ev) { } } + + if (ev.getTag().equals("multichat:dn")) { + + ByteArrayInputStream stream = new ByteArrayInputStream(ev.getData()); + DataInputStream in = new DataInputStream(stream); + + try { + + UUID uuid = UUID.fromString(in.readUTF()); + String spigotDisplayName = in.readUTF(); + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); + + if (player == null) return; + + synchronized (player) { + + Optional opm = PlayerMetaManager.getInstance().getPlayer(uuid); + + if (opm.isPresent()) { + + opm.get().spigotDisplayName = spigotDisplayName; + PlayerMetaManager.getInstance().updateDisplayName(uuid); + + } + + } + + } catch (IOException e) { + e.printStackTrace(); + } + + } if (ev.getTag().equals("multichat:world")) { diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java index ea0c96e8..04936746 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java @@ -277,6 +277,7 @@ public void onEnable() { getProxy().registerChannel("multichat:comm"); getProxy().registerChannel("multichat:prefix"); getProxy().registerChannel("multichat:suffix"); + getProxy().registerChannel("multichat:dn"); getProxy().registerChannel("multichat:nick"); getProxy().registerChannel("multichat:world"); getProxy().registerChannel("multichat:act"); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java index 1662bd05..5b013937 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java @@ -7,6 +7,7 @@ public class PlayerMeta { public UUID uuid; public String name; public String nick; + public String spigotDisplayName; public String prefix; public String suffix; public String world; @@ -15,12 +16,17 @@ public PlayerMeta(UUID uuid, String name) { this.uuid = uuid; this.name = name; nick = name; + spigotDisplayName = nick; prefix = ""; suffix = ""; world = ""; } - public String getDisplayName(String format) { + public String getSpigotDisplayname() { + return this.spigotDisplayName; + } + + /*public String getDisplayName(String format) { String displayName = format; @@ -34,6 +40,6 @@ public String getDisplayName(String format) { return displayName; - } + }*/ } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java index 512b8145..cdcc19f4 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java @@ -53,16 +53,21 @@ public void updateDisplayName(UUID uuid) { if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("set_display_name")) { if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("set_display_name")) { if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("display_name_format")) { - player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); + //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); + player.setDisplayName(opm.get().getSpigotDisplayname()); } else { - player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); + //player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); + player.setDisplayName(opm.get().getSpigotDisplayname()); } } } else { if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("display_name_format")) { - player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); + //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); + // TODO Maybe new option for "fetch_spigot_displayname"? + player.setDisplayName(opm.get().getSpigotDisplayname()); } else { - player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); + //player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); + player.setDisplayName(opm.get().getSpigotDisplayname()); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MetaManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MetaManager.java index 8fc1f0ac..4ecff156 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MetaManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MetaManager.java @@ -51,6 +51,9 @@ public void updatePlayerMeta(String playername, boolean setDisplayName, String d Bukkit.getPlayer(playername).setDisplayName(displayNameFormat); Bukkit.getPlayer(playername).setPlayerListName(displayNameFormat); } + + comm.sendPluginChannelMessage("multichat:dn", Bukkit.getPlayer(playername).getUniqueId(), Bukkit.getPlayer(playername).getDisplayName()); + } else { if (setDisplayName) { @@ -63,6 +66,8 @@ public void updatePlayerMeta(String playername, boolean setDisplayName, String d Bukkit.getPlayer(playername).setPlayerListName(displayNameFormat); } + + comm.sendPluginChannelMessage("multichat:dn", Bukkit.getPlayer(playername).getUniqueId(), Bukkit.getPlayer(playername).getDisplayName()); } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java index 1fac658a..0f43e4c0 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java @@ -230,6 +230,7 @@ public void onEnable() { getServer().getMessenger().registerOutgoingPluginChannel(this, "multichat:chat"); getServer().getMessenger().registerOutgoingPluginChannel(this, "multichat:prefix"); getServer().getMessenger().registerOutgoingPluginChannel(this, "multichat:suffix"); + getServer().getMessenger().registerOutgoingPluginChannel(this, "multichat:dn"); getServer().getMessenger().registerOutgoingPluginChannel(this, "multichat:world"); getServer().getMessenger().registerOutgoingPluginChannel(this, "multichat:nick"); getServer().getMessenger().registerIncomingPluginChannel(this, "multichat:comm", MultiChatPluginMessageListener.getInstance()); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java b/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java index 8b8a3684..d2374065 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java @@ -77,6 +77,7 @@ public final class MultiChatSponge implements CommandExecutor { static RawDataChannel prefixChannel; static RawDataChannel suffixChannel; + static RawDataChannel displayNameChannel; static RawDataChannel nickChannel; static RawDataChannel worldChannel; static RawDataChannel channelChannel; @@ -115,7 +116,7 @@ public final class MultiChatSponge implements CommandExecutor { @SuppressWarnings("serial") @Listener public void onServerStart(GameStartedServerEvent event) { - + // DEBUG MODE //DebugManager.setDebug(true); @@ -189,6 +190,7 @@ public void onServerStart(GameStartedServerEvent event) { ChannelBinding.RawDataChannel prefixChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:prefix"); ChannelBinding.RawDataChannel suffixChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:suffix"); + ChannelBinding.RawDataChannel displayNameChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:dn"); ChannelBinding.RawDataChannel worldChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:world"); ChannelBinding.RawDataChannel nickChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:nick"); ChannelBinding.RawDataChannel channelChannel = Sponge.getGame().getChannelRegistrar().createRawChannel(this, "multichat:ch"); @@ -210,6 +212,7 @@ public void onServerStart(GameStartedServerEvent event) { MultiChatSponge.prefixChannel = prefixChannel; MultiChatSponge.suffixChannel = suffixChannel; + MultiChatSponge.displayNameChannel = displayNameChannel; MultiChatSponge.nickChannel = nickChannel; MultiChatSponge.worldChannel = worldChannel; MultiChatSponge.channelChannel = channelChannel; @@ -257,6 +260,7 @@ public void onServerStop(GameStoppingServerEvent event) { Sponge.getChannelRegistrar().unbindChannel(actionChannel); Sponge.getChannelRegistrar().unbindChannel(prefixChannel); Sponge.getChannelRegistrar().unbindChannel(suffixChannel); + Sponge.getChannelRegistrar().unbindChannel(displayNameChannel); Sponge.getChannelRegistrar().unbindChannel(nickChannel); Sponge.getChannelRegistrar().unbindChannel(worldChannel); Sponge.getChannelRegistrar().unbindChannel(channelChannel); @@ -336,6 +340,12 @@ public static void updatePlayerMeta(String playername, boolean setDisplayName, S Sponge.getServer().getPlayer(playername).ifPresent(x -> x.offer(Keys.DISPLAY_NAME, Text.of(finalDisplayName))); + displayNameChannel.sendTo(player, buffer -> buffer.writeUTF(player.getUniqueId().toString()).writeUTF(finalDisplayName)); + + } else { + + displayNameChannel.sendTo(player, buffer -> buffer.writeUTF(player.getUniqueId().toString()).writeUTF(playername)); + } } From 290bf4aac6e3ffccdbfba5c3c617daccc39173d5 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Sun, 7 Apr 2019 23:33:23 +0100 Subject: [PATCH 10/16] More debug messages for display name channel --- .../multichat/bungee/BungeeComm.java | 10 +++++++- .../multichat/bungee/PlayerMetaManager.java | 25 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java index f777ae51..b47e5461 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java @@ -357,9 +357,11 @@ public static void onPluginMessage(PluginMessageEvent ev) { } } - + if (ev.getTag().equals("multichat:dn")) { + DebugManager.log("[multichat:dn] Got an incoming channel message!"); + ByteArrayInputStream stream = new ByteArrayInputStream(ev.getData()); DataInputStream in = new DataInputStream(stream); @@ -373,10 +375,16 @@ public static void onPluginMessage(PluginMessageEvent ev) { synchronized (player) { + DebugManager.log("[multichat:dn] Player exists!"); + Optional opm = PlayerMetaManager.getInstance().getPlayer(uuid); if (opm.isPresent()) { + DebugManager.log("[multichat:dn] Player meta exists!"); + + DebugManager.log("[multichat:dn] The displayname received is: " + spigotDisplayName); + opm.get().spigotDisplayName = spigotDisplayName; PlayerMetaManager.getInstance().updateDisplayName(uuid); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java index cdcc19f4..f91b1079 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java @@ -43,30 +43,55 @@ public Optional getPlayer(UUID uuid) { public void updateDisplayName(UUID uuid) { + DebugManager.log("[PlayerMetaManager] Updating display name..."); + Optional opm = getPlayer(uuid); if (!opm.isPresent()) return; + DebugManager.log("[PlayerMetaManager] Player is present!"); + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true && player != null) { + + DebugManager.log("[PlayerMetaManager] Fetch Spigot Display Names is true"); + if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("set_display_name")) { + + DebugManager.log("[PlayerMetaManager] MultiChat is in charge of display names"); + if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("set_display_name")) { if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("display_name_format")) { //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); + + DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); + player.setDisplayName(opm.get().getSpigotDisplayname()); } else { //player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); + + DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); + player.setDisplayName(opm.get().getSpigotDisplayname()); } } } else { + + DebugManager.log("[PlayerMetaManager] MultiChat is NOT in charge of display names!"); + if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("display_name_format")) { //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); // TODO Maybe new option for "fetch_spigot_displayname"? + + DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); + player.setDisplayName(opm.get().getSpigotDisplayname()); } else { //player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); + + DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); + player.setDisplayName(opm.get().getSpigotDisplayname()); } } From 79a9522abadf640f7c00faf8fb80800bcc599761 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Sun, 7 Apr 2019 23:43:12 +0100 Subject: [PATCH 11/16] Fixed error getting the correct spigot display names --- .../multichat/bungee/PlayerMetaManager.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java index f91b1079..d21ca316 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java @@ -59,9 +59,10 @@ public void updateDisplayName(UUID uuid) { if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("set_display_name")) { - DebugManager.log("[PlayerMetaManager] MultiChat is in charge of display names"); - if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("set_display_name")) { + + DebugManager.log("[PlayerMetaManager] MultiChat is in charge of display names"); + if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("display_name_format")) { //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); @@ -75,10 +76,17 @@ public void updateDisplayName(UUID uuid) { player.setDisplayName(opm.get().getSpigotDisplayname()); } + } else { + + DebugManager.log("[PlayerMetaManager] MultiChat is NOT in charge of display names!"); + + DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); + + player.setDisplayName(opm.get().getSpigotDisplayname()); + } - } else { - DebugManager.log("[PlayerMetaManager] MultiChat is NOT in charge of display names!"); + } else { if (ConfigManager.getInstance().getHandler("config.yml").getConfig().contains("display_name_format")) { //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); From c15e8b1b529ef081a540a6089fb5dacd7a046be2 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Sun, 7 Apr 2019 23:49:38 +0100 Subject: [PATCH 12/16] Stopped multichat:dn messages being ignored --- .../main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java index b47e5461..5ab3ee2c 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/BungeeComm.java @@ -182,7 +182,7 @@ public static void sendPlayerChannelMessage(String playerName, String channel, C @EventHandler public static void onPluginMessage(PluginMessageEvent ev) { - if (! (ev.getTag().equals("multichat:comm") || ev.getTag().equals("multichat:chat") || ev.getTag().equals("multichat:prefix") || ev.getTag().equals("multichat:suffix") || ev.getTag().equals("multichat:world") || ev.getTag().equals("multichat:nick")) ) { + if (! (ev.getTag().equals("multichat:comm") || ev.getTag().equals("multichat:chat") || ev.getTag().equals("multichat:prefix") || ev.getTag().equals("multichat:suffix") || ev.getTag().equals("multichat:dn") || ev.getTag().equals("multichat:world") || ev.getTag().equals("multichat:nick")) ) { return; } From 186939119d830dfcb769858c7ed16613d5c59bc4 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Tue, 28 May 2019 19:46:24 +0100 Subject: [PATCH 13/16] Updated POM to 1.14 --- multichat/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/multichat/pom.xml b/multichat/pom.xml index 9c83b735..1cde02ee 100644 --- a/multichat/pom.xml +++ b/multichat/pom.xml @@ -110,7 +110,7 @@ net.md-5 bungeecord-api - 1.13-SNAPSHOT + 1.14-SNAPSHOT jar provided @@ -118,7 +118,7 @@ net.md-5 bungeecord-api - 1.13-SNAPSHOT + 1.14-SNAPSHOT javadoc provided @@ -126,7 +126,7 @@ org.spigotmc spigot-api - 1.13.1-R0.1-SNAPSHOT + 1.14.2-R0.1-SNAPSHOT provided From ebedd5a1755faf1070a5b186a73a65f2ac4136c6 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Wed, 29 May 2019 00:23:51 +0100 Subject: [PATCH 14/16] Fixed the server name issue introduced in 1.14 --- multichat/pom.xml | 2 +- .../java/xyz/olivermartin/multichat/bungee/MultiChat.java | 3 ++- .../olivermartin/multichat/spigotbridge/MultiChatSpigot.java | 4 ++++ .../multichat/spigotbridge/SpigotPlaceholderManager.java | 4 ++-- .../multichat/spigotbridge/commands/CommandHandler.java | 2 ++ .../olivermartin/multichat/spongebridge/MultiChatSponge.java | 2 +- multichat/src/main/resources/bungee.yml | 2 +- multichat/src/main/resources/chatcontrol.yml | 2 +- multichat/src/main/resources/config.yml | 2 +- multichat/src/main/resources/joinmessages.yml | 2 +- multichat/src/main/resources/joinmessages_fr.yml | 2 +- multichat/src/main/resources/messages.yml | 2 +- multichat/src/main/resources/messages_fr.yml | 2 +- multichat/src/main/resources/multichatsponge.yml | 2 +- multichat/src/main/resources/plugin.yml | 2 +- multichat/src/main/resources/spigotconfig.yml | 5 ++++- 16 files changed, 25 insertions(+), 15 deletions(-) diff --git a/multichat/pom.xml b/multichat/pom.xml index 1cde02ee..c6b8d4b2 100644 --- a/multichat/pom.xml +++ b/multichat/pom.xml @@ -5,7 +5,7 @@ xyz.olivermartin.multichat multichat - post-1.7.3 + 1.7.4 diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java index 2398916b..a4dd1e42 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java @@ -39,11 +39,12 @@ */ public class MultiChat extends Plugin implements Listener { - public static final String LATEST_VERSION = "1.7.3"; + public static final String LATEST_VERSION = "1.7.4"; public static final String[] ALLOWED_VERSIONS = new String[] { LATEST_VERSION, + "1.7.3", "1.7.2", "1.7.1", "1.7", diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java index 0f43e4c0..d6638120 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java @@ -45,6 +45,8 @@ public class MultiChatSpigot extends JavaPlugin implements Listener { private static Chat chat = null; private static boolean vault; private static boolean papi; + + public static String serverName = "SERVER_NAME"; public static Map playerChannels = new HashMap(); public static Map channelObjects = new HashMap(); @@ -106,6 +108,8 @@ public void onEnable() { SpigotConfigManager.getInstance().registerHandler("spigotconfig.yml", configDir); Configuration config = SpigotConfigManager.getInstance().getHandler("spigotconfig.yml").getConfig(); + serverName = config.getString("server_name"); + overrideGlobalFormat = config.getBoolean("override_global_format"); overrideGlobalFormatFormat = config.getString("override_global_format_format"); overrideAllMultiChatFormats = config.getBoolean("override_all_multichat_formatting"); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java index 7809257f..cb49df40 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java @@ -18,7 +18,7 @@ public static String buildChatFormat(Player player, String format) { } format = format.replace("%NICK%", NameManager.getInstance().getCurrentName(player.getUniqueId())); format = format.replace("%WORLD%", player.getWorld().getName()); - format = format.replace("%SERVER%", Bukkit.getServerName()); + format = format.replace("%SERVER%", MultiChatSpigot.serverName); return format + "%2$s"; @@ -35,7 +35,7 @@ public static String buildMultiChatPlaceholder(Player player, String format) { } format = format.replace("%NICK%", NameManager.getInstance().getCurrentName(player.getUniqueId())); format = format.replace("%WORLD%", player.getWorld().getName()); - format = format.replace("%SERVER%", Bukkit.getServerName()); + format = format.replace("%SERVER%", MultiChatSpigot.serverName); return format; diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java index 8747544d..c209e17d 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java @@ -55,6 +55,8 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label, SpigotConfigManager.getInstance().getHandler("spigotconfig.yml").startupConfig(); Configuration config = SpigotConfigManager.getInstance().getHandler("spigotconfig.yml").getConfig(); + + MultiChatSpigot.serverName = config.getString("server_name"); MultiChatSpigot.overrideGlobalFormat = config.getBoolean("override_global_format"); MultiChatSpigot.overrideGlobalFormatFormat = config.getString("override_global_format_format"); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java b/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java index d2374065..1fee8a2f 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spongebridge/MultiChatSponge.java @@ -62,7 +62,7 @@ * @author Oliver Martin (Revilo410) * */ -@Plugin(id = "multichat", name = "MultiChatSponge", version = "1.7.3", dependencies = { @Dependency(id = "placeholderapi", optional = true) }) +@Plugin(id = "multichat", name = "MultiChatSponge", version = "1.7.4", dependencies = { @Dependency(id = "placeholderapi", optional = true) }) public final class MultiChatSponge implements CommandExecutor { public static SimpleMutableMessageChannel multichatChannel; diff --git a/multichat/src/main/resources/bungee.yml b/multichat/src/main/resources/bungee.yml index 75f19063..0c001e04 100644 --- a/multichat/src/main/resources/bungee.yml +++ b/multichat/src/main/resources/bungee.yml @@ -1,5 +1,5 @@ name: MultiChat main: xyz.olivermartin.multichat.bungee.MultiChat -version: 1.7.3 +version: 1.7.4 author: Revilo410 api-version: 1.13 \ No newline at end of file diff --git a/multichat/src/main/resources/chatcontrol.yml b/multichat/src/main/resources/chatcontrol.yml index 9eb7d726..5e7f1d5e 100644 --- a/multichat/src/main/resources/chatcontrol.yml +++ b/multichat/src/main/resources/chatcontrol.yml @@ -8,7 +8,7 @@ ################## # DON'T EDIT # -version: "1.7.3" # +version: "1.7.4" # ################## # 1. Chat Control Rules diff --git a/multichat/src/main/resources/config.yml b/multichat/src/main/resources/config.yml index c8b3de3c..76bdaa8e 100644 --- a/multichat/src/main/resources/config.yml +++ b/multichat/src/main/resources/config.yml @@ -8,7 +8,7 @@ ################## # DON'T EDIT # -version: "1.7.3" # +version: "1.7.4" # ################## # 1. General diff --git a/multichat/src/main/resources/joinmessages.yml b/multichat/src/main/resources/joinmessages.yml index 8fbdfac0..6a6978cc 100644 --- a/multichat/src/main/resources/joinmessages.yml +++ b/multichat/src/main/resources/joinmessages.yml @@ -8,7 +8,7 @@ ################## # DON'T EDIT # -version: "1.7.3" # +version: "1.7.4" # ################## ############################################################ diff --git a/multichat/src/main/resources/joinmessages_fr.yml b/multichat/src/main/resources/joinmessages_fr.yml index 7b49af11..0e79b869 100644 --- a/multichat/src/main/resources/joinmessages_fr.yml +++ b/multichat/src/main/resources/joinmessages_fr.yml @@ -8,7 +8,7 @@ ################## # Ne pas éditer # -version: "1.7.3" # +version: "1.7.4" # ################## # French Translation by Nogapra - Thank you! diff --git a/multichat/src/main/resources/messages.yml b/multichat/src/main/resources/messages.yml index de44d257..cbe496c3 100644 --- a/multichat/src/main/resources/messages.yml +++ b/multichat/src/main/resources/messages.yml @@ -8,7 +8,7 @@ ################## # DON'T EDIT # -version: "1.7.3" # +version: "1.7.4" # ################## ############################################################ diff --git a/multichat/src/main/resources/messages_fr.yml b/multichat/src/main/resources/messages_fr.yml index a2588f2a..5626fe6c 100644 --- a/multichat/src/main/resources/messages_fr.yml +++ b/multichat/src/main/resources/messages_fr.yml @@ -8,7 +8,7 @@ ################## # DON'T EDIT # -version: "1.7.3" # +version: "1.7.4" # ################## # French Translation by Nogapra - Thank you! diff --git a/multichat/src/main/resources/multichatsponge.yml b/multichat/src/main/resources/multichatsponge.yml index 3f6c2f2e..69f6e091 100644 --- a/multichat/src/main/resources/multichatsponge.yml +++ b/multichat/src/main/resources/multichatsponge.yml @@ -8,7 +8,7 @@ ################## # DON'T EDIT # -version: "1.7.3" # +version: "1.7.4" # ################## # Specify the name of this server here for the %SERVER% placeholder diff --git a/multichat/src/main/resources/plugin.yml b/multichat/src/main/resources/plugin.yml index 4b058787..5d914f8e 100644 --- a/multichat/src/main/resources/plugin.yml +++ b/multichat/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: MultiChatSpigot -version: 1.7.3 +version: 1.7.4 author: Revilo410 main: xyz.olivermartin.multichat.spigotbridge.MultiChatSpigot softdepend: [Vault,PlaceholderAPI] diff --git a/multichat/src/main/resources/spigotconfig.yml b/multichat/src/main/resources/spigotconfig.yml index d5ac1277..46f2500e 100644 --- a/multichat/src/main/resources/spigotconfig.yml +++ b/multichat/src/main/resources/spigotconfig.yml @@ -8,9 +8,12 @@ ################## # DON'T EDIT # -version: "1.7.3" # +version: "1.7.4" # ################## +# Specify the name of this server here for the %SERVER% placeholder +server_name: "SERVER_NAME" + ############################################################ # +------------------------------------------------------+ # # | Global | # From a4c5be4acf68ee30857600ed8f91957a9ae4d1ce Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Wed, 29 May 2019 00:25:54 +0100 Subject: [PATCH 15/16] Removed unecessary import --- multichat/dependency-reduced-pom.xml | 12 ++++-------- .../spigotbridge/SpigotPlaceholderManager.java | 7 +++---- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/multichat/dependency-reduced-pom.xml b/multichat/dependency-reduced-pom.xml index a3ee3196..9736f338 100644 --- a/multichat/dependency-reduced-pom.xml +++ b/multichat/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 xyz.olivermartin.multichat multichat - 1.7.3 + 1.7.4 @@ -134,7 +134,7 @@ net.md-5 bungeecord-api - 1.13-SNAPSHOT + 1.14-SNAPSHOT provided @@ -158,7 +158,7 @@ net.md-5 bungeecord-api - 1.13-SNAPSHOT + 1.14-SNAPSHOT javadoc provided @@ -183,17 +183,13 @@ org.spigotmc spigot-api - 1.13.1-R0.1-SNAPSHOT + 1.14.2-R0.1-SNAPSHOT provided commons-lang commons-lang - - json-simple - com.googlecode.json-simple - snakeyaml org.yaml diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java index cb49df40..e0f37e44 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/SpigotPlaceholderManager.java @@ -1,6 +1,5 @@ package xyz.olivermartin.multichat.spigotbridge; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import net.milkbowl.vault.chat.Chat; @@ -23,9 +22,9 @@ public static String buildChatFormat(Player player, String format) { return format + "%2$s"; } - + public static String buildMultiChatPlaceholder(Player player, String format) { - + format = format.replace("%NAME%", player.getName()); format = format.replace("%DISPLAYNAME%", "%1$s"); // This might work? if (MultiChatSpigot.hookedVault()) { @@ -38,7 +37,7 @@ public static String buildMultiChatPlaceholder(Player player, String format) { format = format.replace("%SERVER%", MultiChatSpigot.serverName); return format; - + } } From c267daea3cb6822745447b772ecde305bacd9996 Mon Sep 17 00:00:00 2001 From: OllieMartin Date: Thu, 1 Aug 2019 15:05:00 +0100 Subject: [PATCH 16/16] MultiChat 1.7.4 Release with BStats Metrics --- multichat/pom.xml | 37 +- multichat/releases/1.7.4/multichat-1.7.4.jar | Bin 0 -> 254467 bytes .../multichat/bungee/Metrics.java | 766 ++++++++++++++++++ .../multichat/bungee/MultiChat.java | 6 +- .../spigotbridge/MultiChatSpigot.java | 16 +- .../spigotbridge/commands/CommandHandler.java | 6 +- 6 files changed, 790 insertions(+), 41 deletions(-) create mode 100644 multichat/releases/1.7.4/multichat-1.7.4.jar create mode 100644 multichat/src/main/java/xyz/olivermartin/multichat/bungee/Metrics.java diff --git a/multichat/pom.xml b/multichat/pom.xml index c6b8d4b2..a918d343 100644 --- a/multichat/pom.xml +++ b/multichat/pom.xml @@ -48,31 +48,12 @@ - - org.apache.maven.plugins - maven-shade-plugin - 3.1.0 - - - - - org.bstats - - xyz.olivermartin.bungee - - - - - - package - - shade - - - - - + + org.apache.maven.plugins maven-compiler-plugin @@ -87,14 +68,14 @@ - + - + org.xerial sqlite-jdbc 3.27.2.1 diff --git a/multichat/releases/1.7.4/multichat-1.7.4.jar b/multichat/releases/1.7.4/multichat-1.7.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..40a291fea48a278ee390ee45e04e5b0332be798c GIT binary patch literal 254467 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 z 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 RTN1IJO!(AB>xo9XnEC$M39MXKmP0 z`FBLBo>$iDq?T_jOvHagsg4JyB{^w1Iy>vLeYOQjP#p8(*l>2W);K+hFWQu>sW-^O z&X?5bIGU(eCe_o~nb{I?EpZ18rZd%4w)Lp7i|T8xx%&64=~#@4NG3IW&m{7Zgw8l# zo79+FGjzxysXRT*Tb${Mf%>ro@RIS5)g+1U5rY?TpqGL9gf9LV8N~l<1STmXrMl^Y z98cPfs&v6A+GuU%E25=@IL{Gfg>|JTrFU;TtAF(*DE!w~05IqFn||Icq^@U{??P&y zIs)^VEAk7S^_{Fb$3l-67CRcO>RDj2qJfPa*PM;T%Vb3`YYA{;72vjA#RWV3XoSUT z731;g#D|us!Acq!)L$cN*dxBr$Tn}+>*#(B4*luP7X(5-8Hc#zWc$wZ`-H@Au4-(K3 zE8$X8D8n?NRh<%e>Q${f{D|E4rv;5TkkEVnG-_5H^B z+jOAJm&nF;0|1q!1enc}Wb5rv2xb)|z(uBTl=o-$oiO|sn;FWnc>pJZ&m!bP_4Zo{ zu)4?GQ>?W*?}LlLC8?_wulh;Ai8?*x8sinUKsN`{&e0S8G-k{3j3X!tceOY2ZOSyC zo1-mU3Pm=Rq+iL@y)A@JN?h+DfJX8nVh^zFxX>Mpvn(EA2!7-|dq+bvoHuPpUnOCc zTwPFqkEk&=YsfE&ydaFxD)tG(qXOK9if_ zZhJVAjf(svD@U<4Ktd`XNwEaM502_ayt53{(k`OnM#Rpbb4RLX0FDFs99!+2fX@Di z%6S=b%K7wX&LZsPMgiHh3wkN$uYf|MR#0jq-%7km4?ZMTyZQeOYdh zRjC+7DW1V2_f(j=H;s#gr+6Q<6di+1!}c9;(=fgk6NXt5P3K1`J^S`AA;g@*C~*5r zmsazoOB47nl)?X%|7=XmO~v$WjI50RCtae+JL4+Bn#RSZ&iO^{ysPe+6s$~UQ*`Eu?}AM6qpM3i0)Y$H zd@%3Px$CFT_EYBO_UFe5`ZxMrP1INWCd5|;ieyIzckP2XIfjC~@BI##^7eS>C=q3H z_H2QSto6E2I-`N^@3`0`hfWaZ>`fg^s0;^&I?#Xi*SBTXMc^1(O<<6w@w3eR-OgQQI6NKw zOUSDkW-7Q<`1-5Ks)BCsfP@eU!E3F&?ow9*OMM!_GvEPrC1Dvoa$ZEk^x7Et0(Ies zs0s^MniRLDU1&xweMOuG;c#c!(Fz=NNSpZW7$4W>O(W5Qjh=Y7B&B6B%#un_xW0@}+`fE!L;*nP~ z4rU*Kt~|x$sZL@#-;=UT*R0Ds+=aL-bp-d6)l_0}DKc#|tB>nTwshhJOj(#L{&eb} zk0!&+|8=TZis1O}g8ON)rQo7_qAVVrJg${H=4breOTw+LN1!loLo2BmS{(VS<1T~W zd(PoDkm+&ZY<@m%0lh-`i9*xrz@%)(W66u|<3Od#nk{Pc&Fk{Wv=#2VyXOr`jB0B0 z9nroHJfSUJ)uvZEac9))(lL`z!xHYwr_xkM^xb-p{;Cc8a-Vo{ybDy7$tB zZ`LfcVGY%PZ%JS2Jst8wg>)vn)zh&<*B?ze^=3XIq1`Z9&ktfeC zl%duNIJ7p}{812cjP0c{M9yA%4N)3xQXaLbN-Esw5=z`jLKV;j`f%g9*-sl}eKPu( z1gFBJD8k6%3jIMfar76zCyYXot>>BCXH`4y)xN*&;?)*t0Z*o+w{Lv*0Sxn=J(bCs z3tZFRQ-*wodUrz01VW9DLJMuze>^0#3HCIj)lR~@dgfWe8VU0#J~6xS^i7RR?XAAH zFgWFeTz@H%l}S6=p;LJiD++U}8}bVp+*f>6qam8*IlQiyA6~CST zV>*&ezCA=i8#Q|fRvBd&daqfqJyZ~UODW=#66q9C{Eha4K9dP`4GA%!IA@?X(2Kch zS9wXwjg z|D2e}YJJLhJ$-w5e~0*O={Dofro}SjcY{I$Y9C?wM*%t+mc+ggRn=aa9@!(6#SWMK zo++_UIshxoY-|KF2|8`B*(3=8Fz72o~lHcKHn)AIKt5kr@}Oo zkYZ*@z-G8kEVtxF@(Wjkcu8DETs^&&x^f>ps4+)+lo&66f$5~As1d8_9aSdYUER$6 z>v`$zAi+wpRwBll>nk#U;>exyEP}LXh>45SA8}#v=>xd0Mhlg`D;F&&bmj9TjoaxH z5Y~oxQ!lpKFD57NC`^8y5&LA}BY*6{crSeKt5u$UER-CId~ABWCgbj>Dyc+(yvflQ z!z(10#+}?pi#(sg_=R(nnlPXXYA3tY-x~0y!I2}J2*`D8kCKJ17M8c3-q{WfrC^=Z zTd(q^k@hSU>0)cxY@C2xQ6dicyIwmMj;EQsb$=Zk;)3Xy_=Ypx zJ?0gx3&60s^bfP2tMfuZN%i+(mJNX+OAV|`JlH=w`p4vYZb)p`C`Fg~s`M#6lJvbkTLLH`wV!T)UKPW zjEo)r5s{sVXA0{gD8rxFkVs7}O1Xgr{5b-lz28|2D6PdQ(FMbb$ubO`A!id z3{(ayDWIB(pT9X$@hRQNgW((Mz_}7VgTX-aDc52MfJss%9dzUoA@))&6&#s5JhX-t zpmc@o(b<%XImdfy^m>2^rX=k4Xnml{ue zvY&)%2PU-$jI7Fg#;dgd=&U(ZAUz#Y8g~(%??Ja#w4w}}sznrPRT~{*Cx%^1Uq1K! zWEg$=eXi)a)MdPuq{!shMV>MD_UDX>N-n8~A zzXp&jD=V(@$g5vfKetKkJyyzOQk6hh=%)(|i)hl_2 zzMiQhJ{k}#J>onxpNQUdZfOjlZ^i1WnT$-M*BY*)EdOXr`W547N#Dmd7A`^GKV;0)MUBTi z(XpG?BD4*1S9Tg*>Atx_Jv2k(4|_$#Gkylk;WaP4G8 zy~|_Ll2q~4rlgNUGZ?1g?NxX^3-QUt;y`S@YI9r9a)N)iU68UIYdLTb0 zH(P*b(nmjM#dm*`+rMutFgr2eCjoMT%V0?08F>2F>GR<}{KFj{uz@aFdkSv|$q%k(90S*~-;-&)!al;j z%bB0~#@KzMujW2cbKq}G_i z2-)Dpcbmnve^R@5Bs!)*iiQ{^sHlb*MsN&=-ci}hAQTH^EU!DX4QJR;llOb}a<=?s z|K|b~`+?G2>uY%`_?2?F{!f#mt&OR%frGh`sWH8fv4OMcKT=Gl!ln$e0Ln+vrpvl> z?SX8Kiup}-P7PHEI)Y)%skD4Nl}H5oyh|Ox#x;GD5^-Bdw+Gv{2MkHt>l^-8%bYOGwV*1l4UJ=jY})xdHT;gYyAv^_)L_`i}!`U!Mc}dpqr0z_DgnE*Gn0*;1 zx0Pi3g5O4x(xkUo8iIoZ4?dwn34iK&F0CL+Kd6>>p;OM1=?Wy%k-Z)o@9>aohb=&D zk$swPoj`UE*4SzIkZaW9zeAMfY#XGMWZ)Ep-Y8;FUPtk{^Nr2ulJg6kA($r@@fu55 zX34-Qi?Fi#f;GvegNf`D5`;2pTzq^RViaHv7taXCr^o$C=Ot`#y^>d!jXA&$m^qp@ zIE8E)2TK&kdvaC`JEK=f{Wtgzj7#hoeKX_DmS|_bF)c`MF?^ovbvdDRWt7>cZcfjVe z75Cb+a~Rc>AKQsQ+J&xt9~KF02Mlc zbMoOz*h>jtZ6@GiQ$b7VeeZ7Uu9|~v3-~3KId)K9p^;5`Ia0c`YMQ&g+MJ?4g{MfK zn2JEIa+^^&vsvqWytM8K34oS`nYMNao;ElgO9x@~e3#DtL&-8OO!EeYXIZ#cp6DdT zQ$~Ea>QA?ced9q(5MOq$c$&1qID;BDD)3N?6QO^_xKv(B_NDNmI+SEFkANroC}8gD zn%72cV+tGdK%vW<4YT<8P)Op1>-eKNE&l@#7qMgET0#^@5v#~~Vy6+Pj_W99CU%-K z><>(c67HC-DcGmoVx0Jd=VWZip4Hjh$mL;((28k9#?1U>CdNEaO&|n24(Me4lb%a= zct)gBj#t80wR8At6_!iQW~UQ$nGu}`MFWs_&t>Y{ykkZs4TRqE6Gd%6`bC~gs?}z} zd0Fb?V7cvC1zPB!3WQioiI)mu;_lEoE64^fNSqWp{ zbeTCH3Pt9c1qZ7?GcvqC8>&QFKs+6R6AF$(G;l-x0Ja$hVs_M2GecnmA|3W*$u>>nlG zz`_zc?07%%`1a$U^`e^)Ts!NlUT}S3`=$R2_2Pevy|0_g*TV5%;rG9Y;!fzec$%Z#J&8_VUH~F6dZi$A#G>T`LzLanNkxBA_$U zfhtg`Ja5LqJ2#)sgoHZCcT#rm!7N%U?u)5aM~;nfyG>MJf0|<2(lrY8^NfNn%K|v6D32dG23HI0`M^2piBd3 z(nkz~b`N|lAb?$pL$+fO2_V2#7^ER=`Vz8k0sxOGhApuoVAaJ^EP4p7cRdpp=yz^% zSy2I(9jP3~0#F_O*>y%;)q<q^ z!VQa+mtdS$0u{IL*^uU>K`<)jBIW)473cl3h*cWtSQL7BR*<{iJW%I8wxGgUmSvy#H^!Gdp=Xj}2ht|i znrIDnm+h|$Vy-?{p%^z-?iQi6SPBrtWVV~_8Tp@q5Xv+S+4WU~WWMG!#s7;y_?p<< zjUE2u1o^**gR-V7wlc~G92AaNkpyCyypWkBuG#o+C3yu)Qd(Lp5G08P9r#gmrVFh) z6Pe%7$KA*D*Q@B(UdN~P@E^#Zzu_0X$v_h&%+$)M)g5hKZ@oRQ>ZkE#eSHBt&^}_j zs9F;HOeP974CzBSTat!&s&j7m_{Y;A!@=hF`}rtnv0v_%^UoN|9DKViQ#X`?+sf

$yv&c?x*iNC0$*A`okM!CB-<9do#+zreLPvd>7NPd;eHzo>;=P~-U-OF#Yx4537 zKdK-TF4S%MS`CtErkn+Z7U%41*;+m>??)e_V_?i?SHU+-a-2C3<sLc0!guzom;SY0za~OGh-f)bK;Z}@tYw`F_*9u}1afp;W_&}(T zTWco&n5KN_ZGf_TG<4wpk74OwTKCuj>U8UECPUGqZxL)ZdI-gwNw6Dz)={XS*}INW z9e&Cv97}+TeV95+Jy2oL^p<`G*S#I=m0zLXu%3~0FJM-0aS+DV8c&&Zd@F+h;Hbd&B3Ql84nUX78 zGN#BxVrl;EPmhL5gNA+v{ug1)^JBS)bVc0LDq8!9#+5z-bgcF8{N%C z{A*p!x>+wW@tJK2Q9LT7#a-TqtUT$`WZ1FCZHl`@Aet;gB-?W8r<+8$d&~7Occir5 z%;^ahdU?-oB(@wH6NRfgo6go43dl88NhVvfbko8l{_W8zwSC z6RQ96T|^U-m_v}b|ICe=?HV2Fo(`liJQU5tqb6k|`<@SEG7dm{&qVWR{GxGe=oW&> zyAP0^=^kP32>K3`x>YT}Gq^^a!^}Fd?iI_qzx(NHAr=Zbhr!{^jM0<+#|;Ihp+3SM z#XgH`CJ6G-I!-;OUcLiYJlUYfgAM3PghV=*8uA4wLpvII`37xd7&ij9OQxPil6N)t z7Xe9@u~%Q@v$VBayc}X)K86kn8kek%S?$-M$Kk&&bQ1-=hbCVaI#j^7Z$kgAbnzby z$$ys1LX|Veuh$8mn{1=fbKnxW{9mA^c?C%N@PY(Y{E(u;7zJ>!PU)tTJ~C{!^rRhZ z6k$`R6#I;uaIZhiE`fj^3`J-SKUHIpe1R&6!F5*t!hykM)9MD?bjD^s*ELoqv8Ds3r4w5+xy9#RX>6gr;}|Ge}V5U!PG5Us7gXnlV7352qq2VY{#}uiI7xfulIR)|jnpq7-0Vzv*shGkJR+7<8hSLTzg+(&X{_41@UEM;5TkHF@ zO&bi`qJmf!2?yjiv0kc5diP!Eq@%f{-H?DFW;qOTix95#*CaPe z9)PDU8C;TSw_IAJW{OR)&(zt8mK-&;(!DR(t%v&L=Sk^UOosl=)?BfNr)MQB9?Kn) zxjX-nrDAM4!W#g4=kdHiE?(kOZ(EVD67Kv{i@hHm?(ZB3&GiOWal3D12WH;dAR{wo znbZeJs{tl*tLs#MtxF$W?&%Tw@ zzmh7$_PjcKp2(`1IAEc}=QLO9Y#evb068;DQ|MZU#{_y&9 z#vX)Ed<*)^?=gm6Z1ivjERT`X52$uc$-;ydHcGC>=qlL4$>W#UdDLxK2 z;lk*-y~QH8P=%y6o%?Z*#B{SE=Fs+vvm=ZUM+8pPjkC~=(RmLoY9Frga-XHrb=UKL zNAv@u9V|NLHnOA1g;2mNeb=o?@Ln{}N_iGtPs=^HdB^5C8FwVq^9D zUg@1la7cdENVhQeEZ8+xAy%W;D58Wyf|DTMeo~20@PK@%4Ah6*T^uJNiOemhu+5_} zNm~}8xLp*MokSk@uV`K!kOwBDoX~pM8AKT25Z-89a)VEhf3|(13 zkDL?XI(!ytdSqi_deM@gN_ilUcc4yjRqQSZSh0t-HuIAZ6BBz62n<~FO+-)_#3u=4 z*v{1M-V@CT`}s7*`?TTM<(cLB@w{D}{r#G(17Q$P4Mb3Wp(l(mTAy{r!d*v?1p2#Z zPR^1I3Zj^w0SXsgNpE-_*iRsnNIpitFlz)14@z(QjUC{s*AsR5b>a4%(P{`H&kYP; zsX-K+kK|enh4#5-?L!O&e{lHp#tj93m>i5xJz7?{R`JB=*Umgh_ACOQL3@+0lAv|n zLjzDQctRZutKDjuOPvm&p_9#d95c5;T3_V2c5l^Kg(Ub#|yL%F!0vY)ifXw_DA;G{fijfEvP%Bd2~ zc`3$Be$8odf=#cGnnhT?yqi)OCtMg!(q52U9Y#OKI9~5SS#MUXHI5&@C00h&-pRAz z0y_m!;eTHVC;nJrE9pw>WAGSUpt@4|t&!5ve4w%Ltb@~{$SQTr3BNm~G0YDVw$=)~ zN4y?kg?`6Diaq=Efp>i}o-`vdipDd+QAKcmrRG9&>=!wWvD+4-4r(pGS(zB+Yg4>} zh~kg(TPOG|au3+xC0Af(vdIF9p6+hVveLV?B2re`p*=p3Jj00!b@h| z`C$?kR|2!QV*gg;Fz8jR_H`2wbQv3eLA_2nYoje!O#ghWu3Jw8wwY$7#e1Xq@`1;( z!xJhXEJ7jC`Bh@+0B^O8hq1IeErYu{ERk4p>HR&`&{}j|>9p#8C3bm-inKg;nZ2Hv ze8S+{?}O+k+@!mn+bnJY`#qWbumHfw&yW#g{EG-CCmrZ$BeNFVvgRBdQn zn7poUBmw+sg-JS|FVfF==e~7p<9Foz2G_l;r$wDF?KHR>%<;mOxalrYI6blmi>C9gSR~ zhJCHB=BI5JEnKewt(>_3I{^9o0_5dXp~OW*vM#=zbQJ)i9Ka+JTK#e!l{#y6nKHz~ zPSVJ>RGqA;6%+Q61AF0N9?wjnN3RQGWyZu=PtvkVk)%qEBS=X4=#p`XGdidZpU)WbCC3Du}ae35$ZhMhP zJSKY0jU2j!5;l>0zH5#|Pad)p?_5LsUJEFX>xkedX=nzv$5H!L6jX$V)U z5hXrJ5^xPkKDIvw)g_KHuEbTUHeXo&$NFLse4bqMia5I%?myXfNTWMNG`&qXO z#=-Y48U%_pRqMjmfHvRy3iO}-y_4%t<&E0csZz*bopSap&eeu)da?&V3{<*-igxz> zUa!fnA0mdJ4z_%XYZH$(k!NOzTyrwp2K>UpHjpH0pl1na!(xlS9@yBPcMff%T#%jU zxc5>N^zPFdzOb$$&o;@Qi(O)u$VvUa5P4AE!~yiL&y_m<8@zMwBoI2-v4naIxDE zH@zU5#>?6WHoWhB=lIR+Mtp!%kicz^=PGZR_GxGBhGILk&oSmY%ynFc4w z`}0w5Tc1VF2c{8EAVUMIaK|XCU6ds z4CG;PlpfV0kwa1U39%B*%Q&Q!?70nJyX4@+7xAyS#ubAO!3Q1@FRGB0H0nI)fYR)m zWTp3pCr0ci0nv=F$c~dy6jtlb(>mA>uqg+@os6D!@GZh?nHfAhgEKowo|26+s1(Nz z12Dqg|AeKAiC5zG>psZu+cY;7vBuPC(l%9{Ex9zW4Y$c&*fh6a*to7QT3g3vIbKPnK*fi^ z`}}D?;@&}3yOF1mwZ7bY%pPQ*8XOABIE-$S6c8~O}5wMLqF|I@LoE3JJYykZs0_=X+ zgK!g0=^#?74%@)@xF&v6>z8GD%Y=x(P6Kv7?ciTW_w8jXz12g&d@)u(iME%G-2_#9 zsQSCdu5Gb=igveI-?W-OgXP|eA-a3$S>KX@pJ;Kq=Fiy*Z}dKud+b;rvIAWwgBBeJ zgP;4&br-Ho9hJLJSRVvCl(1K39F>SHM3Guplvu5-X*u$tB4r|JB86D)EVmW~mP$hg zW_cpZA$Rv$pYPTmwZM11Gg2 zK`Mw6$BnXr59dKJsf^S{_zH#V?HomlYBCkN(c?V@AhijY(~*3TtGh&N3b(4-3|TT-RK*R7ps6$Xlb zW`&9;*XSB!Xd0>h^hJXjs7fh`bz}MsWUdzgX8y3tsU`s8#&so3J(Z;0h`TotfiG&* zsth&S9xmeeD2(Z@)LnwDV6q^#X@J&Z=^_xy1q1Tzr&_|w&nP_FP^X13?Al+moHX;& z^ity=LUgR-Fz>B&wr$3ef}3j(9j!Jjlb+L1`tx!F)c8NDGg7aTRn zn24ZQd^ccee+?{L4y8T9`4?x-Gg#R~NF1AFXk*i%R3EQ|dvjG5ItLzHt&&oCD-}OD zL3#2QOO}ch!zxLpI1Fv4M=HS=`$;%+EzXN1vYj-fVyV%1OBIio$QP1jrj-g8s$|j? zv+2*ur0~2Loh}H_1}a~bbJ*!Qtr5LAD^$v8mI@bBn_&mn6R10{MR7Z?388R?cRW$H-l$$n7EJDcM8G+uKpEKM6P#)dRHtPH1LbQChjZF{h@wjb>J6UbU(;%|~Ha7-zEb=U7PS zl_l!-`_7l48*kEz`utiC5FAOIc~HGjL8O>(O|s;aH9*`lxzXfc5M2^@a7_As+ti#s z+GUnfpL%%KAWO6=`>M>9Gf#e;Ba{6l($SX8-b27Ot1>V9Il>?G4V6nLSy}uolUD(QX>d-ZRL>`+ffaoqDGiyLFX_;uP3+M_N>Cz@z^S+ z_SCPE);iKTLW$aHWNUpv;i!cCo8g$Hi$g3-Ls&pu(S@JRqa0PuGT30hlXjrg2wm0(g9 z^nm(4-F$?pBjY5O%R~Kbhhl>+hL~m(lDHxgN3>)`^8P^$8r9IF)^%ord%MckWW=;Iab>vl3eCEEz^Ge9<_&hr1 z;rkUPsNhc9W;LwMlNJiAKL9ue(5fe^N$r;Snij#g>^&MZo6>K=cI@pWXMt~y74w__ zp#`5iQf`wiCRPZHntSKs<%d7Lk3k6xE+p_0fbJu{r_hH=M_|Xb@oFIg*D=si1&(uZ z^I^tvEMuA*2F~61Q9PmUeY!$~OF#A&ha}V{ul#miLIjJF@)fKbCzMy6 zy%+9lgP%LL({z1w*8M&4fSiGOH8+Jg#htGwDm%A!#_~&}Ikk%QnF1k6g%0mY0S-oe zhU~E1eU>xs_MnbAO{x|ooa!!3sohw&y~S-^1xvb-D`?Tj&F-nRCe5o+iOvS+!h|ea zTMLz3Vj}XXX+2c}GQvDxkP)t#CU|tBvasfFrh2NaXeDZRt&SB8^PMW1Zfr0R4L5Y_ z9t6(4^X}A9dWuXya_&#XRMW_60oFs{PL-{-z<3X&yMht@%J_tj4Jg(0V`HF!KBHG{ zjTDU=Td3>+-8b+3;Q9SiwKea&-1b{YfhLi zt0^`4NZmlTFlqf@5_L?+cG& zbiAsrobFl63Xv@~3dwfks;=uPKVc&7M7Yq|$B;>TBU;k&$xWZrA{^rDv)v_M8lt5R zl(?1^LPjq=jz_SHAl` zG1u+}oK0Fp%hkyaL$70&4o>S#M7S1vp10=u@E}R8a$-ze+I_9HE8MQyS7PVxBb6?} zk7DRD!4GI$i_a*{{W%i6emX)qJBA|l#f~Yazv5Q<@IbAe(P3OjUt?>D)KkVMv6a{K z8d_TZ1Y@gkNr|W8bU;tSiVb1j?b6rM{UczRkoZE+Qo`6R{WBq3uC%!T=&o{O2peB$Er#8YSCNkd9*DxfU<=m6xv=>Oc7Uvy z^(#DJGC~>yWTyp&F&$2?J;awAh+_&073P4Euei%e@A-gEI+DUWGH{nzr$r#=E~HkX z#0f$1y|6z;WJEy*-rVQmEX5v-`46|F(c)E~{6yn&R9@T28c+8l2-SsVQ@PfQ(<4U+d=jcdJU+T-9T1WJF$de}pzTMv8KU`x5MwQND{ z?M|oXf+F*>23_mIvlcufe=&Nq+DB95F2ch)=?Dh1^6ZuVoTwo2J><4b6`WpX=_D+4~hy3**HM!}qYFNPu9#zN890?b| z^N5Z=7S|0!HZ*D+tBxdyCVpqp8e<--PGtXnAbnu{w~ux)vZ_x7XlifV{_RMgPVhht z=&lw7y`YDvQG=msKKB33S7nIl%tg1VN_4bXh!_WDd^z<6r>WkPx*ms}=WJ?Qx zOAD@S0C1ae4(F!z&xAob=cOADQAB_}=)vRu0$vXDc>rEd#Bp*=?PGKX2t6>DXU#Wu z(n7GceK!7R{7%;v*w};KRZ-=IYuB((w}h~9y%@l)3TPR2#=Ugj40_di+ATSw@Ol^z z|d#{(qZiAgT)otZB zf=>s}vF#8)UA6!Z)Pr-gBx0nIXeP)W4Y!eSbKqG_hw$#IJ3eI45oMT zT@RP0_eh6lYB%3BcSk(zgq8%o$hq#}ncvYCgEn3c=Gn-QKL)UvhKP~Q79mxFBC ziz&ZB>E7S@2Cw?^gUZV2$A+-Lz zo0Y+49NC57>97k?*paolFYwieLef%Y&8KIkx^7)Pxo@w2Nh=Rjzg_hfT%(ELYDwmT=UZd+ zx4dgL4`aiTDcD_y2Bbe`$P$Li;(8_h!UBJ7J3fAr1#-*# zaUL$El>1P#HvfZ~!E8axV!=b=IqRl>P4r=|n^q`S{h$#nV$}rp&ZVFh`&4)qWaD!> z6p&XYM3pi<0|ORiyDdXoCFjjovM^CGD^V3&EUb;fv8i`sEa#GcO(w{Uxa2=4V_h4^ zqLAbJDF9OtwoVA8<+e#OW3pJU#?fBwRKu@7X$3)UXTg12+a|x6y{H#KQ?(tH2;_bQyTR9gt_tu3gIfPRV=_>$FO9w!Xxf{)3S%I+q=1EqgUoTG z08z>lS$!jowe61-P66$7A%Dsup`!jY{!2_ye^jF|Y69lFKIWJ?O~2s)qUxku*LV$X zML{j}_V-kfK#-sy&8B`eTSt0N+7YTs!A#ij!88-^I%DINpaZMHWaq+qQsaUn)oIgC zizS+JD`oR0i>2fPrq(L1l7buD2L4B7Ih2%VUk~k_8OJXl6G%W8NWQ~6*ZNK>G(-ld z>Em}9zYU*t5xwJw7a@XC2A*z41Wuv5f|@kaaL^a@>4R6ap_VGkX$nsrjQafi{JhQ{ zp_Z)qx{-7?WE;ca$>i{XsKc!2WL#Q()`E&e(^T$^GwL_)Y^w~(SK1}EG^|DgfQ}NK z|8&=n_8E@4a+i8%l>q4t3CPO~;C$qB8tz6TgnCbC+zxZ7r~~)L5vx8XxclwFfiV2m zALdb>n@OwPv7y5!4p}K{@EeA<%R_cVL~eWkZKr_m1!^k8@%(c=5O*3pbzW(=K zWL-gzyFz5Op#j~w`=&T+{8x5+h+D_!8$!v2_$&NJHe<2D4V&WG9>=|+UVWx%mZ9{n zmMHxsZO^=8?4KB%?Zls+7_*p{4jb@0ETkUxxJMN1La>}&AKoqDK4Mvtf7JTiW#R;s z>HYJ-Po39MBcxdj5_4rf^%jc)24ea-z4=3rUZo1>8BXhQP-!n4*?{ zubLB_k?l3>?mL;C_!mkgm+ua$SMzxy3|}PH?gq(+ha!(Goi(?Ugmi zgZAS(C@EZhVlORglj*w9kJN9$-$A*B0%01x2@FZtRudYKm_W_05m|PBwXPhTwi~Bf zpGmu}>anRv)+b7Z(4zQKdl!GeSw{N~ya*m^#G)lvY7})b1DBqz951VGI-7G)LXc2> z@ly_6Ag!+2P>|)M*K@NeV3I=-6H)x`IC)?*TN}WSWX-92`{priJMT&5-D@?j9gmAb|jZZ*q3`J)1py@^0S$ ze=g>lxsvI+yQ-`1?w;rAswQXQ@uVH4X+J|$+(DDsy%o(89yieo-6-v;QwdQe{d3vu zb@>q7IveU{TUOk5VjnAJ6q2+kfAHj(3E^##C6Ct9W^3_n<>T6orb^WkoYTT&*Wz0} zzv8b<5LP}P(KiVzL<8Yeh1$OuZ`g`;!PCHIb}sF{3td+X$g>@F>6}@lkP$hbxzii9 zoV#u=q-XH>5KzaK=VDl|-Ad1ZloYu1621c3I9Wyhbd%7CPYU8AXT+HPXLs#5gF&mW ztgU6vszdjQx2RbZ0AUUbLsU2Ls;3JY%)7AxtS(banRU_80WLPUL|N-yY_MAy<(_is z1>9;&ZnCby>3J2 z)H{RrQ|GK%bF5Eys$!S5yN%++XW9^|LH*ljljFNGlF?U1w z40IRz1fhBi1xNkIxW>EgxwRBjBIJvy_PIBgnU_rQ_F~0lra` z?=>DU%qYV+xr5d)qzhsEuu~L|(SLmOfr=nXvmcmiNe4(0{J%gDf2y|m{k{hY;~)8! zWbNh!kbE-QU|=X^r75>cP3Vg^+@NUu7pG$C(&`QJQOF27rxorc|VXwtIk5iUoQ#fwhDZJ-Nrg^Qw;3(YjfpB zWl#U}hu7OH>Fm(f8h|(>oqY|8%RFq&6y1o!FT|Wu1?g6j(oDKVROA}&2a;W;>fsa` zCLFZHWtb};@MP_KoNz8BBISy`BT=qww_mQ2<%3#w_%B|KvcK88DDg2-6^@+tM16oz z`?{_t`Yzf^AcU>_0<@|84#AbGJ@V8V?Bfn(QyB+cf#UXGZj9l%L{jzr|KJ}?fAtSW zn1IlxL_6hhyg8y;XhOn7iWGTy(y+*RoEDqRUX2>J%Fkr-PpDAA0|EFwu|iQsmANE# zI6iS|{H}ur)=Dv*llQe`O!?)Teh1t$r}zN2RYVBL&ggoa*ARhmSqVLI1@N6Zhs=%u z)^UzH>=h9cr32>!J;=U@Iwfl?i zC{{+!#lcOq7x}uzI-aGJAITkAQp#rHRgF7jRDel=#uB{yYvx|9-*fd_h?bfem%H%{ z5>7kx5Yx78oX}AX=)Iw~)`|)>zkIPu9@{OL=`FrT?FHZ9VW+BH8&)2LxJct{k6SY9 z`i;LwZt`MR%*L&Dn5~D;c2{$9PskGD3FJrmP^45x#3cd&L0A6=#d`mAYU?lb@tbor za>M8+4lZ0wl6+-r$0wmV8Z!{+c^h;PPpln^M1UkD^8!QOL9&ZPnyuZz4NPPZaPfd< zd1ex+sTE*OLXh3KsiNhzEM2ZzS!vU_SYGn%b?xIt+D-`bWO(S#e0?}M(SGPtKkegk zi42lTYS$bT>b7=;*Rd4JfB48J=W95ev-=I}ym5yQ>UZ z{Rqm&{mpflje9CK{?1rFn|IXpu+3dC03>H8*$nejCT`9!I*a!#q~4kV%~K!3-W9Ok zzLdj@?HF7{75azv3OM^-o^#&-!6J9o&HDH-2?HIcIlVT?YN#=66M* zc2_OUtdHfmrn}s(-soFS+gq1DcwgPHpZWvvxA|@E=&_&HLh)BGiLsxCL-E%xyV)KG zLUUFx>t!Bsx@Ru^Tqy>L5$>S7-(OO5SM(5Lp)^uo*~>*6G9|88f3A4Iqy8TCUtPMs~b;$N?Oj0Sd3*50GH%o**R*hNq7-_Nyk$ zQLd*JhkJ)nAcerCSpsZjW$Gi34I%9|9vZX^$<9hr3&RsW+ShWyFs>oYU*WF$G7gg+ za)A!MSS71{dqwN`W^mVdNPc1zMK*DHKoLrtTnhIsb+SWUW;t~x!GIK9rQ;jNDyiDJ z&{IssonV%#%#&c}u|Y~#=y0lxlBRI140S8OskLDzfN20S+bAEvQac9&tg;p=Y>i^J z8X|7p6v?Gv2Y?jDvd)_&OUH;^lB3?}8@D+e7+ye=y*rzc#74*>(g###<_yvb$_Bgp z^&z;cH>?b(W-Jd`EuSNu?OKx?N8lnjWOHo6xH>SVxULS6A~=+`Oc2tctJyn}PJ1TF zYERx()rMPnJi26R+X2|^_oCSx5_HySY!OakXljrfa#L$uX zbTe~?y{r!WecM#iO@-MtO7+8dGSZK5wPo82w<%{i})xkxW z%bw5^!MNdww}{vwB<^5=q`VF8JLM69v=zWWU2@SNSl)#Z&&cA91CX=azsTV2Xs~ZY zUbh4X2#`T)Ceq8NKx3lib_v>b)@r-N_{T~^#;_DM&aKSPw1`$)9MoT5YNU{X(o@(m zuJ`sN_pGN~AGTWPxQHqBsM&$1g;N=+kZow0l}y%!z2|ZVGoO4{)YJ6x)R_v^XvX8d z9W+z~L>k(pJ{BX>l`tmLF%ao6d_w>>K4(!sftL0>_gZu5+e`v%$PS`c|Cw!$8?}LB zhJ<@uV&Qfqv{BVc$6yKUybN}Ho!Vo~r?WG&b}*JOK{FIMuW#oi$%OG8(E*pHTwP-Q zI+#qWCt%15`zuVcRpcGe()R6JEuub1r~l=0mpUy0zD#t`$YL9y5i(&wwQ&xOye zB#TJFU{JmIOxE32w)$aPE6Qc_ZHlu??G`?CIi7R&a1sE^&4^&;1M@lyYF1slj0sB( z0R(=Ua!U#pJRX;(lOid)EZ&JCDs(U@XX=}`wLPb|q3DDo>y)PwJkoDSRP}Yc6=oOf zR-hMauJi|c=enl=H;x-Gib66vM0PqhF(WMMF)UewlCl-#^UURY>`pRI7@|pv#$-t` zwJe_3qe*hlGVU^}b?kt%QGrh$KHJNp4IfcOE@V3Gs}cUe-suLZD7@D zHExIseKWg=Ri?tuAJ9T zYKyFdNvPmvSv~=r4QprFaljOxK9S?i>xLS=oA`5+bVX(%yTthlGFoR%(|}2gkLW9l=HK_s+X9^Vnh?aQ?$@mMa;GS>ZT)iKzbXGi{)p0Um zSzGN8dDzaK6{@ncew@MEYrU0dEF9z;XC$*)84*kQ;_Qghn-M=@@cQ;%YwhkvYB908 zbXB=7uO%W1@9KHxB)zO|OqQ&ruBE7`p)9Z?l7lHwEWdU`NAfy8YR(piAnnFOlWob1 zOtX&Jfs678knlD>n4`_Qp!NnO-&vR`wy05HgLPt{6}s0>Li)>@<;tSI<@96$jr!uJ zd%mg^lZoR(8@9d(W3A<9QEER^FM6e{_tI+>x~ryN=GcfA7dQH3Gh=G5pT~zjU+{>l zlaRH%1r)mgNanqy2_>|6yV!`YG_60Aw>RWYnQ;!gDxJ|?*HK|DPDW;p8A)mt5Oggp zElS`y6plex>g&W|y1dm0Ol%rC2~DoRtfUla3;&SG=Q8zP0|%Tzb4B;=w4;JSF^#}# ztT1lsY%!YU{7_~bR^3v0c+@?Qtj*a$9)}1Qg>+Jcr?GReI5KR|K!=A2Z(+cw&0U*E z5M|3}{DS}y`?IX+oqocx$y@A_Nbs&@F3XDSWfE({ zK%z?XBgin1(XD~CVk5So&?^-`rGcDfV^2VvdvY;u-@K`doiKTqD4bJf zd6ID+r9A%F7}B&!+Ae;GR5AQMj7(mGl)gSHVc3|4Im3ircx$ z74|1iB|V7r7s^i6+bpBFPP_4J)vrBZ(pBaL?FKKLal(eJc3E{Evk{FqLF^0w#msSj zGlTepIU_-@TY^q6SxfOTP{67#gVRd{0e*{vr@Qb>sMzg0+`Ppk<}-OGPI-j2nP_-d z=sF#g2niQ6P9mZWV4U8kQ>C!rK?6EnU#_5yJlp39X}FrOv*=Hmo zTHhb)2Tq`JfpNrAc{|RO3 zoeF5(9!PQ|HdMsjfG3>t>+-1x6_TdNq!eJUcKBVHpVf5A_(Fid46f*!p-%+93_qh!pZuqU=~8remmaC$*>XLIkQbr6VjXrNA+q)o{&MCV6m z_K|eB4&;O5?Y8Tq5%7EXT{vYBieZhq`*zcD-i^mOCdLHWGf*nlG5IP66lF)B>S}9< zdAe#}2vW519nX=*&L5a_ilrFEj^0nq9B_Da&^axqX1IQj?oC&ZfII37~@=g?Ot}$W7{Yv)e|5 zWG0(1@4_iOMMAUdp)-XtJ(Ea&DL%EZ&-3Edv11oaZr_W0EeW+4NmLWk@;7;+ zj9_sxRyGIiiXQgw`CelOU1XrBVh(ZvN zGZO5m0NCgVWu4-1{S^-GJcG_K+(bK@Bl*&gDE$BzC)U772?ncH- z?WP%<63Sj4SYL-`OxT!lg?D}aq%6C5;uy4^S~xmi=K$pq^~qT_``x(grwMD$1caFc zS!@#aaW0)j>2y;11)2_AgFN~+fOAn3VCR0cBty> z%qV<9aS$yM;$B|LhWTd5opez$$Y}Y@C)8@{ z2ya)vF5vN7pc4(ung@?RHpu(oX7%o_Q~EsdC4=MYY}5yy^oAg73*J1qhwh9Lg`6UN zWN~Vkr z=Eh(+W@e92HnN?2qfo@&Fog}*?BVU|(bcj2p_UBRIPCTy1p3(d;HHrnSYWlPrTX1u z^=5TTiUx#L;{g@I&eU0>6%WyAT;F;CB$oN=WSo5eoGxOC9Vo1>_z1KUfk*;6am6@o zEMm-!r|Ba3?d~K_U@7b^pL81$wm~l=lB~HY{5}MThNSKODAXfiX2_BldDm2w_|$mx z^M`4ys1FEO@O)2q)m;(b>F|C`e9|3(4GD|p26|E5XailUYADRi`PkXXUmdPuI2f|D zsF%D+uq_B3ACQU;zDW1Di)vJoiM`fwg3lr(#7xi@7bnhcfEZU{an`mi+a_zCK2j5- z)UuGQF!$uK%ZNiUqeomnFtIuGJ1pYqmL<^qi9G z>Eg1|GS36F>T)uR?Xq)q<%aMgF$fZGgHRv**G$#bsCCu&XGCm`hnd_go#w{Dfax_M zRNt1oNOM&d2`9eW(DS>$4q}lOCA5|-O1lrP9N4>dkZ^n&N}PVx)_ruapt+OGSHXr- zBZ(8|**N+@y+m5GFpeGq&RVgXT1p|yuBq9-pBg(NJ8K}H;a9(e?}fzI={GdfAXQ`~ zKcQqS)a)MbC(u%e z-up2Zdo|SWN6vU&OCJ^_dR6kdw5hOTF+G)Jxx=KSY1!FQg3%rAzhqJn6!sCM{1Rt8 zeYUn%oJ}C+O4=$7wnA!JcPwrYV(gW4Z1d)mh}@ijAPzorfSQ9NE08&|vCEp#jOB=` z#mT?)T4^pVQBFX`<4~9rllIxcZum5Y%{C`}yW2J64J3)~&Fn!~%_VzX!Zal+iKR_! zFv2!vd3`5zIJ}MW`c1X`qh_yO^(#|+4w5N57$~BEBI|L@%Fj!zm@boIJ|A}sUe_m4 z9ATb(MLAn80Y|2Xxmz|*bto_x-L9ao^m_Ub{EqCs%^+l|N|hkTXN+Ae@o>jz8Aevh z7PKeHk@c?OF3)&h+GnBOZKTzxE-AE8#m?p!8uFaD;jOM!z#$Z1FCiZJbmAj2dMn$W zE1Mk)OV$S!5urtIS%S@S`H!iGYH5po%%9SLg&3S{x9H*}Tl*hXhb~4^Wfxf(tWrp# zEiFkXD^DD>=%X_CznLfM`o?GXG{|P_vyMjYR5Qm%>DeHp=a4{la|O~5!gmxy32|5Q z!Bkgjgw~Yc-$oWp^C|_)pYR&Qwy&7GC3F__&sHMJXWYTQdZzmLA%A%kF7@JdbHQ8= z%(nzwC;EO4NJYTSo$w(&Nq!q+$aUtr?83fFTZisu!Cs|%2AQ3h`n{}(Ir7kFybrTi zrX8Zg8J90{?e_N}<*JVMu{uU9o5SOoLHnzeFOeDHD;sA zJ72a|xo*(wQqBhrC4ObBz`GWRSbNV|c`uKHcE+B0LcDv3FZo%)!3BLGHnKdn=svaO zUi}_BY*@*1(aE0YKtnlQAWJUS7r?$vf*}_&>P}SH`u-#2Q#SnD>|3O5K33b8g_ti} zz^^G5CJ|C&Ax@V3LO7Bw8F9{$KWBlt;dRCAx--6dLzre!+MHF6!FZc3aNbD!xMuw3P6YI&BxfHYq zZNw!nv2or6#c+ZiTI3q$1s`@3nlfVO0+8`Qlkf9_kURH^1V;#2-ElbG5vD3jdvUbF z%DuY8*mvzo{Kjx#f#D1N$r3-%TZP^p&9zT?Y9sL?z(Lfa_K^22s@_4`%Xa-xe_nlh zDW^i0z6xH3397-*+#uvGz1G1{266?dN11C7*CekB2MI*UNO&RB?1Y#M-$IayL<*v% zBWc0ajRYGH5k$(q;f3T}3Fa_-YY502CXkjH$;Bub2!?YlJPRuf%WYUp`hrAr8hC)B zef+W^Z!zf!DKRZq@MS}MlR**;Mg_{Hf?{h2ap~t<*+XTzg2+vCgPS20 z$?Dh_f!CkEyEiS@J*wab5hG_Qzz-GMO&}}71-SrSR@BKjv{q%+b0Kfw_?Cqpwkk>AeUcS_pv%JSr%x2$)Zh;x@ndHEq3^e^C%hZlx|`;}1Umq*);B3RkofpZ`s-4=lxUOfhbfaL53*9xf#V4YHct zRgQRh2h1Lna-fW^MgFa|P7Qt;vFMAXfu2*t!Oyk3rL~4O6)l9S>loD8MG-~W-Oxs2 zq-96+ro7z=iC*a1LFIz5tzM-F1j{tE}&`! z-r`~RWQh-QNrj`DUMj!a`JNb-AtdSpyhOn|g+6-AE(m+=I|S6ixO)<$4b9~yv^ZeW zJQ`;Us2wyb(D&}tx8!!sBVyLVl}$nRUIh!S<*=^QhOWIc>SvlmS?5ypV~o4JzZ4L+556jPjnwivBPe;nWTo` zb6hAwuyrjqwctSQgbCdFiNp(-m$nTHwL^tcsc#DICM`Rpt$QHjBFzYz0Gjvp2|aj~ z2+=p>1-u*Hwv?rFm=YhC%W|Z&)I+->-D*p>?IUQ5Xluyew1VRe7ha+;j-L*g*%@H2 z6sTNcR*~g224;R>-G^4&HRpjKH)PFzV^s^iv`1A@xEO8R$VSP=nc;pblHM7i-q#B! z;Ira$s0c3!S2m|P$iUg6UYk(xbnSrKJNM?0GgyTfl9qsuKS>Hxgn5Pri?fD%TXtQ5 z6nk{!8%w#^QegA8HczyaD=A{V!1z_>44k$n7@=!Ea(BM0^p8Z&AlmtCj9#NB(gQ0`_`YY1Qu2XWtLYh=@4;P}hip zm53d3B^zLaffr-m^znl2r%teUL75_GZDS{ za%Osh7p-us&LbAjspcsHa$S*5>BFOBDg(ltr0J7ccn0GLgV>iak;G4oH^l+{+TrU_ zlyMYw!dIW1^poSe(tYdrtXZ8)I6|iu9Gy!V#pk`&8yqT!B^^w3f*y@2fK|H`30x+k-L-X zs8$Q1>jv#zL1u=q?~b|yuAU}I$eWS#H)HTRz)r8$S^yUXcw6t1FLvl2K{rL8&x`!L zuJF8H`9;~iwd-|kN}v-XmiWR;12)n)sce|^;5uL^UmBwtTxP5fCaKNmYLFk_;t@Qa z*urcvMRpTEup#a{fkx^OX8)3HevDOfn8W%VY+ZEJXu_iPXM50l$>g&J^24P0j|)X2rE*{pZcsb*uF$m)eV8hX8yQkQ{Pp=3A;yRCQ9+c|!rGf7M(c`V9 z=+pc@_BrjuMX(-s^+oX3$7rfg$j(UqI?CM8fJ=kas4z)NzM?lH%(LR*so_VI*fa)M z*{`F>^0;$q+8;>KojsdU2C0&*#<@IJgcRgzIyFp99cT&3WaY+S5({C26Ct;p1!!mCgn zy_QT9f~0)Rl^)!Da33(Iog8>L?>Xb$FHo!=Zx|8HTh!u^t2FVNaWE85X`N+;@~|j1 zuW9%d`yTD$t5DKaBiIC4g}2^$;SNIFY+SR;C3`%Jj+w0kN>b^cRNIhUW52lc;kUt{ zYsVv5rWj#BwDlJPRC!`z|-I1csq|>EZ~@a%as~u5B89#RHtX+7Rsm+7xv6e|fGIjaP-bADFGQ5#b+HxA@a@ zC%>Q4xBHLUNR?_|)v%XPpYWi?;EaNLIb4&)Tx+Naa>;5X4WV@}Q50*zk*zT&e8pl-W zl{Zd~!rnYtc5nUIA?N3sy^*0f=C`rJ>C54wA-W8;;KKt#0jK~v9ssHLqQJ@k zc@0JwzPNr~U?iER!)T8QYu8K+`c*3jpWQYrWEaIu`t`bKF#$uWE3Vs$9BQGC| zzz__{Oq{DWr;5ht*r&`aT1yUkGxVdgy8KOI0~&Ql?||XC6t$e!9->EiG}X%oJq}9L zNrv0|$sY+0Qh1sP>P^V?-j+uB!tna7yIzZG6sg%jU`B}}7svbHGalNc^-SrcHb}=Q ztv&klDNC^q92OwRFcR1B!mV8?7T?KP2^zcxLno&{GM0Q7Tf>)X6oA|1qmcbJl1;eG z;LCdhvZ5tg@KxMqWtfrT1~oSG%1CkNcs)Z&40nwl8c)|Q$h9(EV-5W~G@M{A>{1CU zOx)#0M%nU0&9Z$P!WiEI?I^}3dd7k%HOixXO4++}T1CDB^IC>raoQWBp1yAw4VTb( zs5Myg`O1oDT~XB-cV!{fJE#HNwlr&dsKq6m^?kf3RI@O!YL_knUVtie612{U416ps zsVHX9iYcMKq!g5F>M$B_uq~F$vXG_sa^gwivDEy#RKA6y_wNb?ZqZ2lK1}6gW@Tmj za50{%M0j+j5i$3E(^FHo+tz~Yve}XCFxlot>x#V4aL3*%E*x^gEd7*XoUB^RS`y$! z^9aIk9IbvA_o>h;QWMZ(cD=}nn*F|)@r5k75BsGNEPro1+GhVW_>gV(tcq7*swM|p z+GZY#=P3{NY1HeMDwUt{%3%B}rs zre4%|Slp>YC7E(Gwyi3DNv0su#I*)S{|e@#jIAn;#hWez@x$_h%?O&b7)6RB2Trvn zr+tDdIo%|FEW4ifLPDT@558dx$$x+Js4_vfF8^QIlJ$LZ3sTJxpy`T^17x|@r z+deF}YRK(n(RkZV=+QmgdQmkt%VB3Nh&s!$P@mJ;hJ`!Qg{I%Lbwq9>h33o3ox0`L zKi`_)bHjyH6?GR@Xk6%9CX%ckHwZNfeS`jNP)WW@xgW*~j>=7;D5l0IGX7#Vz4{$1 zuYAZAf?~Juqi_SQcF@X#Zb+djr?bsoe#DuIGsCLflWPUxO77Z1?%GC)bmyjXkl}Qj zVM)J_o6Z8?k-|1BSJa8%5Ga?G!{Vd_LVSWa#w2poHfNNgTjr{`#|qz2WUoU2YODNVEM*nxg`+(3CTi_- zh=k3|SqD$j53NJLU>Z&VTo5>`&?$6=Xpor)GRaSHUW}b2N@x#QZT>3TKx zHRwhzWX`m_r4n6hJgEmKWV+c*h^GavzC(zh;~quBMoXkKzu?4c@iTO(Ifa@H^ESC2 zhGj|IC{ce(A2FFdj~JcI&!4t>RkD%!2eDL*7X3hfd@@sgn>`U0_)xdPKdJxpUuH;I z16u>L|EV7M=lV~S1cB;$0v-|yg0snax!}aHsaSBnj+&t+_U&ud%_5KFPq3HB0w{ZC zeu-C8uC#@f;Q?%E!&zR_oVS}RUq3%QAc82VTMNMsu{0R)1ae~qVyGpDL+@hsrCJZ^ ztSj~Vu*z7Z4uP@qMCpqWi${14%urMYj#pObr|LY_+%no`II3}Qp0~_J97PmS*RQQd zqkn2Lc@ss<4v+lWD+6L}HGb%2a|>Z6I52NlrK}PMHP7@+Q%Ap>N5=;#W;sYMTPf-O zUE5j0GB>l=35AuTw8Yu2xE7eYU5x{(KTz>L&l^v4I5L( zp^sRnQ;lKB3rRO#2{W+OP0h4go3*x1;g-huPl2zM(Pmi7D;|87~X+0VxTk@mn4D3T!*!}dzjfd3BA)n@4hv}Sf$~{xs(o@beaHHPw%1dSGi`}wT-aANUxCQP?s8tQGQH&Q~R2N+MU=@6_utn%D z;)}A?b)eRBo2#OACqP&htnEZ?AcRwz&x?lZV0c?(l6C8}3pKt8<@A2BFl`YsTCV>R z$G?HP<&?dtZDNDZE24h`-Wx3(-1Tm!r(Z>(avxL?sgHJ!L1NioH=@_SIAjMak8hI+ zivr;T*0+ezT0k)S5CSr%m=Thl93$(rSs+vD&84RlBVV?r4!M}vbH)JHy;&k=kd+j&_{fJ_>4m`j}-bXlZo%T zhdqBMgf)&gspqu59LSXFIX{U>u>T_uvn=!T5rgkmXm5tzb(mh#eoDLgIMkXZ&CP^3};nmEZh zIrlO`a}jm2#>GpQ(63EFd5qLWw>}Zs3|nHNBt^NfU`}wc>4SH!QRN#!mYYWi;Vc&> zt)q@nQ4@}Pd_#ikQcVO|6X}dOdVoTy9H)rYqUtqzyyZ$MVWX~p@Ai1Q3U&3Mv+iOi zc2a4IIMq9BUby$ZN115g=MZs3{~90gu*tSqlW!)uxiE;yJ<8?!tW;?vV!L zmZC7gs&{>BEkgvcBtn2$8CAK#elx{)#>%SuGQjk`BkoOlXqPd;r!9m#I_t0OrTe_x zbBO(ViYag-M2J60kYPpUoTgARrzG|tzc;7I9vi#87+DG5*XMGOIy}mLa3k@46YK7c zPY-51Z0G`#vW}F?iWF|Ei|D$Tb88A z$QLJX!fk1B>U7LlQ;8eYdkjw)ejHpma-!L&Ot?ZJ;fCRQ<&@c48LDioc=53C=tAbv z846(Tm*-AA>h#2^NplaZO5$fv2Fw_KTM|jS!<1S0@OQ1g22>riax5xZ^pq?kEElw* zlX%QGkt(#hx!9;5-9?P7Y48Y>7E#%ZjCJ8Qhdxt&1ESm#fTq}Nr3tNQMuY6O~%ccV!+O*wf7b)ORd1S%) zrR5;Tyw%d7bY(MMLt7=@6YoZZ9pK$&eM-iQ-5c%XLUndhN*XcNttzGN8FHfbF3o`t zB%$0%bE<8VHgqHQz5uzl4(s#Ah?QLb7jW|Ds%7q%o*~mD)v*s#3@N>vN>>dxB@)o6^wT+P3EVA-lYHQ(npM)7rLm-#208lxyo>mJ?SJK# zwy3-NYV|l=%;-p`<|4}|WRXnmO@D(F>pgV#yG~5;;~c2rWhYeK_@Ip&FGb(ie*G^x zvTkR3>=C2!*2SzrWt(R|1A@cbkq2+7 zWKK4!MiH0ij<-A!eG$>F25f>;TG^Q77G#^^Jg4I&b?!-0?wjcihlyMlXI*LY2a`Et z7PsWt*JVSwu@|?`90sUC+aJBqYwVC806M-avI8coUhCgLpmqm(ZQcAL8eVjOgq@VV zrYC5LFZ23H5UV5Y;OrwldBruE(MzZ4GtfBG+>FXy1M^UW$!I<3(Le}X`$lE8hRJw|-H!)1EPmGtljv*s3^i6J-@g*p``=MJG`3$|qw)VtyFT%kdz$7VtD76=`c zPVL~08hLggH(h zNsB=?c|Z{+eE>y$(Rj7mP1MB5$9>@Q8-!mR%?5QIUE4|5=8;-cCl7C`%juUm8VyTJ zDvemf7=U-ku-ElonaP#hBm0l44@{xWriF3@evyo!&?tQQcB@w%e57Ap45~|w-e-BW zM9h!w)5cl1h-59O662nTY?&BWuk<0)>foI_|6Pznm??eU(PzO7G()+mQ4KM6FcC0K zjh#ef{rvKy_RrU|gb|O#@tyan3JMKfLnG_s`U+6|0rpWP?r#mc1~pPsCV;+8(N7gij#kmo*w{AQ+7-hzFXSn91S7&vE!@2ZoXw zLJs|obWfg2!{0ztMj7NIQk#FE^t)Qfa%85UgKUD~XnXewKNQB~6yKh^T})m+`;{_e zCb~3>m5N&4#?x-O`2v@NQ5~nA0ykcAwp`b_E>@DDAtbq6S`AQ(C>-ZEBm!sc1C(hG zhwsxQLp`66PKSaI->@AvoF%&Izk8SFq<_+5AHuts<3F{u15Pwp_Zg41%^iW63r@Pj zmY0BwV75vIF%5V~W*)hdnP(a$lIix?u&Z4J0HG>#o^q`U-1*f!aff&NGOp@HBiNg# zRI}KemX2F)(msCRX#&K=hnrM|fII2&#m=wTeKoKyQF1mkR5s$+roBQ~h~3(FYh(&f zhtRlnYlYV=?e%aLB|nFGCbfYLVeaQ>wb|||G`I!td{kYnuBHYSeUCEe@4Ph=dvL51 zZU%K?oJQ`X@cJmcAU+;Ay&D7{FLlT%+tO0Wi zZLvg1%Z!^iWftOth#rr3w~fdSvee%om=G&Hy)=$Kljxs6SW<`d<`gP)k{B2aI_i;7jQLL+sl-+S!`` zdCSB}$@TT5G_4ekq^yEOnewG9jr8Q+fg%EwqYr=@HHrom4z5BbU_`x_l0&3-q-Q2R zrJSa*goBxXdQpB_dpbCUx|5>2p@(^}DX&h7o}U~*k&&UU9G_O4qLr=`pOzV?-Zu_` zA|Wk92TCQ30s%a12>Rj`7;s$;y#C6`z>EgJUq~Qlg5N*>4@3XE88nC{kjh`qyh*SI zejy0>diDLAzh4CbtlR zW{Ds4`gg~Emj|@^_mWOOH! zeCL0Y|EJyk&uso((Ys`i~Yq$enzY*qdrYQ(;1Iqu+ zed#=GtpDAw-`YLkvS6D5@1*IYgMfTr=KgUN1b_m6)A+tbHL|mHcC@qpYvb>HtOe3B zQUVM_W}spI9Zn!11p!I0Kc^_=@0qeCZB6ZdJNo_SUVRswQ6=e63GBBCJO~KGA6){z z7X*X?|K(@gr!4Mh=VJfgrGK|oOV%ZB4NzxzyuaEi0Oh;%?{^3Ps_yr8NR4|wxj=P` zfo+j~=#>U02#BSfg{_T=lN0bKQ>VXcT_BPXX$y?631D$Kzz?m-fgJhg)_SIne--fE zC@apm3(>%aNWd=qIK)G^ARsnIHg?8z7C@8!*_hwEOz} z`KePY?i>vS#98OB&anXu>_1xmO?SV;q6K5ASpgj*4~Y4rzIPJ9#((U9oc@(K{jd6d z7w`p(&({;EYXHy@e$+Qn1_b1{$?osk9V$^BWB{Ev6^Q!dFtGu5b-$6!-w*P4D}zg= zp4b2pm4OQk_8+YEtn|}B{e6lMw6(Q!u{AQW`A+D6JbmrgZT#tfWbe35OT4$HUaKc|Emt*Tgow`z(|+` z?kxXJ^WS5X#`Ko}{=WZ~>5u~L$RHqBzbfwLa-J86aaX?%EI2o+Q8Yu&i3z7vN0;toq#@T1muMugZo{> zKSr@LHu>Ss*k1=eT(1&k6Q~Lukd@hfP{pGCAA$U~$owe=+3iLA^1XBdmGN92E zfs82f2MF-JAb@w~*Kq#CzdzN?6Vy}r4(JODK>iZ=0a0@0mk|G8%Acay`u7}tXG?D& z8qW`CIorR4_8af~Ya8Mf$&E)GZ z!HHNn*#nF8{uB)Kxi;7bI76@k_4|=y+n#<2Ow7^5#PeUZVSb8-%8TJb4UFe!;ELg{~C_9ouR?c{lm8gT#^j9wV-7AEkV>D za0LOhz-8<&IOA{2`kyff2Hb@aByhN>fKm3ND^`*JI@I@Mmp>h?s)J({G9Z*Ga6|H= z6#>-01Ser)Z7*x`Q!FgXd;~q<5%7P8=R=SiII!* z&qFPqFkI9R=qi0cSNU=Rwzu)$vqp+>7cXV=!Cu zVH^~(tw=gTw0tPn*ZQ@=^9G{jM@y7J>m?#ACWCkxl(yr^YPPF>4x%9XyMD?F7JMXy z5vgCAn<*-V_n`?Ft1oK1I=#X8e$(&)4(>7&?2Jbz;S)*wx<-9VX9 zqR@P>d8^phW#>m#ULQ-8T+?kOER%$oa>cMhYY9>3!pcl7^ia}4(8nBMaVTG>|3!FYwK1)!2 zsbf1P-2&zhU}(~jj-cn+TRKfo%@{Kc_>_#O{=zEWtcpQ5F%%|2TgkiqWx)7t`+DqW z|NII`0wD=)?S{^fG`O>b5Zdgxxu|1!0|HAB77qoy5g`xYc#AkUVJa;y9lryBk=+0* zqT~T4@T+Lq)tG(TcmcXNd4N!UK;I4D*!U$#Opphd$PcLU3mRI&E5Vdxd4Ng$fUp-9 zk2H@$_|kB9gT|)F0`L#NEAmX~Sv-G!x16|jrL5sotc*a24?XeKUl)-&9VZO!*|HJsbdN%kTg{wahw^jEh_q0CQZ^m%OV%Reox zr=z`3V_M?SW}sU_k-MY}pOO+6nW)JYuZ7lLsak#;WkV{wcNCE!y-XBBj>Kr~y(deM zqi-TwMUDt59`F3JM=U|^KP(;TI)xMIIF93(Dj{FLF}u#E6%!Q(ZAKGn%%5~Fo$n4j5DQd^h_ z#g0H?NG<5^9~Cgw$#WR1UL3i3T;c4OvAo;iu;PhckDir|bRSt_*C5->Va1JQGPCp+ zfhCz7TD|Z;OeWidn@zxTn|cbKW6BfcUiLCq)`05+9aDj;n|sPlFc}%E$;>~w`L^i8 z{a{Qb@Ix^~;Pcm%fXU~&gqG@qgH>N5JyP|CRZ)uy|GmdhemU2q9-5Sn{&)a(gi?u| zcUzPoJ8KWttdcrUzB*!-)5iFpA%D&DbqvI|VWO$n$J&%U!vd4ppc6+P%-S=2GPFDf zqSMGC!gxEuWb09*%=5gQ;8g!;+6y} z!--1w=yJ%00nq6lgb*4f@8P_tRI9h^ROps0w-Oxoa4fSJ#xe_By3x02vIl0DQ?{Nv z&-braAN7SQA48QiLitRU&T)svnVrYgy9P-9b$245Pg)7&n}R@*KrCk6j2>|9d8N1$ zD;|HY-*JeXi0M=l^ri^qXnWD*$Y;eLprP#K?F_7z!Pt3;BoFXIl#&Nv{i!%HCV1eL zEtugZBtRT($15Q^gta>&adeY+|AKsA>jSt3wqC6S?RfD~mkf;Gz_?#XcIp|M09xf- zzV9V-moE2HrEan=OF5ZjLi{3gKY{25uQ5mmyHXLmriGF&?)UWEuyUhvm_T2Q`*k)q ztTsn6j9-b|7jn5#(>6&*Ijq$47Ag1bCT`r4?aFYXp^W>A2RE*6mt36ZP}cp*861J* zXQ0Yv`xN(iU6YKO^tK@FAl@oYz^K28KGGCcCzre?oBFoT;H;84<$0L>-2w@ z+dcgEm7Nb?R*<2P;JCfa^*7whk#5k^eab{(LGG)PN%4IUq;dWpzsJxW3)zq0srnyl C`57_* literal 0 HcmV?d00001 diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Metrics.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Metrics.java new file mode 100644 index 00000000..61628738 --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Metrics.java @@ -0,0 +1,766 @@ +package xyz.olivermartin.multichat.bungee; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.lang.reflect.InvocationTargetException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.zip.GZIPOutputStream; + +import javax.net.ssl.HttpsURLConnection; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; + +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; + +/** + * bStats collects some data for plugin authors. + *

+ * Check out https://bStats.org/ to learn more about bStats! + */ +@SuppressWarnings({}) +public class Metrics { + + static { + // You can use the property to disable the check in your test environment + if (System.getProperty("bstats.relocatecheck") == null || !System.getProperty("bstats.relocatecheck").equals("false")) { + // Maven's Relocate is clever and changes strings, too. So we have to use this little "trick" ... :D + final String defaultPackage = new String( + new byte[]{'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's', '.', 'b', 'u', 'n', 'g', 'e', 'e', 'c', 'o', 'r', 'd'}); + final String examplePackage = new String(new byte[]{'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'}); + // We want to make sure nobody just copy & pastes the example and use the wrong package names + if (Metrics.class.getPackage().getName().equals(defaultPackage) || Metrics.class.getPackage().getName().equals(examplePackage)) { + throw new IllegalStateException("bStats Metrics class has not been relocated correctly!"); + } + } + } + + // The version of this bStats class + public static final int B_STATS_VERSION = 1; + + // The url to which the data is sent + private static final String URL = "https://bStats.org/submitData/bungeecord"; + + // The plugin + private final Plugin plugin; + + // Is bStats enabled on this server? + private boolean enabled; + + // The uuid of the server + private String serverUUID; + + // Should failed requests be logged? + private boolean logFailedRequests = false; + + // Should the sent data be logged? + private static boolean logSentData; + + // Should the response text be logged? + private static boolean logResponseStatusText; + + // A list with all known metrics class objects including this one + private static final List knownMetricsInstances = new ArrayList<>(); + + // A list with all custom charts + private final List charts = new ArrayList<>(); + + public Metrics(Plugin plugin) { + this.plugin = plugin; + + try { + loadConfig(); + } catch (IOException e) { + // Failed to load configuration + plugin.getLogger().log(Level.WARNING, "Failed to load bStats config!", e); + return; + } + + // We are not allowed to send data about this server :( + if (!enabled) { + return; + } + + Class usedMetricsClass = getFirstBStatsClass(); + if (usedMetricsClass == null) { + // Failed to get first metrics class + return; + } + if (usedMetricsClass == getClass()) { + // We are the first! :) + linkMetrics(this); + startSubmitting(); + } else { + // We aren't the first so we link to the first metrics class + try { + usedMetricsClass.getMethod("linkMetrics", Object.class).invoke(null, this); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + if (logFailedRequests) { + plugin.getLogger().log(Level.WARNING, "Failed to link to first metrics class " + usedMetricsClass.getName() + "!", e); + } + } + } + } + + /** + * Checks if bStats is enabled. + * + * @return Whether bStats is enabled or not. + */ + public boolean isEnabled() { + return enabled; + } + + /** + * Adds a custom chart. + * + * @param chart The chart to add. + */ + public void addCustomChart(CustomChart chart) { + if (chart == null) { + plugin.getLogger().log(Level.WARNING, "Chart cannot be null"); + } + charts.add(chart); + } + + /** + * Links an other metrics class with this class. + * This method is called using Reflection. + * + * @param metrics An object of the metrics class to link. + */ + public static void linkMetrics(Object metrics) { + knownMetricsInstances.add(metrics); + } + + /** + * Gets the plugin specific data. + * This method is called using Reflection. + * + * @return The plugin specific data. + */ + public JsonObject getPluginData() { + JsonObject data = new JsonObject(); + + String pluginName = plugin.getDescription().getName(); + String pluginVersion = plugin.getDescription().getVersion(); + + data.addProperty("pluginName", pluginName); + data.addProperty("pluginVersion", pluginVersion); + + JsonArray customCharts = new JsonArray(); + for (CustomChart customChart : charts) { + // Add the data of the custom charts + JsonObject chart = customChart.getRequestJsonObject(plugin.getLogger(), logFailedRequests); + if (chart == null) { // If the chart is null, we skip it + continue; + } + customCharts.add(chart); + } + data.add("customCharts", customCharts); + + return data; + } + + private void startSubmitting() { + // The data collection is async, as well as sending the data + // Bungeecord does not have a main thread, everything is async + plugin.getProxy().getScheduler().schedule(plugin, this::submitData, 2, 30, TimeUnit.MINUTES); + // Submit the data every 30 minutes, first time after 2 minutes to give other plugins enough time to start + // WARNING: Changing the frequency has no effect but your plugin WILL be blocked/deleted! + // WARNING: Just don't do it! + } + + /** + * Gets the server specific data. + * + * @return The server specific data. + */ + private JsonObject getServerData() { + // Minecraft specific data + int playerAmount = plugin.getProxy().getOnlineCount(); + playerAmount = playerAmount > 500 ? 500 : playerAmount; + @SuppressWarnings("deprecation") + int onlineMode = plugin.getProxy().getConfig().isOnlineMode() ? 1 : 0; + String bungeecordVersion = plugin.getProxy().getVersion(); + int managedServers = plugin.getProxy().getServers().size(); + + // OS/Java specific data + String javaVersion = System.getProperty("java.version"); + String osName = System.getProperty("os.name"); + String osArch = System.getProperty("os.arch"); + String osVersion = System.getProperty("os.version"); + int coreCount = Runtime.getRuntime().availableProcessors(); + + JsonObject data = new JsonObject(); + + data.addProperty("serverUUID", serverUUID); + + data.addProperty("playerAmount", playerAmount); + data.addProperty("managedServers", managedServers); + data.addProperty("onlineMode", onlineMode); + data.addProperty("bungeecordVersion", bungeecordVersion); + + data.addProperty("javaVersion", javaVersion); + data.addProperty("osName", osName); + data.addProperty("osArch", osArch); + data.addProperty("osVersion", osVersion); + data.addProperty("coreCount", coreCount); + + return data; + } + + /** + * Collects the data and sends it afterwards. + */ + private void submitData() { + final JsonObject data = getServerData(); + + final JsonArray pluginData = new JsonArray(); + // Search for all other bStats Metrics classes to get their plugin data + for (Object metrics : knownMetricsInstances) { + try { + Object plugin = metrics.getClass().getMethod("getPluginData").invoke(metrics); + if (plugin instanceof JsonObject) { + pluginData.add((JsonObject) plugin); + } + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } + } + + data.add("plugins", pluginData); + + try { + // Send the data + sendData(plugin, data); + } catch (Exception e) { + // Something went wrong! :( + if (logFailedRequests) { + plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats!", e); + } + } + } + + /** + * Loads the bStats configuration. + * + * @throws IOException If something did not work :( + */ + private void loadConfig() throws IOException { + Path configPath = plugin.getDataFolder().toPath().getParent().resolve("bStats"); + configPath.toFile().mkdirs(); + File configFile = new File(configPath.toFile(), "config.yml"); + if (!configFile.exists()) { + writeFile(configFile, + "#bStats collects some data for plugin authors like how many servers are using their plugins.", + "#To honor their work, you should not disable it.", + "#This has nearly no effect on the server performance!", + "#Check out https://bStats.org/ to learn more :)", + "enabled: true", + "serverUuid: \"" + UUID.randomUUID().toString() + "\"", + "logFailedRequests: false", + "logSentData: false", + "logResponseStatusText: false"); + } + + Configuration configuration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + + // Load configuration + enabled = configuration.getBoolean("enabled", true); + serverUUID = configuration.getString("serverUuid"); + logFailedRequests = configuration.getBoolean("logFailedRequests", false); + logSentData = configuration.getBoolean("logSentData", false); + logResponseStatusText = configuration.getBoolean("logResponseStatusText", false); + } + + /** + * Gets the first bStat Metrics class. + * + * @return The first bStats metrics class. + */ + private Class getFirstBStatsClass() { + Path configPath = plugin.getDataFolder().toPath().getParent().resolve("bStats"); + configPath.toFile().mkdirs(); + File tempFile = new File(configPath.toFile(), "temp.txt"); + + try { + String className = readFile(tempFile); + if (className != null) { + try { + // Let's check if a class with the given name exists. + return Class.forName(className); + } catch (ClassNotFoundException ignored) { } + } + writeFile(tempFile, getClass().getName()); + return getClass(); + } catch (IOException e) { + if (logFailedRequests) { + plugin.getLogger().log(Level.WARNING, "Failed to get first bStats class!", e); + } + return null; + } + } + + /** + * Reads the first line of the file. + * + * @param file The file to read. Cannot be null. + * @return The first line of the file or null if the file does not exist or is empty. + * @throws IOException If something did not work :( + */ + private String readFile(File file) throws IOException { + if (!file.exists()) { + return null; + } + try ( + FileReader fileReader = new FileReader(file); + BufferedReader bufferedReader = new BufferedReader(fileReader); + ) { + return bufferedReader.readLine(); + } + } + + /** + * Writes a String to a file. It also adds a note for the user, + * + * @param file The file to write to. Cannot be null. + * @param lines The lines to write. + * @throws IOException If something did not work :( + */ + private void writeFile(File file, String... lines) throws IOException { + if (!file.exists()) { + file.createNewFile(); + } + try ( + FileWriter fileWriter = new FileWriter(file); + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter) + ) { + for (String line : lines) { + bufferedWriter.write(line); + bufferedWriter.newLine(); + } + } + } + + /** + * Sends the data to the bStats server. + * + * @param plugin Any plugin. It's just used to get a logger instance. + * @param data The data to send. + * @throws Exception If the request failed. + */ + private static void sendData(Plugin plugin, JsonObject data) throws Exception { + if (data == null) { + throw new IllegalArgumentException("Data cannot be null"); + } + if (logSentData) { + plugin.getLogger().info("Sending data to bStats: " + data.toString()); + } + + HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection(); + + // Compress the data to save bandwidth + byte[] compressedData = compress(data.toString()); + + // Add headers + connection.setRequestMethod("POST"); + connection.addRequestProperty("Accept", "application/json"); + connection.addRequestProperty("Connection", "close"); + connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request + connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); + connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format + connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION); + + // Send data + connection.setDoOutput(true); + DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); + outputStream.write(compressedData); + outputStream.flush(); + outputStream.close(); + + InputStream inputStream = connection.getInputStream(); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + + StringBuilder builder = new StringBuilder(); + String line; + while ((line = bufferedReader.readLine()) != null) { + builder.append(line); + } + bufferedReader.close(); + if (logResponseStatusText) { + plugin.getLogger().info("Sent data to bStats and received response: " + builder.toString()); + } + } + + /** + * Gzips the given String. + * + * @param str The string to gzip. + * @return The gzipped String. + * @throws IOException If the compression failed. + */ + private static byte[] compress(final String str) throws IOException { + if (str == null) { + return null; + } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + GZIPOutputStream gzip = new GZIPOutputStream(outputStream); + gzip.write(str.getBytes(StandardCharsets.UTF_8)); + gzip.close(); + return outputStream.toByteArray(); + } + + + /** + * Represents a custom chart. + */ + public static abstract class CustomChart { + + // The id of the chart + private final String chartId; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + */ + CustomChart(String chartId) { + if (chartId == null || chartId.isEmpty()) { + throw new IllegalArgumentException("ChartId cannot be null or empty!"); + } + this.chartId = chartId; + } + + private JsonObject getRequestJsonObject(Logger logger, boolean logFailedRequests) { + JsonObject chart = new JsonObject(); + chart.addProperty("chartId", chartId); + try { + JsonObject data = getChartData(); + if (data == null) { + // If the data is null we don't send the chart. + return null; + } + chart.add("data", data); + } catch (Throwable t) { + if (logFailedRequests) { + logger.log(Level.WARNING, "Failed to get data for custom chart with id " + chartId, t); + } + return null; + } + return chart; + } + + protected abstract JsonObject getChartData() throws Exception; + + } + + /** + * Represents a custom simple pie. + */ + public static class SimplePie extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimplePie(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + String value = callable.call(); + if (value == null || value.isEmpty()) { + // Null = skip the chart + return null; + } + data.addProperty("value", value); + return data; + } + } + + /** + * Represents a custom advanced pie. + */ + public static class AdvancedPie extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedPie(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + continue; // Skip this invalid + } + allSkipped = false; + values.addProperty(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + } + + /** + * Represents a custom drilldown pie. + */ + public static class DrilldownPie extends CustomChart { + + private final Callable>> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public DrilldownPie(String chartId, Callable>> callable) { + super(chartId); + this.callable = callable; + } + + @Override + public JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map> map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean reallyAllSkipped = true; + for (Map.Entry> entryValues : map.entrySet()) { + JsonObject value = new JsonObject(); + boolean allSkipped = true; + for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { + value.addProperty(valueEntry.getKey(), valueEntry.getValue()); + allSkipped = false; + } + if (!allSkipped) { + reallyAllSkipped = false; + values.add(entryValues.getKey(), value); + } + } + if (reallyAllSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + } + + /** + * Represents a custom single line chart. + */ + public static class SingleLineChart extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SingleLineChart(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + int value = callable.call(); + if (value == 0) { + // Null = skip the chart + return null; + } + data.addProperty("value", value); + return data; + } + + } + + /** + * Represents a custom multi line chart. + */ + public static class MultiLineChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public MultiLineChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + continue; // Skip this invalid + } + allSkipped = false; + values.addProperty(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + + } + + /** + * Represents a custom simple bar chart. + */ + public static class SimpleBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimpleBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + for (Map.Entry entry : map.entrySet()) { + JsonArray categoryValues = new JsonArray(); + categoryValues.add(new JsonPrimitive(entry.getValue())); + values.add(entry.getKey(), categoryValues); + } + data.add("values", values); + return data; + } + + } + + /** + * Represents a custom advanced bar chart. + */ + public static class AdvancedBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue().length == 0) { + continue; // Skip this invalid + } + allSkipped = false; + JsonArray categoryValues = new JsonArray(); + for (int categoryValue : entry.getValue()) { + categoryValues.add(new JsonPrimitive(categoryValue)); + } + values.add(entry.getKey(), categoryValues); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + + } + +} \ No newline at end of file diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java index a4dd1e42..4b21b8b0 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java @@ -15,8 +15,6 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -import org.bstats.bungeecord.Metrics; - import com.olivermartin410.plugins.TChatInfo; import com.olivermartin410.plugins.TGroupChatInfo; @@ -233,7 +231,7 @@ public void run() { public void onEnable() { instance = this; - + @SuppressWarnings("unused") Metrics metrics = new Metrics(this); @@ -301,7 +299,7 @@ public void onEnable() { // Run start-up routines Startup(); UUIDNameManager.Startup(); - + // Set up chat control stuff if (chatcontrolYML.contains("link_control")) { ChatControl.controlLinks = chatcontrolYML.getBoolean("link_control"); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java index d6638120..5a1c2d44 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/MultiChatSpigot.java @@ -45,7 +45,7 @@ public class MultiChatSpigot extends JavaPlugin implements Listener { private static Chat chat = null; private static boolean vault; private static boolean papi; - + public static String serverName = "SERVER_NAME"; public static Map playerChannels = new HashMap(); @@ -84,7 +84,7 @@ public static boolean hookedPAPI() { public static String localChatFormat = "&7&lLOCAL &f> &f%DISPLAYNAME%&f: "; public static boolean setLocalFormat = false; public static boolean forceMultiChatFormat = false; - + public static boolean showNicknamePrefix = false; public static String nicknamePrefix = "~"; public static List nicknameBlacklist = new ArrayList(); @@ -108,8 +108,10 @@ public void onEnable() { SpigotConfigManager.getInstance().registerHandler("spigotconfig.yml", configDir); Configuration config = SpigotConfigManager.getInstance().getHandler("spigotconfig.yml").getConfig(); - serverName = config.getString("server_name"); - + if (config.contains("server_name")) { + serverName = config.getString("server_name"); + } + overrideGlobalFormat = config.getBoolean("override_global_format"); overrideGlobalFormatFormat = config.getString("override_global_format_format"); overrideAllMultiChatFormats = config.getBoolean("override_all_multichat_formatting"); @@ -126,16 +128,16 @@ public void onEnable() { } } - + if (config.contains("show_nickname_prefix")) { showNicknamePrefix = config.getBoolean("show_nickname_prefix"); nicknamePrefix = config.getString("nickname_prefix"); nicknameBlacklist = config.getStringList("nickname_blacklist"); if (config.contains("nickname_length_limit")) { - + nicknameMaxLength = config.getInt("nickname_length_limit"); nicknameLengthIncludeFormatting = config.getBoolean("nickname_length_limit_formatting"); - + } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java index c209e17d..9bd33a02 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/spigotbridge/commands/CommandHandler.java @@ -55,8 +55,10 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label, SpigotConfigManager.getInstance().getHandler("spigotconfig.yml").startupConfig(); Configuration config = SpigotConfigManager.getInstance().getHandler("spigotconfig.yml").getConfig(); - - MultiChatSpigot.serverName = config.getString("server_name"); + + if (config.contains("server_name")) { + MultiChatSpigot.serverName = config.getString("server_name"); + } MultiChatSpigot.overrideGlobalFormat = config.getBoolean("override_global_format"); MultiChatSpigot.overrideGlobalFormatFormat = config.getString("override_global_format_format");