• 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!

Konsolen Befehl

Status
Für weitere Antworten geschlossen.

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
Minecraft
combo5
Hallo leute,
ich habe einen Befehl geschrieben der allen Spielern die Online sind und eine bestimmte Permission besitzen sollen eine Nachricht bekommen aber dieser befehl soll in der Konsole ausgeführt werden! Doch dann bekomme ich die Fehler meldung:
Code:
       at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) ~[spigot.jar:git-Spigot-1387]
        at org.bukkit.craftbukkit.v1_7_R2.CraftServer.dispatchCommand(CraftServe
r.java:719) ~[spigot.jar:git-Spigot-1387]
        at org.bukkit.craftbukkit.v1_7_R2.CraftServer.dispatchServerCommand(Craf
tServer.java:706) [spigot.jar:git-Spigot-1387]
        at net.minecraft.server.v1_7_R2.DedicatedServer.ax(DedicatedServer.java:
309) [spigot.jar:git-Spigot-1387]
        at net.minecraft.server.v1_7_R2.DedicatedServer.v(DedicatedServer.java:2
74) [spigot.jar:git-Spigot-1387]
        at net.minecraft.server.v1_7_R2.MinecraftServer.u(MinecraftServer.java:5
68) [spigot.jar:git-Spigot-1387]
        at net.minecraft.server.v1_7_R2.MinecraftServer.run(MinecraftServer.java
:474) [spigot.jar:git-Spigot-1387]
        at net.minecraft.server.v1_7_R2.ThreadServerApplication.run(SourceFile:6
18) [spigot.jar:git-Spigot-1387]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_7_R2.command.
ColouredConsoleSender cannot be cast to org.bukkit.entity.Player
        at de.combo.rregionen.onCommand(rregionen.java:20) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spi
got.jar:git-Spigot-1387]
        ... 8 more
>

Und mein geschriebener Code lautet:

Code:
if(cmd.getName().equalsIgnoreCase("ft2")) {
	for(Player player11: getServer().getOnlinePlayers()) {
			    if(player11.hasPermission("rregionen.ft")) {
			    	player11.sendMessage("§9Test");
			  
			    }
			}


		}
	return true;

Ich hoffe ihr könnt mir den Fehler zeigen. Ich suche schon seit stunden
danke
 

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
Minecraft
combo5
Habe mal meine Java Build Path aufgelistet und die Imports
Java Build Path:
- bukkit 1.7.9-R0.1
- WGCostumFlags
- WGRegionEvents
- WorldGuard

Imports:
org.bukkit.command.Command;
org.bukkit.command.CommandSender;
org.bukkit.entity.Player;
org.bukkit.plugin.java.JavaPlugin;
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
Du wirst den CommandSender zum Spieler ungecheckt gecastet haben, dann ist es klar, dass entsprechendes nicht funktioniert. Dabei ist dein Auszug nicht der verursachende.
 

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
Minecraft
combo5
Aber wenn ich
Code:
if(sender instanceof Player) {
}
verwende wird die nachricht gesendet wen man ein Spieler ist
aber soll ja von der Konsole ausgeführt werden.

Vielleicht so?
Code:
if(sender instanceof ConsoleCommandSender) {
}
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
Weißt du, es gibt seine Gründe, wieso ein CommandSender übergeben wird und kein Player und kein ConsoleCommandSender.

Für einfache Commands ist es in der Regel vollkommen irrelevant, wer von den beiden Typen den Befehl gesendet hat, daher schreibt dieses Interface die meisten Methoden vor. Da muss nichts gecastet werden. Vielfach entsteht dabei sogar noch ein schlechter Stil.
 

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
Minecraft
combo5
Habe momentan nur eine Main Klasse:
Code:
package de.combo;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;


public class rregionen extends JavaPlugin {
 

public void onEnable() {
	 this.getLogger().info("RRegionen Aktiviert!");
	 
 }
public void onDisable() {
	this.getLogger().info("RRegionen Deaktiviert!");
}

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
	Player player = (Player) sender;

	if(cmd.getName().equalsIgnoreCase("ftzstadt")) {
			if (player instanceof Player) { //Hier muss es ein Spieler sein
			Player player1 = (Player) player;
			if(player1.hasPermission("rregionen.z")) {
player1.sendMessage("&6 - Wilkommen in der Zwergen Stadt - ");
			}
			return true;	
				}
if(cmd.getName().equalsIgnoreCase("ft2")) {
	if (player instanceof Player) {  //Code von vor dem Thread (Hier von Konsole)
	for(Player player11: getServer().getOnlinePlayers()) {
			    if(player11.hasPermission("rregionen.ft")) {
			    	player11.sendMessage("§9Test");
			    }
			    }
			}




	return true;	
}


		return false;
}
 

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
Minecraft
combo5
Die Fehlermeldung ist nun weg aber seine Funktion tut der Befehl aber noch nicht.
Wenn ich ihn jetzt als Spieler eingebe kommt keine Nachricht und in der Konsole passiert auch nichts
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
Du sollst auch nicht ohne Check casten. Genausowenig solltst du unnötig casten.

Genau das steht da auch so, jedenfalls gibt es hier genügend Hilfestellunge, sodass es nicht mehr nötig ist dieses Thema offen zu lassen.

PS: Für deinen 'anderen' Fehler solltest du einfach mal die Blöcke überprüfen.
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Oben