Ich habe es jetzt einfach über den Namen, des Items laufen lassen!
Ich habe die ganze Zeit nur an die Farben gedacht!
Ich habe es jetzt einfach über den Namen, des Items laufen lassen!Ich habe die ganze Zeit nur an die Farben gedacht!
Sicher , das würde dich aber auf das Enum bzw. das Prüfen der Boots beschränken. Nimmst du die Boots aber als Superklasse , kannst du dich auf ihre Funktionalität fokussieren, ihre einzelnen Typen (Subklassen) strukturierter erarbeiten und hast am Ende einen besseren Blick über das Projekt@galaone Wäre es nicht einfacher sich ein Enum zu erstellen? Dadurch könnte man viel schneller und einfacher Abfragen, welche Boots es waren.
Hallo wie kann ich mit Packets ein ender crystal spawnen?
lern bitte lesen c:World#spawnEntity(Location, EntityType.ENDER_CRYSTAL)
public static void spawnEnderCrystal(Player player, Location location){
EntityEnderCrystal entity = new EntityEnderCrystal(getWorld(location.getWorld()));
entity.setPosition(location.getX(), location.getY(), location.getZ());
PacketPlayOutSpawnEntity packet = new PacketPlayOutSpawnEntity(entity, 200);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
private static WorldServer getWorld(World world){
return ((CraftWorld) world).getHandle();
}
Warum sollte man diese mit Packets spawnen?
Sollte so gehen:
Code:public static void spawnEnderCrystal(Player player, Location location){ EntityEnderCrystal entity = new EntityEnderCrystal(getWorld(location.getWorld())); entity.setPosition(location.getX(), location.getY(), location.getZ()); PacketPlayOutSpawnEntity packet = new PacketPlayOutSpawnEntity(entity, 200); ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); } private static WorldServer getWorld(World world){ return ((CraftWorld) world).getHandle(); }
Ich würde garnicht die Spieler in einer Datenbank speichern. Ich würde beim eingeben des Namens die UUID abfragen und nur mit dieser arbeiten.Wie wird auf dem Gomme Netzwerk eigentlich folgendes Problem gehandhabt?
Wenn man eine UUID zu einem Namen braucht oder umgekehrt und der Spieler gerade nicht online ist, wird ja nur eure Datenbank mit Spielern, die schon mal auf dem Netzwerk waren, geprüft. Und jetzt das Problem: Spieler1 hat den Namen Olaf. Damit war er auch schon auf dem Server sodass in der Datenbank der Name Olaf der UUID von Spieler1 zugewiesen wird. Nun gefällt ihm sein Name allerdings nicht mehr und er benennt sich in Guenther um. Seit dem Namechange war er jedoch nie wieder auf dem Netzwerk sodass ihm dort immer noch der Name Olaf zugeordnet wird. Nach 37 Tagen nennt sich jetzt ein Spieler2 Olaf (geht ja nach 37 tagen) und joined damit auf das Netzwerk. Jetzt gibt es das Problem, dass zwei mal der Name Olaf in der Datenbank vergeben ist. Wenn jetzt ein Spieler z.B. "/friend add Olaf" eingibt, was passiert dann?
Wird dann einfach die UUID von dem neueren Olaf genommen und der alte ignoriert? Das hätte den Nachteil, dass Spieler1 nicht als Freund geaddet werden kann. Oder fragt ihr beim Joinen von Spieler2 die Mojang API nach Spieler1's aktuellem Namen?
@geNAZt @delta242
Hat er ja gar nicht erwähnt oder so.@Dosenwerfer
Mojang bietet eine offizielle API, mit der man von Namen die zugehörige UUID bekommen kann und andersrum. Außerdem gibt es auch die Name-History, welche die sagt, wann der Name zu was geändert wurde.
MonangAPI: http://wiki.vg/Mojang_API
Und von wo willst du die abfragen, wenn der Spieler offline ist?Ich würde beim eingeben des Namens die UUID abfragen und nur mit dieser arbeiten.
Das habe ich doch geschrieben. Lies meinen Beitrag doch komplett. Du kannst die API aber nicht immer befragen:@Dosenwerfer
Mojang bietet eine offizielle API, mit der man von Namen die zugehörige UUID bekommen kann und andersrum. Außerdem gibt es auch die Name-History, welche die sagt, wann der Name zu was geändert wurde.
MonangAPI: http://wiki.vg/Mojang_API
Darauf bin ich auch schon gekommen, aber wäre das nicht etwas seltsam? "Wir haben in unserer Datenbank zwei Olafs. Bitte klicke auf die UUID von dem, den du meinst: UUID1 UUID2" Als ob derjenige die UUID von dem Spieler weiß, den er meint (er würde wahrscheinlich auf einer Website nachschauen und so ebenfalls die Mojang API anfragen, nur halt viel umständlicher).Man kann bei einer Gleichheit höchstens den Spieler direkt fragen, welche UUID er genau meint.
So extrem unwahrscheinlich ist das nicht. Schau dir mal an wie viele Spieler hier spielenIch weiß auch gar nicht, ob das Team diesen extremen Sonderfall berücksichtigt hat.
Team.setCanSeeFriendlyInvisibles(true);
public class Ghost {
public static Scoreboard board;
public static Team ghost;
public static void init()
{
board = Bukkit.getScoreboardManager().getNewScoreboard();
ghost = board.getTeam("specs");
if(ghost == null)
{
ghost = board.registerNewTeam("specs");
}
ghost.setCanSeeFriendlyInvisibles(true);
ghost.setNameTagVisibility(NameTagVisibility.NEVER);
}
public static void addGhost(Player p)
{
ghost.addPlayer(p);
p.setScoreboard(board);
p.sendMessage("" + p.getScoreboard().getPlayerTeam(p).canSeeFriendlyInvisibles());
p.sendMessage("" + p.getScoreboard().getPlayerTeam(p).getName());
p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 0));
}
}
Bukkit.getScheduler().runTaskLater(Skywars.plugin, new Runnable() {
@Override
public void run() {
Ghost.addGhost(pp);
}
},5);
Folgendes würde auch noch gehen: Die Person, welche als letztes auf dem Server gespielt hat, ist mit höchster Wahrscheinlichkeit der wahre z.B. "Olaf". Wenn z.B. zwei Olafs in der Datenbank vorhanden sind, dann ist der Olaf, der schon seit längerem nicht mehr auf dem Server war, keinenfalls der richtige Olaf, der andere aber mit einer hohen Wahrscheinlichkeit schon. Man würde also die Person nehmen, welche als letztes den Namen Olaf getragen hat.
Wird dann einfach die UUID von dem neueren Olaf genommen und der alte ignoriert? Das hätte den Nachteil, dass Spieler1 nicht als Freund geaddet werden kann. Oder fragt ihr beim Joinen von Spieler2 die Mojang API nach Spieler1's aktuellem Namen?