//True wenn Spieler im SilentHub ist - wird nur gespeichert solange der Server nicht reloaded wird
//Für dauerhaftes Speichern am besten Redis/MySQL nutzen, wenn du wissen willst wie, lass es mich wissen ;)
public static HashMap<Player, Boolean> playersInSilentHub = new HashMap<Player,Boolean>();
@EventHandler
public void on(PlayerInteractEvent e) {
Player p = e.getPlayer();
if (e.getAction() == Action.RIGHT_CLICK_AIR
|| e.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (e.getItem().getType() == Material.TNT) {
if (e.getItem().getItemMeta().getDisplayName()
.equalsIgnoreCase("§e§lSilent-Hub")) {
//Ist Spieler imSilentHub
if(playersInSilentHub.get(p)){
for (Player player : Bukkit.getOnlinePlayers()) {
p.showPlayer(player);
}
p.playSound(p.getLocation(), Sound.WITHER_DEATH, 1,
2);
p.playEffect(p.getLocation(), Effect.SMOKE, 2);
p.sendMessage(prefix + "§2Du hast den §eSilent-Hub§2 verlassen!");
playersInSilentHub.put(p, false);
}else{
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
p.hidePlayer(player);
}
//Dieser Block von Anweisungen muss außerhalb der For-Schleife sein. Er wird sonst so oft ausgeführt, wie Spieler online sind.
//->Java Basics For-Schleifen
p.sendMessage(prefix + "§2Du bist nun in der §eSilent-Hub§2!");
p.playSound(p.getLocation(), Sound.ENDERMAN_TELEPORT,
1, 5);
p.playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2);
playersInSilentHub.put(p, true);
}
}
}
}
}
//Spieler kann direkt beim Joinen zum InvisibleHub geaddet werden.
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e){
if(!playersInSilentHub.containsKey(e.getPlayer())){
playersInSilentHub.put(e.getPlayer(), false);
}else{
e.getPlayer().sendMessage(prefix + "§2 Du befindest dich im §eSilentHub");
for(Player p : Bukkit.getOnlinePlayers()){
e.getPlayer().hidePlayer(p);
}
}
}