diff --git a/build.gradle b/build.gradle index 4d087a2..4f39645 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ apply plugin: 'eclipse' apply plugin: 'maven' group = 'fr.vmarchaud' -version = '3.0.1' +version = '3.0.2' description = "mineweb_bridge" diff --git a/mineweb_bridge-3.0.2.jar b/mineweb_bridge-3.0.2.jar new file mode 100644 index 0000000..5c96faa Binary files /dev/null and b/mineweb_bridge-3.0.2.jar differ diff --git a/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitCore.java b/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitCore.java index ce73dbd..8144762 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitCore.java +++ b/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitCore.java @@ -198,6 +198,7 @@ public void registerMethods() { methods.put("RUN_COMMAND", new CommonRunCommand()); methods.put("RUN_SCHEDULED_COMMAND", new CommonScheduledCommand()); methods.put("GET_SERVER_TIMESTAMP", new CommonGetTimestamp()); + methods.put("SET_MOTD", new CommonSetMotd()); // bukkit methods methods.put("GET_BANNED_PLAYERS", new BukkitGetBannedPlayers()); diff --git a/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitListeners.java b/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitListeners.java index 2a50fc1..c430d94 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitListeners.java +++ b/src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitListeners.java @@ -29,6 +29,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.server.ServerListPingEvent; import fr.vmarchaud.mineweb.common.ICore; @@ -57,4 +58,13 @@ public void onQuit(PlayerQuitEvent e) { // update our cached player list api.getPlayers().remove(e.getPlayer().getName()); } + + @EventHandler + public void onPing(ServerListPingEvent e) { + String motd = api.config().motd; + if(motd == null || motd.length() == 0) + return; + motd = motd.replace("&", "§").replace("{PLAYERS}", String.valueOf(api.getPlayers().size())); + e.setMotd(motd); + } } diff --git a/src/main/java/fr/vmarchaud/mineweb/bukkit/methods/BukkitGetMOTD.java b/src/main/java/fr/vmarchaud/mineweb/bukkit/methods/BukkitGetMOTD.java index b78eb4e..1372b9e 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bukkit/methods/BukkitGetMOTD.java +++ b/src/main/java/fr/vmarchaud/mineweb/bukkit/methods/BukkitGetMOTD.java @@ -34,7 +34,10 @@ public class BukkitGetMOTD implements IMethod { @Override public Object execute(ICore instance, Object... inputs) { - return ((Server)instance.getGameServer()).getMotd(); + + if (instance.config().getMotd() == null || instance.config().getMotd().length() == 0) + return ((Server)instance.getGameServer()).getMotd(); + return instance.config().getMotd(); } } diff --git a/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeCore.java b/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeCore.java index 7db1ce8..ed11e28 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeCore.java +++ b/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeCore.java @@ -23,8 +23,19 @@ *******************************************************************************/ package fr.vmarchaud.mineweb.bungee; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; + import fr.vmarchaud.mineweb.bungee.methods.BungeeGetMOTD; import fr.vmarchaud.mineweb.bungee.methods.BungeeGetMaxPlayers; import fr.vmarchaud.mineweb.bungee.methods.BungeeGetVersion; @@ -43,16 +54,6 @@ import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.scheduler.ScheduledTask; -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.logging.FileHandler; -import java.util.logging.Level; -import java.util.logging.Logger; - public class BungeeCore extends Plugin implements ICore { public static ICore instance; @@ -145,6 +146,7 @@ public void registerMethods() { methods.put("RUN_COMMAND", new CommonRunCommand()); methods.put("RUN_SCHEDULED_COMMAND", new CommonScheduledCommand()); methods.put("GET_SERVER_TIMESTAMP", new CommonGetTimestamp()); + methods.put("SET_MOTD", new CommonSetMotd()); // bungee methods methods.put("GET_MAX_PLAYERS", new BungeeGetMaxPlayers()); diff --git a/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeListeners.java b/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeListeners.java index 6f4ceac..06ef03d 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeListeners.java +++ b/src/main/java/fr/vmarchaud/mineweb/bungee/BungeeListeners.java @@ -26,9 +26,12 @@ import fr.vmarchaud.mineweb.common.ICore; import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.ServerPing; +import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.event.PlayerDisconnectEvent; import net.md_5.bungee.api.event.PostLoginEvent; +import net.md_5.bungee.api.event.ProxyPingEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; @@ -57,4 +60,18 @@ public void onQuit(PlayerDisconnectEvent e) { // update our cached player list api.getPlayers().remove(e.getPlayer().getName()); } + + + @EventHandler + public void onPing(ProxyPingEvent e) { + String motd = api.config().motd; + if(motd == null || motd.length() == 0) + return; + ServerPing response = e.getResponse(); + motd = motd.replace("&", "§").replace("{PLAYERS}", String.valueOf(api.getPlayers().size())); + response.setDescriptionComponent(new TextComponent(motd)); + e.setResponse(response); + } + + } diff --git a/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMOTD.java b/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMOTD.java index 9340f8a..4f77a64 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMOTD.java +++ b/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMOTD.java @@ -25,13 +25,18 @@ import fr.vmarchaud.mineweb.common.ICore; import fr.vmarchaud.mineweb.common.IMethod; +import fr.vmarchaud.mineweb.common.MethodHandler; import net.md_5.bungee.api.ProxyServer; +@MethodHandler public class BungeeGetMOTD implements IMethod { @Override public Object execute(ICore instance, Object... inputs) { - return ((ProxyServer)instance.getGameServer()).getConfigurationAdapter().getListeners().iterator().next().getMotd(); + if (instance.config().getMotd() == null || instance.config().getMotd().length() == 0) + return ((ProxyServer) instance.getGameServer()).getConfigurationAdapter().getListeners().iterator().next() + .getMotd(); + return instance.config().getMotd(); } } diff --git a/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMaxPlayers.java b/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMaxPlayers.java index b0b2bcb..ba010de 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMaxPlayers.java +++ b/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetMaxPlayers.java @@ -25,8 +25,10 @@ import fr.vmarchaud.mineweb.common.ICore; import fr.vmarchaud.mineweb.common.IMethod; +import fr.vmarchaud.mineweb.common.MethodHandler; import net.md_5.bungee.api.ProxyServer; +@MethodHandler public class BungeeGetMaxPlayers implements IMethod { @Override diff --git a/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetVersion.java b/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetVersion.java index b745250..c2d060a 100644 --- a/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetVersion.java +++ b/src/main/java/fr/vmarchaud/mineweb/bungee/methods/BungeeGetVersion.java @@ -25,8 +25,10 @@ import fr.vmarchaud.mineweb.common.ICore; import fr.vmarchaud.mineweb.common.IMethod; +import fr.vmarchaud.mineweb.common.MethodHandler; import net.md_5.bungee.api.ProxyServer; +@MethodHandler public class BungeeGetVersion implements IMethod { @Override diff --git a/src/main/java/fr/vmarchaud/mineweb/common/configuration/PluginConfiguration.java b/src/main/java/fr/vmarchaud/mineweb/common/configuration/PluginConfiguration.java index ffa1b35..91e2b69 100644 --- a/src/main/java/fr/vmarchaud/mineweb/common/configuration/PluginConfiguration.java +++ b/src/main/java/fr/vmarchaud/mineweb/common/configuration/PluginConfiguration.java @@ -10,20 +10,22 @@ @Data public class PluginConfiguration { - + public transient File path; public String logLevel = "FINE"; public String secretkey; + public String motd; public String domain; public Integer port; - + public PluginConfiguration(File path) { this.path = path; } - + /** * Load the configuration from the file + * * @param path object representing the path of the file * @param api interface for logging and use gson instance */ @@ -54,9 +56,10 @@ public static PluginConfiguration load(File path, ICore api) { return config; } } - + /** * Save the configuration to the file + * * @param api interface for logging and use gson instance */ public void save(ICore api) { diff --git a/src/main/java/fr/vmarchaud/mineweb/common/methods/CommonSetMotd.java b/src/main/java/fr/vmarchaud/mineweb/common/methods/CommonSetMotd.java new file mode 100644 index 0000000..60f301b --- /dev/null +++ b/src/main/java/fr/vmarchaud/mineweb/common/methods/CommonSetMotd.java @@ -0,0 +1,18 @@ +package fr.vmarchaud.mineweb.common.methods; + +import fr.vmarchaud.mineweb.common.ICore; +import fr.vmarchaud.mineweb.common.IMethod; +import fr.vmarchaud.mineweb.common.MethodHandler; + +@MethodHandler(inputs = 1, types = { String.class }) +public class CommonSetMotd implements IMethod { + + @Override + public Object execute(ICore instance, Object... inputs) { + String motd = (String) inputs[0]; + instance.config().setMotd(motd); + instance.config().save(instance); + return true; + } + +} diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml index 407232d..5b3147f 100644 --- a/src/main/resources/bungee.yml +++ b/src/main/resources/bungee.yml @@ -1,4 +1,4 @@ name: MinewebBridge main: fr.vmarchaud.mineweb.bungee.BungeeCore -version: 3.0.1 +version: 3.0.2 author: ThisIsMac, Shyrogan diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6758daa..1502825 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: MinewebBridge main: fr.vmarchaud.mineweb.bukkit.BukkitCore -version: 3.0.1 +version: 3.0.2 authors: - ThisIsMac - Shyrogan