removing possibility of multible serverchanges at a time

This commit is contained in:
Martin Olischläger 2023-05-21 18:10:33 +02:00
parent 3845f104c6
commit 945e707b20
4 changed files with 40 additions and 3 deletions

@ -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());
}
}

@ -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");
}
}

@ -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<Player> 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);
}
}

@ -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);