Intellij Teleport- command einbauen(Java und Maven)?
package system.Commands;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConstructor;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import system.system.Main;
import system.vanish.Vanish;
import java.util.Vector;
public class VanishCommand implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
Vanish vanish = Main.getInstance().getVanishManager();
if (sender instanceof Player) {
Player player = (Player) sender;
Location loc = null;
if (vanish.isVanished(player)) {
vanish.setVanished(player, false);
player.setGameMode(GameMode.SURVIVAL);
sender.sendMessage(ChatColor.GOLD + "Manetti is raus");
assert loc != null;
player.teleport(loc);
} else {
vanish.setVanished(player, true);
loc = player.getLocation();
player.setGameMode(GameMode.CREATIVE);
sender.sendMessage(ChatColor.GOLD + "Support-Mode");
}
return true;
}
return false;
}
}
Ich habe einen Vanish Command programmiert und möchte das wenn der Player den Command ausführt dass sich dann seine Coordinaten gemerkt werden und wenn er ihn noch einmal ausführt und ent-vanished wird er wieder zu den gemerkten Coordinaten teleportiert wird. Aber der Oben zu sehende Code funktioniert leider nicht.
1 Antwort
Die Position wird ja in der Location loc gespeichert. Diese ist nur im Scope der Methode onCommand verfügbar. Dementsprechend erstellst du bei jedem Aufruf des Commands eine neue Variable loc. Du hast ja oben schon den VanishManager, dort müsstest du dann die Location reinspeichern, sodass du sie bei einem erneuten Aufruf wieder laden und den Spieler teleportieren kannst.
Übrigens: Es macht nicht so ganz Sinn, dass die Methode getVanishManager heisst, die Klasse aber nur Vanish heisst. Ich würde die Klasse hier auch zu VanishManager umbenennen. Somit weiss man auch auf einen Blick besser, was dort drin sein könnte.
public Vanish getVanishManager() {
return this.vanish;
Ich kann in dieser Methode keine abfrage machen
Hab das jetzt mal probiert und erstmals danke, es kommt keine Fehlermeldung mehr. Aber er er teleportiert mich nicht zurück zu der stelle wo ich den Command das 1 mal ausgeführt habe sondern er teleportiert mich dahin wo ich den Command das 2mal ausgeführt habe also genau da wo ich eh stehe.