diff --git a/pom.xml b/pom.xml index 6cc87f3..ea4d8f5 100644 --- a/pom.xml +++ b/pom.xml @@ -1,101 +1,114 @@ - 4.0.0 - pw.yumc - MiaoLobby - 1.3 - - ${project.name} - - - src/main/resources - true - - - - - maven-compiler-plugin - 3.3 - - 1.7 - 1.7 - - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - false - true - - - pw.yumc:YumCore - - - - - pw.yumc.YumCore - ${project.groupId}.${project.artifactId} - - - - - - package - - shade - - - - - - - - Jenkins - http://ci.yumc.pw/job/${project.artifactId}/ - - - - - DEBUG - UTF-8 - - - - spigot-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - - yumc-repo - http://repo.yumc.pw/content/groups/public/ - - - - - jtb - YUMC - http://repo.yumc.pw/content/repositories/yumcenter/ - - - - - org.spigotmc - spigot-api - jar - 1.10.2-R0.1-SNAPSHOT - - - pw.yumc - YumCore - jar - 1.0 - - - cn.citycraft - AuthMe - jar - 6.1 - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + pw.yumc + MiaoLobby + 1.4 + + ${project.name} + + + src/main/resources + true + + + + + maven-compiler-plugin + 3.3 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + false + true + + + pw.yumc:YumCore + + + + + pw.yumc.YumCore + ${project.groupId}.${project.artifactId} + + + + + + package + + shade + + + + + + com.github.wvengen + proguard-maven-plugin + + + package + + proguard + + + + + + + ${java.home}/lib/rt.jar + + + + + + + + + Jenkins + http://ci.yumc.pw/job/${project.artifactId}/ + + + DEV + UTF-8 + + + + yumc-repo + http://repo.yumc.pw/content/groups/public/ + + + + + jtb + YUMC + http://repo.yumc.pw/content/repositories/yumcenter/ + + + + + pw.yumc + YumCore + jar + 1.0 + + + cn.citycraft + AuthMe + jar + 6.1 + + + cn.citycraft + VBossAuth + 1.5.2 + + \ No newline at end of file diff --git a/src/main/java/pw/yumc/MiaoLobby/AuthMeHook.java b/src/main/java/pw/yumc/MiaoLobby/AuthMeHook.java deleted file mode 100644 index c4e5a51..0000000 --- a/src/main/java/pw/yumc/MiaoLobby/AuthMeHook.java +++ /dev/null @@ -1,21 +0,0 @@ -package pw.yumc.MiaoLobby; - -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -import fr.xephi.authme.events.LoginEvent; -import pw.yumc.YumCore.bukkit.P; - -public class AuthMeHook implements Listener { - private MiaoLobby plugin = P.getPlugin(); - - public AuthMeHook() { - Bukkit.getPluginManager().registerEvents(this, P.instance); - } - - @EventHandler - public void onLogin(final LoginEvent e) { - plugin.delayTP(e.getPlayer()); - } -} diff --git a/src/main/java/pw/yumc/MiaoLobby/Config.java b/src/main/java/pw/yumc/MiaoLobby/Config.java index d876355..3130b27 100644 --- a/src/main/java/pw/yumc/MiaoLobby/Config.java +++ b/src/main/java/pw/yumc/MiaoLobby/Config.java @@ -18,7 +18,7 @@ public class Config extends InjectConfig { public String TPDelay; public String Unavailable; public Boolean AutoTP; - public Boolean AuthMeAutoTP; + public Boolean LoginAutoTP; public Integer AutoTPDelay; public Boolean ReTry; } diff --git a/src/main/java/pw/yumc/MiaoLobby/MiaoLobby.java b/src/main/java/pw/yumc/MiaoLobby/MiaoLobby.java index 2a26787..262b4ed 100644 --- a/src/main/java/pw/yumc/MiaoLobby/MiaoLobby.java +++ b/src/main/java/pw/yumc/MiaoLobby/MiaoLobby.java @@ -1,23 +1,14 @@ package pw.yumc.MiaoLobby; -import java.security.SecureRandom; -import java.util.ArrayList; -import java.util.List; - import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; - -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; +import pw.yumc.MiaoLobby.hook.AuthMeHook; +import pw.yumc.MiaoLobby.hook.LoginHook; +import pw.yumc.MiaoLobby.hook.VBossAuthHook; import pw.yumc.YumCore.bukkit.Log; -import pw.yumc.YumCore.bukkit.compatible.C; import pw.yumc.YumCore.commands.CommandArgument; import pw.yumc.YumCore.commands.CommandExecutor; import pw.yumc.YumCore.commands.CommandManager; @@ -25,37 +16,18 @@ import pw.yumc.YumCore.commands.annotation.Cmd; import pw.yumc.YumCore.commands.annotation.Cmd.Executor; import pw.yumc.YumCore.commands.annotation.Help; import pw.yumc.YumCore.statistic.Statistics; +import pw.yumc.YumCore.update.SubscribeTask; -public class MiaoLobby extends JavaPlugin implements CommandExecutor, Listener { +public class MiaoLobby extends JavaPlugin implements CommandExecutor { Config config; - private final SecureRandom random = new SecureRandom(); @Cmd(permission = "MiaoLobby.default", executor = Executor.PLAYER) @Help("进行随机服务器传送") public boolean def(final CommandArgument e) { - random((Player) e.getSender()); + Util.random((Player) e.getSender()); return true; } - public void delayTP(final Player player) { - new BukkitRunnable() { - int delay = config.AutoTPDelay; - - @Override - public void run() { - if (player.isOnline()) { - if (delay > 0) { - C.ActionBar.send(player, String.format(config.TPDelay, delay)); - delay--; - return; - } - random(player); - } - cancel(); - } - }.runTaskTimerAsynchronously(this, 0, 20); - } - @Override public FileConfiguration getConfig() { return config.getConfig(); @@ -66,19 +38,17 @@ public class MiaoLobby extends JavaPlugin implements CommandExecutor, Listener { new CommandManager("MiaoLobby", this); Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); if (config.AutoTP) { - Bukkit.getPluginManager().registerEvents(this, this); - } else if (config.AuthMeAutoTP && Bukkit.getPluginManager().isPluginEnabled("AuthMe")) { - new AuthMeHook(); + new LoginHook(); + } else if (config.LoginAutoTP) { + if (Bukkit.getPluginManager().isPluginEnabled("AuthMe")) { + new AuthMeHook(); + } + if (Bukkit.getPluginManager().isPluginEnabled("VBossAuth")) { + new VBossAuthHook(); + } } new Statistics(); - // new SubscribeTask(true, true); - } - - @EventHandler - public void onJoin(PlayerJoinEvent e) { - if (config.AutoTP) { - delayTP(e.getPlayer()); - } + new SubscribeTask(true, true); } @Override @@ -92,40 +62,4 @@ public class MiaoLobby extends JavaPlugin implements CommandExecutor, Listener { config.reload(); Log.toSender(e.getSender(), "§a配置文件已重载!"); } - - private void connect(final Player p, final String server) { - final ByteArrayDataOutput out = ByteStreams.newDataOutput(); - try { - out.writeUTF("Connect"); - out.writeUTF(server); - } catch (final Exception ignored) { - } - p.sendPluginMessage(this, "BungeeCord", out.toByteArray()); - } - - void random(final Player player) { - new BukkitRunnable() { - List servers = new ArrayList<>(config.Servers); - int i = 0; - - @Override - public void run() { - if (servers.isEmpty()) { - if (config.ReTry) { - servers.addAll(config.Servers); - return; - } - C.ActionBar.send(player, config.Unavailable); - player.sendMessage(config.Unavailable); - } else if (player.isOnline()) { - final String sname = servers.remove(random.nextInt(servers.size())); - C.ActionBar.send(player, String.format(i > 0 ? config.TimeOut : config.Message, sname)); - connect(player, sname); - i++; - return; - } - cancel(); - } - }.runTaskTimerAsynchronously(this, 0, config.WaitTime); - } } diff --git a/src/main/java/pw/yumc/MiaoLobby/Util.java b/src/main/java/pw/yumc/MiaoLobby/Util.java new file mode 100644 index 0000000..e2e3cfe --- /dev/null +++ b/src/main/java/pw/yumc/MiaoLobby/Util.java @@ -0,0 +1,79 @@ +package pw.yumc.MiaoLobby; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; + +import pw.yumc.YumCore.bukkit.P; +import pw.yumc.YumCore.bukkit.compatible.C; + +/** + * @author 喵♂呜 + * @since 2016/12/25 0025 + */ +public class Util { + private final static SecureRandom random = new SecureRandom(); + private static MiaoLobby plugin = P.getPlugin(); + private static Config config = plugin.config; + + public static void delayTp(final Player player) { + new BukkitRunnable() { + int delay = config.AutoTPDelay; + + @Override + public void run() { + if (player.isOnline()) { + if (delay > 0) { + C.ActionBar.send(player, String.format(plugin.config.TPDelay, delay)); + delay--; + return; + } + random(player); + } + cancel(); + } + }.runTaskTimerAsynchronously(plugin, 0, 20); + } + + public static void connect(final Player p, final String server) { + final ByteArrayDataOutput out = ByteStreams.newDataOutput(); + try { + out.writeUTF("Connect"); + out.writeUTF(server); + } catch (final Exception ignored) { + } + p.sendPluginMessage(plugin, "BungeeCord", out.toByteArray()); + } + + public static void random(final Player player) { + new BukkitRunnable() { + List servers = new ArrayList<>(config.Servers); + int i = 0; + + @Override + public void run() { + if (servers.isEmpty()) { + if (config.ReTry) { + servers.addAll(config.Servers); + return; + } + C.ActionBar.send(player, config.Unavailable); + player.sendMessage(config.Unavailable); + } else if (player.isOnline()) { + final String sname = servers.remove(random.nextInt(servers.size())); + C.ActionBar.send(player, String.format(i > 0 ? config.TimeOut : config.Message, sname)); + connect(player, sname); + i++; + return; + } + cancel(); + } + }.runTaskTimerAsynchronously(plugin, 0, config.WaitTime); + } +} diff --git a/src/main/java/pw/yumc/MiaoLobby/hook/AuthMeHook.java b/src/main/java/pw/yumc/MiaoLobby/hook/AuthMeHook.java new file mode 100644 index 0000000..c60a2a1 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoLobby/hook/AuthMeHook.java @@ -0,0 +1,13 @@ +package pw.yumc.MiaoLobby.hook; + +import org.bukkit.event.EventHandler; + +import fr.xephi.authme.events.LoginEvent; +import pw.yumc.MiaoLobby.Util; + +public class AuthMeHook extends Hook { + @EventHandler + public void onLogin(final LoginEvent e) { + Util.delayTp(e.getPlayer()); + } +} diff --git a/src/main/java/pw/yumc/MiaoLobby/hook/Hook.java b/src/main/java/pw/yumc/MiaoLobby/hook/Hook.java new file mode 100644 index 0000000..d8bf8f5 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoLobby/hook/Hook.java @@ -0,0 +1,12 @@ +package pw.yumc.MiaoLobby.hook; + +import org.bukkit.Bukkit; +import org.bukkit.event.Listener; + +import pw.yumc.YumCore.bukkit.P; + +public class Hook implements Listener { + public Hook() { + Bukkit.getPluginManager().registerEvents(this, P.instance); + } +} diff --git a/src/main/java/pw/yumc/MiaoLobby/hook/LoginHook.java b/src/main/java/pw/yumc/MiaoLobby/hook/LoginHook.java new file mode 100644 index 0000000..7cd49f5 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoLobby/hook/LoginHook.java @@ -0,0 +1,15 @@ +package pw.yumc.MiaoLobby.hook; + +import org.bukkit.event.player.PlayerJoinEvent; + +import pw.yumc.MiaoLobby.Util; + +/** + * @author 喵♂呜 + * @since 2016/12/25 0025 + */ +public class LoginHook extends Hook { + public void onJoin(PlayerJoinEvent e) { + Util.delayTp(e.getPlayer()); + } +} diff --git a/src/main/java/pw/yumc/MiaoLobby/hook/VBossAuthHook.java b/src/main/java/pw/yumc/MiaoLobby/hook/VBossAuthHook.java new file mode 100644 index 0000000..8bcf113 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoLobby/hook/VBossAuthHook.java @@ -0,0 +1,13 @@ +package pw.yumc.MiaoLobby.hook; + +import org.bukkit.event.EventHandler; + +import cn.citycraft.VBossAuth.event.LoginEvent; +import pw.yumc.MiaoLobby.Util; + +public class VBossAuthHook extends Hook { + @EventHandler + public void onLogin(final LoginEvent e) { + Util.delayTp(e.getPlayer()); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 10f662d..7daaf43 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,17 +1,17 @@ #配置文件版本 请勿修改 -Version: 1.3 +Version: 1.4 -#数据库信息 +#服务器列表 Servers: - lobby1 - lobby2 #传送超时时间(单位: Tick) WaitTime: 35 -#自带传送(如果开启 则AuthMe自动传送失效) +#自带传送(如果开启 则Login自动传送失效) AutoTP: false -#AuthMe自动传送 -AuthMeAutoTP: true -#自动传送延时(单位: 秒) +#登录自动传送(暂时支持AuthMe和VBossAuth) +LoginAutoTP: true +#传送延时(单位: 秒) AutoTPDelay: 10 #尝试完毕后是否继续重试 ReTry: true