From 945e707b205456e037038f7db76b33ec890f24b6 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 21 May 2023 18:10:33 +0200 Subject: [PATCH] removing possibility of multible serverchanges at a time --- .../listener/PlayerDisconnectListener.java | 13 ++++++++++++ .../PlayerEntityInteractListener.java | 6 ++++++ .../spawn/util/PlayerOnlineUtil.java | 20 +++++++++++++++++++ .../spawn/util/VillagerSpawner.java | 4 +--- 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerDisconnectListener.java create mode 100644 src/main/java/eu/mhsl/craftattack/spawn/util/PlayerOnlineUtil.java diff --git a/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerDisconnectListener.java b/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerDisconnectListener.java new file mode 100644 index 0000000..8512c8d --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerDisconnectListener.java @@ -0,0 +1,13 @@ +package eu.mhsl.craftattack.spawn.listener; + +import eu.mhsl.craftattack.spawn.util.PlayerOnlineUtil; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; + +public class PlayerDisconnectListener implements Listener { + @EventHandler + public void onDisconnect(PlayerQuitEvent event) { + if (PlayerOnlineUtil.worldMuseumCheck(event.getPlayer())) PlayerOnlineUtil.remove(event.getPlayer()); + } +} diff --git a/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java b/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java index a0cde6a..98de7c4 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java @@ -1,8 +1,10 @@ package eu.mhsl.craftattack.spawn.listener; import eu.mhsl.craftattack.spawn.util.ConfigUtil; +import eu.mhsl.craftattack.spawn.util.PlayerOnlineUtil; import eu.mhsl.craftattack.spawn.util.PluginMessage; import eu.mhsl.craftattack.spawn.util.VillagerSpawner; +import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractAtEntityEvent; @@ -13,7 +15,11 @@ public class PlayerEntityInteractListener implements Listener { public void onInteract(PlayerInteractAtEntityEvent event) { if (!event.getRightClicked().equals(VillagerSpawner.getStaticVillager())) return; event.setCancelled(true); + if (PlayerOnlineUtil.worldMuseumCheck(event.getPlayer())) return; + String servername = ConfigUtil.getConfigUtil().getConfig().getString("world-museum-name"); pluginMessage.connect(event.getPlayer(), servername); + PlayerOnlineUtil.addPlayer(event.getPlayer()); + Bukkit.getLogger().info(event.getPlayer().getName() + " connects to Worldmuseum"); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/util/PlayerOnlineUtil.java b/src/main/java/eu/mhsl/craftattack/spawn/util/PlayerOnlineUtil.java new file mode 100644 index 0000000..7e846de --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/util/PlayerOnlineUtil.java @@ -0,0 +1,20 @@ +package eu.mhsl.craftattack.spawn.util; + +import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.List; + +public class PlayerOnlineUtil { + private static final List playerOnWorldMuseum= new ArrayList<>(); // if player is in list --> he will be connected to worldmuseum + + public static void addPlayer(Player player) { + playerOnWorldMuseum.add(player); + } + public static boolean worldMuseumCheck(Player player) { + return playerOnWorldMuseum.contains(player); + } + public static void remove(Player player) { + playerOnWorldMuseum.remove(player); + } + +} diff --git a/src/main/java/eu/mhsl/craftattack/spawn/util/VillagerSpawner.java b/src/main/java/eu/mhsl/craftattack/spawn/util/VillagerSpawner.java index 0aa5c2a..e2e9b9e 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/util/VillagerSpawner.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/util/VillagerSpawner.java @@ -1,7 +1,6 @@ package eu.mhsl.craftattack.spawn.util; import org.bukkit.Location; -import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Villager; @@ -12,9 +11,8 @@ public class VillagerSpawner { Location location = config.getVillagerLocation(); assert EntityType.VILLAGER.getEntityClass() != null; - Entity entity = location.getWorld().spawn(location, EntityType.VILLAGER.getEntityClass()); + Villager villager = (Villager) location.getWorld().spawn(location, EntityType.VILLAGER.getEntityClass()); - Villager villager = (Villager) entity; villager.setAI(false); villager.setInvulnerable(true); villager.setSilent(true);