Minecraft Plugin Text nur für einen Spieler ausgeben?
Hallo,
ich habe ein kleines Plugin pogrammiert in Eclips. Mit den man ein Command in Minecraft eingibt und eine Chat Nachricht erscheint. Nun möchte ich das abber so machen, dass nur der Spieler, der den Command ausgeführt hat die Nachricht bekommt. Wie kann ich das machen?
Achja ist mein erstes Plugin also bitte nicht zu sehr mit Fachbegriffen rum werfen danke xD
3 Antworten
Wenn es dein erstes Plugin ist, dann solltest du dir erstmal die Java Grundlagen anschauen. Danach dir die JavaDocs für Spigot/Bukkit durchlesen und dann kannst du mit den Plugins anfangen ;-)
Aber ich will mal nicht so sein. Wie erscheint denn jene Chat Nachricht, gibst du diese selbst aus? Poste mal bitte den gesamten Code hier. Nur nur einzelne Ausschnitte.
das ist das was gesendet wird
package de.spells.command;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class HilfeCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender s, Command cmd, String string, String[] args) {
s.sendMessage(" §7=§c§lMagie Hilfe§6§7=");
s.sendMessage("");
s.sendMessage(" §7Hilfe findest du auf unsera Website");
s.sendMessage(" §7www.google.de");
s.sendMessage("");
s.sendMessage(" §7=§c§lMagie Hilfe§d§7=");
return true;
}
}
1.) Variablen, welche in Capital geschrieben sind, sind Konstanten bzw. finale Variablen und sollen auch so gekennzeichnet werden. Also public static final Main INSTANCE. Da dies aber nicht so gewünscht ist, solltest du die Variablen klein schreiben.
2.) Was den Prefix angeht, warum legst du den im onEnable() Teil fest. Wenn du den Prefix schon Hardcodest, dann pack den direkt oben rein als public static final String PREFIX = "§dSpells §7>";
3.) Wenn du nur dem Spieler eine Nachricht senden möchtest, dann kannst du das so tun, wie du das gemacht hast. Also ich sehe da kein Fehler, warum die anderen Spieler auch eine Nachricht bekommen sollten.
Soweit ich deinen Code verstanden habe wird die Nachricht nur an den Spieler gesendet. Wenn der Sender s ist, kannst du diesen nach einer Abfrage zu einem Spieler casten:
Player p = (Player) s;
Und dem kannst du dann eine Nachricht senden:
p.sendMessage("NACHRICHT");
Allerdings musst du das Sender-Objekt nicht umwandeln, so wie du es gemacht hast geht es auch
s.sendMessage("NACHRICHT");
Das macht aber kein Unterschied, ob der Fragesteller nun zum Player castet oder den CommandSender nimmt. Kommt das Selbe bei raus.
Das Casten zum Player macht man eigentlich nur dann, wenn man was mit dem Player Objekt selbst was machen möchte. Will man nur ne Nachricht verschicken, kann er auch den CommandSender lassen.
Äh ja...
Wenn der Sender s ist, kannst du diesen nach einer Abfrage zu einem Spieler casten:
...
Allerdings musst du das Sender-Objekt nicht umwandeln, so wie du es gemacht hast geht es auch
Hi,
du könntest eine if abfrage machen
if(player.hasPermission("deine.permission"){
}
und in der if abfrage dann ein
player.sendMessage("Deine Nachricht an den Spieler mit der permission deine.permission");
setzten.
Sieht letzendlich so aus;
if(player.hasPermission("deine.perm"){
player.sendMessage("Deine Message an den Spieler mit der Perm deine.perm");
}
Btw:
Für mehrere würde ich eine "else if" abfrage machen.
Beispiel:
if(player.hasPermission("deine.perm"){
player.sendMessage("Deine Message an den Spieler mit der Perm deine.perm");
}
else if(player.hasPermission("deine.perm2"){
player.sendMessage("Deine Message an den Spieler mit der Perm deine.perm2");
}
else if(player.hasPermission("deine.perm3"){
player.sendMessage("Deine Message an den Spieler mit der Perm deine.perm3");
}
Okey viel Spaß noch mit Java
LG
da unten ist der command
package de.spells.main;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import de.spells.command.HilfeCommand;
public class Main extends JavaPlugin {
public static Main INSTANCE;
public static String PREFIX;
@Override
public void onEnable() {
INSTANCE = this;
PREFIX = "§dSpells §7> ";
register();
Bukkit.getConsoleSender().sendMessage(PREFIX + "§dSpells aktiviert.");
}
@Override
public void onDisable() {
Bukkit.getConsoleSender().sendMessage(PREFIX + "§dSpells deaktiviert.");
}
public void register() {
Bukkit.getPluginCommand("magie").setExecutor(new HilfeCommand());
}
}