2 Eigenes Plugin

06/29/2013 10:17 polikas#1
Heyho Leute,
ich bin gerade wieder einmal dabei mir ein Plugin zu schreiben.

Ich möchte jetzt mit /setitem [Item] [Anzahl] die Daten in der Config ändern.

Plugin
Code:
package de.norcdic.ewigkeitsplugin;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

public class ItemCommand implements CommandExecutor{
	
	private Ewigkeit plugin;
	public ItemCommand(Ewigkeit plugin) {
		this.plugin = plugin;
	}
	private void saveConfig() {	
		
	}
	private void reloadConfig() {
		
	}
	private void loadConfig() {
		
	}
	@Override
	public boolean onCommand(CommandSender cs, Command cmd, String lable, String[] args) {
		if (args.length != 1) {
			loadConfig();
			int[] args1 = null;
			int item = args1[0];
			int anzahl = args1[1];
			plugin.getConfig().set("geschenkitem", item);
			plugin.getConfig().set("anzahl", anzahl);
			saveConfig();
			reloadConfig();
			cs.sendMessage("§cDu hast das Geschenk geändert!");
			return true;
		} else {
			cs.sendMessage("§c/setitem [ID] [Anzahl]!");
		}
	if (!(cs.hasPermission("nor.setitem")));
	cs.sendMessage("§cDu hast nicht genug Rechte!");
	return true;
	}
}
Config.yml
Code:
geschenkitem: 20
anzahl: 20
messagetimer: 5
messages:
- testestestestestest
Fehler in der Console
Code:
2013-06-29 10:11:37 [WARNING] Unexpected exception while parsing console command "setitem 5 5"
org.bukkit.command.CommandException: Unhandled exception executing command 'setitem' in plugin ewigkeitsplugin v0.4
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
	at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:523)
	at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchServerCommand(CraftServer.java:512)
	at net.minecraft.server.v1_5_R3.DedicatedServer.an(DedicatedServer.java:262)
	at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:227)
	at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
	at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
	at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.NullPointerException
	at de.norcdic.ewigkeitsplugin.ItemCommand.onCommand(ItemCommand.java:27)
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
	... 8 more
Ich hoffe ihr könnt mir helfen.
Vielen Dank im voraus!
mfg
polikas
06/29/2013 10:49 ComputerBaer#2
Du hast in Zeile 27 einen NullPointer. In Zeile 28 würde dir das auch noch passieren. Und Zeile 26 ist die Ursache.
06/29/2013 10:54 polikas#3
Wie kann ich das Problem denn beheben?
06/29/2013 10:58 ComputerBaer#4
Indem du verhinderst, dass die aufgerufene Variable "null" ist.

Da sind ziemlich vieler Fehler drin ... ist das c&p oder programmieren? weist du, was du da tust?

Edit:
Ich werde dir die Lösung nicht einfach vorsagen, weil du dann wahrscheinlich nichts daraus lernst. Also werde ich dich nur in die richtige Richtung lenken und du musst es selbst herausfinden.
06/29/2013 11:05 Howaner#5
Lern bitte, wie richtiges Programmieren geht.

Deine Fehler:
- Du kannst nicht erst am Ende abfragen, ob er die Permission ... hat. Das muss am Anfang hin
- Hinter ein if gehört kein ;
- Du kannst keine Informationen von null Objekten abfragen. (wie ComputerBaer bereits sagte).
- Du fragst bei den Args != 1 ab. Soll das so sein? Das heißt nähmlich, dass der Befehl nur ausgeführt wird, wenn er nicht 1 Parameter hat (also, wenn er so aussieht, wird er nicht ausgeführt: /setitem bread)

Du müsstest das mit dem Item so programmieren:
Code:
Material item = Material.matchMaterial(args[0]);
if (item == null) {
	cs.sendMessage("§cDas Item " + args[0] + " existiert nicht!");
	return true;
}
int anzahl = 1;
try {
	if (args.length == 2) {
		anzahl = Integer.parseInt(args[1]);
	}
} catch (Exception e) {
	cs.sendMessage("§cBitte eine gültige Anzahl angeben!");
	return true;
}
plugin.getConfig().set("geschenkitem", item.getId());
plugin.getConfig().set("anzahl", anzahl);
plugin.saveConfig();
plugin.reloadConfig();
Den Rest wirst du wohl noch selbst hinbekommen
06/29/2013 11:17 polikas#6
Vielen Dank.
Ich habe das um 4 Uhr nachts geschrieben und das kommt halt dabei raus wenn man auch noch nicht gut Java kann^^
06/29/2013 17:23 EloSmurfs#7
Könnt ihr auch für andere Server programmieren ?
06/29/2013 17:57 ComputerBaer#8
Quote:
Originally Posted by Hacker 3.0 View Post
Könnt ihr auch für andere Server programmieren ?
Auf wen bezieht sich die Frage? Auf einen von uns, weil du denkst das da ein Team hintersteckt, oder war die Frage an alle gerichtet?

Du kannst mich anschreiben (PN oder Skype), aber erwarte nicht zuviel.