Minecraft-Programmierung

...komplette Frage anzeigen

2 Antworten

I know, ich bin ein Anfänger. :)

Ziemlich. Du wirst Sachen durcheinander, die gar nichts miteinander zu tun haben.

Aber als Hilfe, so gibst Du allen Spielern volles Leben:

for (Player p : Bukkit.getOnlinePlayers()) {

  p.setHealth(p.getMaxHealth());

}

iGamePlayHD 25.02.2014, 21:52

Ich weiß, aber das mit Heal war ein Beispiel, danke der Command funktioniert. Ich will statt den Spieler, das hier machen:

if (cmd.getName().equalsIgnoreCase("nick")) {
  if (p.hasPermission("nick.use")) {
    if (args.length == 1) {
      if (args[0].equalsIgnoreCase("reset")) {
        if (Spieler.nick.containsKey(name)) {
          Spieler.nick.remove(name);
          p.setDisplayName(p.getName());
          p.setPlayerListName(p.getName())

Dass halt alle Spieler deren richtigen Namen erhalten. Ich teste es jedoch mit den, aber es reagiert nicht so gut.

package me.igameplayhd.server.commands;

import me.igameplayhd.server.Spieler;

import org.bukkit.Bukkit; import me.igameplayhd.*; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.kitteh.tag.TagAPI;

public class reset implements CommandExecutor {

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
        String[] args) {

    Player e = (Player) sender;

    if(args.length == 0) {
    if(e.hasPermission("nick.reset"))
    for (Player p : Bukkit.getOnlinePlayers()) {

            p.setDisplayName(p.getName());
            p.setPlayerListName(p.getName());
            p.setCustomName(p.getName());

            TagAPI.refreshPlayer(p);

        }
    }
    return false;
}

}

Eine neue Class. Ich will das in getrennten Befehlen machen. /reset -> Reseten /nick Namen ändern, /nick klappt ja bereits. Aber /reset kriege ich nicht gut hin. Danke für den Tipp. Ich versuche mal es weiter hinzubekommen, danke nochmal! :-)

1
iGamePlayHD 25.02.2014, 22:24

Ich habe das jetzt in 1 Class geschrieben, aber das Problem ist: /nick resetall geht, aber /nick reset geht nicht. /nick resetall -> Alle Spielernamen reseten || /nick reset nur den jeweiligen Spielernamen reseten

Code:

if (cmd.getName().equalsIgnoreCase("nick")) {
  if (p.hasPermission("nick.use")) {
    if (args.length == 1) {
      if (args[0].equalsIgnoreCase("resetall")) {
        if (Spieler.nick.containsKey(name)) {
            for (Player e : Bukkit.getOnlinePlayers()) {
          Spieler.nick.remove(name);
          e.setDisplayName(p.getName());
          e.setPlayerListName(p.getName());
          e.setCustomName(p.getName());
          TagAPI.refreshPlayer(p);

            }

            return true;
        }
            if (cmd.getName().equalsIgnoreCase("nick")) {
                  if (p.hasPermission("nick.reset")) {
                    if (args.length == 1) {
                      if (args[0].equalsIgnoreCase("reset")) {
                        if (Spieler.nick.containsKey(name)) {
                          Spieler.nick.remove(name);
                          p.setDisplayName(p.getName());
                          p.setPlayerListName(p.getName());
                          p.setCustomName(p.getName());
                          TagAPI.refreshPlayer(p);
                          p.sendMessage("§2---------------------------------");
                          p.sendMessage("§0[§3iGamePlayHD§0] §4Du bist jetzt "+p.getName()+"!");
                          p.sendMessage("§2---------------------------------");
                          Bukkit.broadcastMessage("§e"+p.getName()+" joined the game.");
                            }
                        }
                      }
                    }  

Eclipse zeigt auch keinen Error. Habe es ebenfalls mit else probiert und ohne die beiden, also direkt noch eine if Abfrage mit Command. Kannst du mir bitte helfen?

1
Howha 26.02.2014, 14:24
@iGamePlayHD

Ich verstehe nicht ganz, was du machen möchtest...

Dein aktueller Code von /nick resetall setzt momentan jedem Spieler den Namen des Spielers, der den Befehl gesendet hat. Ich glaube nicht, dass das so gewollt ist.

Wenn du nur den Namen von dem Spieler, der den Befehl gesendet hat, zurücksetzen willst, sollte das hier reichen:

Player p = (Player) sender;

p.setDisplayName(p.getName());
p.setPlayerListName(p.getName());
//der CustomName ist irrelevant

TagAPI.refreshPlayer(p);
//aus deinem Code, damit kenne ich mich nicht aus
0
iGamePlayHD 26.02.2014, 14:26
@Howha

/nick Spielernamen ändern. /nick reset : Spielernamen reseten /nick resetall : Alle Leute die /nick gemacht haben -> Reseten!

Code: Siehe oben, jedoch klappt /nick resetall, aber /nick reset nicht, der /nick reset wird nicht erkannt.. Kannst du mir helfen pls?

0

Erstelle ein Array, in dem alle Spieler, die auf dem Server anwesend sind, aufgelistet sind.

iGamePlayHD 25.02.2014, 16:56

Naja, ArrayList ist gerade nicht sehr schön, aber danke :)

1
iGamePlayHD 25.02.2014, 16:56

Naja, ArrayList ist gerade nicht sehr schön, aber danke :)

0

Was möchtest Du wissen?