From 7db19f77a11c57cc5f57910199b5d53ffe514bdb Mon Sep 17 00:00:00 2001 From: Kamesuta Date: Sun, 18 Feb 2018 20:19:55 +0900 Subject: [PATCH] Population check --- .../net/teamfruit/serverobserver/Config.java | 2 ++ .../teamfruit/serverobserver/GuiHandler.java | 19 ++++++++++++++++++- .../assets/serverobserver/lang/en_US.lang | 2 ++ .../assets/serverobserver/lang/ja_JP.lang | 8 +++++--- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/teamfruit/serverobserver/Config.java b/src/main/java/net/teamfruit/serverobserver/Config.java index ab805ce..d192f17 100644 --- a/src/main/java/net/teamfruit/serverobserver/Config.java +++ b/src/main/java/net/teamfruit/serverobserver/Config.java @@ -24,6 +24,7 @@ public class Config { public final ConfigProperty notificationPitch; public final ConfigProperty startWithMultiplayerMenu; public final ConfigProperty startAndConnect; + public final ConfigProperty ignorePopulation; public final ConfigProperty targetServerName; public final ConfigProperty targetServerIP; @@ -52,6 +53,7 @@ private Config(final @Nonnull File staticFile, final @Nonnull File dynamicFile, this.config.getCategory("Miscellaneous").setLanguageKey("serverobserver.config.miscellaneous").setComment("Miscellaneous"); this.startWithMultiplayerMenu = this.config.propertyBoolean(this.config.get("Miscellaneous", "StartWithMultiplayerMenu", false, "After game initialized, show multiplayer menu").setLanguageKey("serverobserver.config.miscellaneous.startwithmultiplayermenu").setRequiresMcRestart(true)); this.startAndConnect = this.config.propertyBoolean(this.config.get("Miscellaneous", "StartAndConnect", false, "After game initialized, connect to the server").setLanguageKey("serverobserver.config.miscellaneous.startandconnect").setRequiresMcRestart(true)); + this.ignorePopulation = this.config.propertyBoolean(this.config.get("Miscellaneous", "IgnorePopulation", false, "Try connection if server is full").setLanguageKey("serverobserver.config.miscellaneous.ignorepopulation")); // init dynamic config this.dynamicconfig = new ConfigBase(dynamicFile, version); diff --git a/src/main/java/net/teamfruit/serverobserver/GuiHandler.java b/src/main/java/net/teamfruit/serverobserver/GuiHandler.java index 96a4281..d827329 100644 --- a/src/main/java/net/teamfruit/serverobserver/GuiHandler.java +++ b/src/main/java/net/teamfruit/serverobserver/GuiHandler.java @@ -347,7 +347,24 @@ public void tickclient() { final ServerData serverData = this.target.get(mpgui); if (serverData!=null) { final Boolean before = this.targetServerStatus; - this.targetServerStatus = this.compat.getPinged(serverData)&&serverData.pingToServer>=0; + boolean checkPopulation = true; + if (!Config.getConfig().ignorePopulation.get()) { + final String populationFormatted = serverData.populationInfo; + if (populationFormatted!=null) { + final String population = populationFormatted.replaceAll("\u00A7[0-9a-fklmnor]", ""); + if (StringUtils.contains(population, "/")) { + final String strBefore = StringUtils.substringBefore(population, "/"); + final String strAfter = StringUtils.substringAfterLast(population, "/"); + try { + final int current = Integer.parseInt(strBefore); + final int overall = Integer.parseInt(strAfter); + checkPopulation = current=0&&checkPopulation; // Log.log.info("pinged: {}, pingms: {}", serverData.pinged, serverData.pingToServer); if (this.targetServerStatus) if (before!=null&&!before) { diff --git a/src/main/resources/assets/serverobserver/lang/en_US.lang b/src/main/resources/assets/serverobserver/lang/en_US.lang index ed8a5c0..82a1bcb 100644 --- a/src/main/resources/assets/serverobserver/lang/en_US.lang +++ b/src/main/resources/assets/serverobserver/lang/en_US.lang @@ -38,6 +38,8 @@ serverobserver.config.miscellaneous.startwithmultiplayermenu=Start with Multipla serverobserver.config.miscellaneous.startwithmultiplayermenu.tooltip=After game initialized, show multiplayer menu serverobserver.config.miscellaneous.startandconnect=Start and connect to the server serverobserver.config.miscellaneous.startandconnect.tooltip=After game initialized, connect to the server +serverobserver.config.miscellaneous.ignorepopulation=Ignore Population +serverobserver.config.miscellaneous.ignorepopulation.tooltip=Try connection if server is full serverobserver.config.status=Status serverobserver.config.status.tooltip=Current Status serverobserver.config.status.initservers=Initialize server list diff --git a/src/main/resources/assets/serverobserver/lang/ja_JP.lang b/src/main/resources/assets/serverobserver/lang/ja_JP.lang index b0275d3..f025799 100644 --- a/src/main/resources/assets/serverobserver/lang/ja_JP.lang +++ b/src/main/resources/assets/serverobserver/lang/ja_JP.lang @@ -9,7 +9,7 @@ serverobserver.gui.backandstop=監視を停止して戻る serverobserver.gui.backandstop.time=%s: %s秒 serverobserver.config=ServerObserver設定 serverobserver.config.observetarget=監視サーバーのデフォルト設定 -serverobserver.config.observetarget.tooltip=監視対象サーバーのデフォルト設定 (この設定はStatusへコピーされてから使用されます。ModPack作成の際はここを変更してください) +serverobserver.config.observetarget.tooltip=監視対象サーバーのデフォルト設定 (この設定はStatusへコピーされてから使用されます ModPack作成の際はここを変更してください) serverobserver.config.observetarget.servername=サーバーネーム serverobserver.config.observetarget.servername.tooltip=監視対象サーバーのサーバーの名前 serverobserver.config.observetarget.serverip=サーバーIP @@ -35,9 +35,11 @@ serverobserver.config.notification.pitch.tooltip=サウンドのピッチ (最 serverobserver.config.miscellaneous=その他 serverobserver.config.miscellaneous.tooltip=その他設定 serverobserver.config.miscellaneous.startwithmultiplayermenu=マルチプレイ画面から開始 -serverobserver.config.miscellaneous.startwithmultiplayermenu.tooltip=起動したあと、マルチプレイ画面を表示します。 +serverobserver.config.miscellaneous.startwithmultiplayermenu.tooltip=起動したあと、マルチプレイ画面を表示します serverobserver.config.miscellaneous.startandconnect=起動後サーバーへ接続 -serverobserver.config.miscellaneous.startandconnect.tooltip=起動したあと、サーバーへ接続します。 +serverobserver.config.miscellaneous.startandconnect.tooltip=起動したあと、サーバーへ接続します +serverobserver.config.miscellaneous.ignorepopulation=人数を無視 +serverobserver.config.miscellaneous.ignorepopulation.tooltip=サーバー人数がいっぱいでもログインを試みます serverobserver.config.status=ステータス serverobserver.config.status.tooltip=現在の状態 serverobserver.config.status.initservers=サーバーリストを初期化