package de.oppermann.bastian.spleef.util; import java.util.HashMap; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; /** * Strange class, but necessary cause bukkit sucks. (no EntityDismountEvent, only a VehicleExitEvent...) * <p> * (Threadsafe class) */ public class PlayerDismountCheckTask implements Runnable { private static final HashMap<UUID, Entity> PLAYERS = new HashMap<>(); @Override public void run() { synchronized (PLAYERS) { for (UUID playerUUID : PLAYERS.keySet()) { Player player = Bukkit.getPlayer(playerUUID); if (player != null) { if (player.getVehicle() == null) { PLAYERS.get(playerUUID).setPassenger(player); } } } } } public static void addDisallowedPlayer(Player player) { synchronized (PLAYERS) { if (player.getVehicle() == null) { return; } PLAYERS.put(player.getUniqueId(), player.getVehicle()); } } public static void removePlayer(Player player) { synchronized (PLAYERS) { PLAYERS.remove(player.getUniqueId()); } } }