Will gar nicht lange drum herumreden sondern nur fragen wo mein Fehler liegt? Habe vor anzufangen und habe mir gleich ein Tut dafür gegeben aber bereits da scheiterts?
Ich vermute stark, das onEnable und onDisable problemlos in der Log Datei und im CMD zu sehen sind oder?
Nach meiner Ansicht funktioniert der Command nicht?
Also, der Fehler ist eben das der Befehl nicht funktioniert. Das TestPlugin spuckt in der CMD jedoch aus was es soll. Der Befehl jedoch existiert erst gar nicht, teste jetzt mal das von Schlumpf
Also, der Fehler ist eben das der Befehl nicht funktioniert. Das TestPlugin spuckt in der CMD jedoch aus was es soll. Der Befehl jedoch existiert erst gar nicht, teste jetzt mal das von Schlumpf
Habs immernoch nicht verstanden
Ah sry, hab noch einen Teil vergessen:
Code:
this.getCommand("heal").setExecutor(new CommandManager()); //Register command to CommandManager class
Ich würde dir empfehlen sowieso eine neue Klasse zu erstellen, wo du seperat alle Commands verwaltest! Ansonsten müsste folgender Code im onEnable() stehen:
Code:
this.getCommand("heal").setExecutor(this);
Meine Empfehlung:
Main class:
Code:
package TestPlugin;
import org.bukkit.plugin.java.JavaPlugin;
public class TestPluginClass extends JavaPlugin {
@Override
public void onEnable() {
System.out.println("[TestPlugin] Plugin gestartet");
CommandManager cm = new CommandManager();
this.getCommand("heal").setExecutor(cm);
this.getCommand("command2").setExecutor(cm);
}
@Override
public void onDisable() {
System.out.println("[TestPlugin] Plugin gestoppt");
}
}
CommandManager class:
Code:
package TestPlugin;
import org.bukkit.entity.Player;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class CommandManager implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Player p = (Player)sender;
if (!cmd.getName().equalsIgnoreCase("heal")) {
return false;
}
if (!(sender instanceof Player)) {
sender.sendMessage("Command can't be executed from console");
return true;
}
if (!p.hasPermission("testplugin.heal")) {
p.sendMessage("Zu wenig permission");
return true;
}
if (args.length != 0) {
return false;
}
p.sendMessage ("Du wurdest geheilt!");
p.setHealth(20.0);
return true;
}
}
Hoffe jetzt funktioniert es, falls nicht nochmals melden!
Wie immer Bedanken nicht vergessen
#Was ist der Unterschied von Eclipse Luna und ... Juno heissts glaub?
So, anscheinend bin ich einfach zu dämlich, klappt auch so nicht
Also bis jetzt hab ich dir alles ohne zu testen gesendet. Nun hab ich es getestet und es funktioniert, deshalb jetzt nochmals ausführlich, was eventuell falsch war!
Zunächst einmal die Struktur bei mir: (Kann leider noch kein Bild einbinden, bitte drauf gehen)
So sieht es bei mir in Eclipse aus.
package test;
import org.bukkit.plugin.java.JavaPlugin;
public class test extends JavaPlugin {
@Override
public void onEnable() {
System.out.println("[TestPlugin] Plugin gestartet");
CommandManager cm = new CommandManager();
this.getCommand("heal").setExecutor(cm);
}
@Override
public void onDisable() {
System.out.println("[TestPlugin] Plugin gestoppt");
}
}
CommandManager.java:
Code:
package test;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CommandManager implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("heal")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Command can't be executed from console");
return true;
}
Player p = (Player)sender;
if (!p.hasPermission("testplugin.heal")) {
p.sendMessage("Zu wenig permission");
return true;
}
if (args.length != 0) {
return false;
}
p.sendMessage ("Du wurdest geheilt!");
p.setHealth(20.0);
return true;
}
return false;
}
}
So funktioniert es bei mir 1a... Als Java Build Path hast du ja sicherlich die craftbukkit.jar eingebunden, sonst würde es ja gar nicht funktionieren.
Zum Testen bitte auch nur dieses Plugin anwenden, also keine anderen noch dazu testen.
Hoffe, wenn du das mal 1 zu 1 überträgst funktioniert es.
Solltest du beim Versuch zuvor folgenden Fehler (oder Ähnlich) erhalten haben:
2014-09-30 14:00:52 [SEVERE] Error occurred while enabling Test v0.1 (Is it up to date?)
java.lang.NullPointerException
at test.test.onEnable(test.java:11)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:284)
at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:266)
at net.minecraft.server.v1_6_R3.MinecraftServer.l(MinecraftServer.java:315)
at net.minecraft.server.v1_6_R3.MinecraftServer.f(MinecraftServer.java:292)
at net.minecraft.server.v1_6_R3.MinecraftServer.a(MinecraftServer.java:252)
at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.java:152)
at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:393)
at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
lag es daran, das der Command nicht richtig in der plugin.yml eingetragen wurde!
Eclipse Juno ist jetzt älter und man sollte mittlerweile die Kepler Version verwenden da sie stabiler etc. als Juno ist. Edit: Weitere Infos zu den verschiedenen Eclipse Versionen bzw. weitere Infos zu Kepler findest auf der Eclipse homepage. Edit2: Grad draufgekommen das es schon neuere Versionen von Eclipse(Luna) existiert
Ich habe es eins zu eins so gemacht wirklich, 4 mal geschaut und auch so eingetragen etc. DIe Strukturierung stimmt eins zu eins und der Build Path ist auch in Ordnung. Kann doch nicht sein...
Ich habe es eins zu eins so gemacht wirklich, 4 mal geschaut und auch so eingetragen etc. DIe Strukturierung stimmt eins zu eins und der Build Path ist auch in Ordnung. Kann doch nicht sein...
Zum bisherigen Beitrag muss ich auf jedenfall eine Ergänzung einbringen, die mir etwas im Auge schmerzt:
Die erste Version der CommandManager.java sah folgendermaßen aus:
Code:
public class CommandManager implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Player p = (Player)sender;
if (!cmd.getName().equalsIgnoreCase("heal")) {
return false;
}
if (!(sender instanceof Player)) {
sender.sendMessage("Command can't be executed from console");
return true;
}
if (!p.hasPermission("testplugin.heal")) {
p.sendMessage("Zu wenig permission");
return true;
}
if (args.length != 0) {
return false;
}
p.sendMessage ("Du wurdest geheilt!");
p.setHealth(20.0);
return true;
}
}
Der (fatale) Fehler, der hier gemacht wurde, wurde zwar in der nächsten Version verbessert, jedoch nicht drauf hingewiesen.
In der ersten Version wird zuerst die CommandSender Instanz in einen Player gecastet, ohne zu prüfen, ob es sich wirklich um einen Player handelt.
Später wurde dann überprüft, ob der sender ein Player ist oder nicht.
An sich würde die erste Version ohne Probleme funktionieren, ein guter Stil ist das aber nicht wirklich.
Wenn ein Befehl nur für Spieler gedacht ist, so sollte zuerst überprüft werden, ob der sender ein Player ist oder nicht und danach erst gecastet werden, ansonsten könnte die ganze Geschichte zu netten Exceptions führen.
Bukkit job Plugin fehler !HILFE! 01/05/2013 - Minecraft - 4 Replies Leute ich brauche mal wieder eure hilfe x,D
wenn ich auf meinem Server eingebe /jobs browse sagt er immer das es keine jobs gäbe. dies sollte dann an den unten stehenden sachen liegen. hoffe ihr findet es.
Und ja ich habe das jobs pluzgon zum erstenmal drinnen.
Sollte alles richtig sein könntet ihr mir ja vllt einen tipp geben warum es evtl nicht geht.
# Jobs configuration.
#
# Stores information about each job.
#
# NOTE: When having multiple jobs, both jobs will give the income...
[Java] Bukkit Plugin -> [args] Problem 08/18/2012 - General Coding - 6 Replies Naja , ich habe einen Kick-Befehl programmiert , und wenn man ihn dann ausführt , soll eine Broadcast-Message gesendet werden , wo auch der Grund des Kicks steht.
Das Problem ist jetzt: Er nimmt nur 1 Wort als Grund an.
Wie kann ich das erweitern, das ich mehrere Wörter als Grund angeben kann?
http://i.epvpimg.com/tXnth.png
Minecraft Bukkit 1657 Java Fehler (Console) 12/12/2011 - Minecraft - 1 Replies Hallo Member,
Ich habe seit kurzem einen Fehler.
2011-12-12 14:02:56 java.net.SocketException: Socket closed
2011-12-12 14:02:56 at java.net.SocketOutputStream.socketWrite(SocketOutp utStream.java:116)
2011-12-12 14:02:56 at java.net.SocketOutputStream.write(SocketOutputStre am.java:153)
2011-12-12 14:02:56 at java.io.BufferedOutputStream.flushBuffer(BufferedO utputStream.java:82)
2011-12-12 14:02:56 at java.io.BufferedOutputStream.flush(BufferedOutputS tream.java:140)
2011-12-12...