• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PlugIn Vanish Plugin zeigt nach rejoin immernoch den Spieler in Tablist an

Y

YoshiMiner

Guest
Also ich hab ein /v Befehl, der mich zum Vanish macht und im JoinListener wird, wenn ich im Vanish bin, werde ich vor allen unsichtbar gemacht und ich werde vor allen anderen die im Vanish sind unsichtbar gemacht.

Allerdings wenn ich mit 1 Acc on komme und /v eingebe, sieht mich ja der 2. Acc nicht mehr, aber wenn der 2. Acc dann neu joint, sieht er vom 1. Acc die Figur nicht mehr, aber er sieht es in der Tablist. Warum?

Befehl:
Code:
package commands;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.ArrayList;

public class VanishCommand implements CommandExecutor {
public static ArrayList<String> vanished = new ArrayList<String>();

@Overridepublic boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(!(sender instanceof Player)) {
sender.sendMessage("§b[§aFreebuild§b]§c Diesen Befehl können nur Spieler ausführen!");
return true;
}
Player p = (Player) sender;
if(!vanished.contains(p.getUniqueId().toString())) {
vanished.add(p.getUniqueId().toString());
for (Player pl : Bukkit.getOnlinePlayers()) {
if(!(pl.getUniqueId().toString() == p.getUniqueId().toString())) {
pl.hidePlayer(p);
}
}
Bukkit.broadcastMessage("§e" + p.getName() + " §bhat §5Freebuild §cverlassen");
if(!(args.length == 0)) {
String arg = String.join(" ", args);
Bukkit.broadcastMessage("§aGrund§c: §b" + arg);
}
} else {
vanished.remove(p.getUniqueId().toString());
for (Player pl : Bukkit.getOnlinePlayers()) {
pl.showPlayer(p);
}
Bukkit.broadcastMessage("§e" + p.getName() + " §bhat §5Freebuild §abetreten");
}
return true;
}

}
Join Listener:
Code:
package listener;

import commands.VanishCommand;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;

public class JoinListener implements Listener {

@EventHandlerpublic void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
for(Player pl : Bukkit.getOnlinePlayers()) {
if(VanishCommand.vanished.contains(pl.getUniqueId().toString())) {
p.hidePlayer(pl);
}
}
if(VanishCommand.vanished.contains(p.getUniqueId().toString())) {
for(Player pl : Bukkit.getOnlinePlayers()) {
if(!(pl.getUniqueId().toString() == p.getUniqueId().toString())) {
pl.hidePlayer(p);
}
}
e.setJoinMessage(null);
} else {
e.setJoinMessage("§e" + e.getPlayer().getName() + " §bhat §5Freebuild §abetreten");
}
return;
}

}
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Warum wandelst du die UUIDs in Strings um statt eine Liste direkt für UUID zu nehmen? Bei Vergleichen von UUIDs oder Strings solltest du immer .equals() verwenden! Das "==" nur für einfache Datentypen wie int oder double bzw. Enums.

Verwendest du für die Tabliste evtl. ein anderes Plugin oder z.B. BungeeCord mit einem Plugin?

Eine wichtige Funktion fehlt deinem Plugin aber noch: Spieler mit Berechtigung für /v sollten sich gegenseitig sehen dürfen.
 
Y

YoshiMiner

Guest
Warum wandelst du die UUIDs in Strings um statt eine Liste direkt für UUID zu nehmen? Bei Vergleichen von UUIDs oder Strings solltest du immer .equals() verwenden! Das "==" nur für einfache Datentypen wie int oder double bzw. Enums.
ist jetzt egal

Verwendest du für die Tabliste evtl. ein anderes Plugin oder z.B. BungeeCord mit einem Plugin?
nop, aber habe skinsrestorer drauf, liegt es vielleicht daran?

Eine wichtige Funktion fehlt deinem Plugin aber noch: Spieler mit Berechtigung für /v sollten sich gegenseitig sehen dürfen.
ja mach ich später
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
ja aber bei mir hats gefunzt
Ich möcht nochmal kurz darauf eingehen: Durch solche Programmierweisen kommen dann am Ende die Aussagen "Ja, also bei mir funktioniert es, warum es bei dir nicht funktioniert kann ich nicht sagen" zustande :p
Es gibt nicht umsonst Konventionen/Richtlinien, eine davon besagt, dass Vergleiche von Strings mit equals(...) bzw. equalsIgnoreCase(..) gemacht werden ;)
 
Y

YoshiMiner

Guest
Ich möcht nochmal kurz darauf eingehen: Durch solche Programmierweisen kommen dann am Ende die Aussagen "Ja, also bei mir funktioniert es, warum es bei dir nicht funktioniert kann ich nicht sagen" zustande :p
Es gibt nicht umsonst Konventionen/Richtlinien, eine davon besagt, dass Vergleiche von Strings mit equals(...) bzw. equalsIgnoreCase(..) gemacht werden ;)
ich werde doch wohl programmieren dürfen wie ICH will.
Oder steht das irgendwo im Gesetz, wie man zu programmieren hat
 
Oben