From 5f15ea2d4d14b4e614b2f4b363727331c8e2ee0d Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Thu, 5 Dec 2024 13:39:10 +0700 Subject: [PATCH] fix: hopefully finally fix it --- build-number.txt | 2 +- .../plugins/PlayersPersistentDataPlugin.java | 89 ++++++++++--------- .../chomens_bot/plugins/PlayersPlugin.java | 8 +- 3 files changed, 47 insertions(+), 52 deletions(-) diff --git a/build-number.txt b/build-number.txt index 0d30c07f..77e48ce7 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -1189 \ No newline at end of file +1193 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java index 69a8a1fb..b241224f 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java @@ -26,65 +26,66 @@ public class PlayersPersistentDataPlugin extends PlayersPlugin.Listener { } @Override - public synchronized void playerJoined(PlayerEntry target) { - bot.executorService.submit(() -> { - try { - lock.lock(); + public void playerJoined(PlayerEntry target) { + try { + final JsonNode originalElement = playersObject.get(target.profile.getName()); - final JsonNode originalElement = playersObject.get(target.profile.getName()); + System.out.println("the original element " + originalElement); - ObjectNode object; + ObjectNode object; - if (originalElement == null || originalElement.isNull()) { - object = JsonNodeFactory.instance.objectNode(); - object.put("uuid", target.profile.getIdAsString()); - object.set("ips", JsonNodeFactory.instance.objectNode()); - } else if (originalElement instanceof ObjectNode) { - object = (ObjectNode) originalElement; - } else { - lock.unlock(); - return; - } - - lock.unlock(); - - final CompletableFuture future = bot.players.getPlayerIP(target); - - if (future == null) { - setPersistentEntry(target, object); - return; - } - - future.completeOnTimeout(null, 5, TimeUnit.SECONDS); - - future.thenApplyAsync(output -> { - if (output != null) { - ((ObjectNode) object.get("ips")).put(bot.host + ":" + bot.port, output); - } - - setPersistentEntry(target, object); - - return output; - }); - } catch (Exception e) { - e.printStackTrace(); + if (originalElement == null || originalElement.isNull()) { + System.out.println("entry no exist"); + object = JsonNodeFactory.instance.objectNode(); + object.put("uuid", target.profile.getIdAsString()); + object.set("ips", JsonNodeFactory.instance.objectNode()); + } else if (originalElement instanceof ObjectNode) { + System.out.println("entry exist"); + object = (ObjectNode) originalElement; + } else { + return; } - }); + + final CompletableFuture future = bot.players.getPlayerIP(target); + + if (future == null) { + setPersistentEntry(target, object); + return; + } + + future.completeOnTimeout(null, 5, TimeUnit.SECONDS); + + future.thenApplyAsync(output -> { + System.out.println("i got the ip it is " + output); + + if (output != null) { + ((ObjectNode) object.get("ips")).put(bot.host + ":" + bot.port, output); + } + + setPersistentEntry(target, object); + + return output; + }); + } catch (Exception e) { + e.printStackTrace(); + } } // is this bad? private synchronized void setPersistentEntry (PlayerEntry target, ObjectNode object) { + System.out.println("locking"); + lock.lock(); try { - lock.lock(); - + System.out.println("setting"); playersObject.set(getName(target), object); PersistentDataUtilities.put("players", playersObject); - - lock.unlock(); + System.out.println("done setting"); } catch (Exception e) { e.printStackTrace(); } + lock.unlock(); + System.out.println("unlock !"); } private String getName (PlayerEntry target) { diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java index fcfdf86f..2cfb839c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java @@ -149,13 +149,7 @@ public class PlayersPlugin extends Bot.Listener { list.add(target); if (duplicate == null) { - for (Listener listener : listeners) { - try { - listener.playerJoined(target); - } catch (Exception e) { - e.printStackTrace(); - } - } + for (Listener listener : listeners) { listener.playerJoined(target); } } else { for (Listener listener : listeners) { listener.playerUnVanished(target); } }