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

Error bei selbstprogrammiertem Java Plugin

Status
Für weitere Antworten geschlossen.

Nils070697

Braumeister
Registriert
2 Juni 2012
Beiträge
347
Diamanten
0
Hey Leute ich habe mich nun an das programmieren von eigenen Plugins gesetzt doch nun taucht plötzlich ein mir unerklärlicher Fehler auf.
Eclipse zeigt weder Errors noch Warnungen an...
Ich hoffe ihr könnt mir helfen!

Datein:
SimpleArmor.java
Code:
package me.Nils070697.SimpleArmor;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class SimpleArmor extends JavaPlugin{
	
	PluginManager manager = this.getServer().getPluginManager();

	@Override
	public void onDisable() {
		
		PluginDescriptionFile descFile = this.getDescription();
		System.out.println("[" + descFile.getName() + "]" + descFile.getName() + "wurde deaktiviert");
	
	}
	
	@Override
	public void onEnable() {
		
		PluginDescriptionFile descFile = this.getDescription();
		System.out.println("[" + descFile.getName() + "]" + descFile.getName() + " wurde aktiviert");
		System.out.println("[" + descFile.getName() + "] Version: " + descFile.getVersion());
		System.out.println("[" + descFile.getName() + "] Programmiert von " + descFile.getAuthors());
	
	}
	
	public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
		PluginDescriptionFile descFile = this.getDescription();
		boolean erfolg = false;
		
		Player p = (Player)sender;
		
		// Kommando "/armor"
		if(cmd.getName().equalsIgnoreCase("armor")){
			if(args.length == 0){
				
				// Diaruessi
				p.getInventory().setHelmet(new ItemStack(310));
				p.getInventory().setChestplate(new ItemStack(311));
				p.getInventory().setLeggings(new ItemStack(312));
				p.getInventory().setBoots(new ItemStack(313));
				// Diaschwert
				p.getInventory().addItem(new ItemStack(276, 1));
				
				p.sendMessage(ChatColor.RED + "[" + descFile.getName() + "]" + ChatColor.AQUA + "Du hast eine Diamantenruestung und ein Diamantenschwert bekommen!");
				erfolg = true;
				
			}
			else {
				
				erfolg = false;
				
			}
			
		}
			
			// Kommando "/SimpleArmor"
			if(cmd.getName().equalsIgnoreCase("SimpleArmor")){
				if(args.length == 0){
					
					p.sendMessage(ChatColor.AQUA + "----------" + ChatColor.RED + "SimpleArmor Kommandoliste" + ChatColor.AQUA + "----------");
					p.sendMessage(ChatColor.RED + "/armor" + ChatColor.AQUA + "  Gibt dir eine Diamantenrüstung und ein Diamantenschwert.");
					
					erfolg = true;
					
				}
				else {
					
					erfolg = false;
				
				}
			
			}
		
		return erfolg;
	}
	

	
}


Plugin.yml:
Code:
name: SimpleArmor
version: 1.0
main: me.Nils070697.SimpleArmor.SimpleArmor
author: Nils070697
website: maggicraft.de.gg
commands:
     SimpleArmor:
          description: Zeigt alle Befehle
          usage: /<command>
     armor:
          description: Gibt Ruestung
          usage: /<command>


Fehlerlog:
Code:
15:47:29 [SCHWERWIEGEND] Could not load 'plugins\SimpleArmor.jar' in folder 'plu
gins'
org.bukkit.plugin.InvalidPluginException: java.lang.NullPointerException
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
ava:149)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
java:305)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
.java:230)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:213)
        at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:189)
        at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigur
ationManager.java:53)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:166)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:432)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
Caused by: java.lang.NullPointerException
        at me.Nils070697.SimpleArmor.SimpleArmor.<init>(SimpleArmor.java:14)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
ava:145)
        ... 8 more
 

Nils070697

Braumeister
Registriert
2 Juni 2012
Beiträge
347
Diamanten
0
Sry wenn ich gerade einfach nur tierrisch auf dem Schlauch stehe...
Momentan noch das Problem mit dem Rückgabewert, wie kann ich in Java einen Zeiger auf eine Funktion erstellen? (Geht doch mit return oder?) Weil mit Break würde ich ja komplett raus kommen...
Außerdem wird das so gehen mit der Servervariable die ich angelegt habe?
Stimmt das vom Rest sonst?

Code:
					this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
							org.bukkit.Server Server = getServer();
							int i = 10;   
							@Override
						   public void run() {
							   i = i-1;
						       Server.broadcastMessage(ChatColor.RED + "[HungerGames] " + ChatColor.AQUA + i); 
						       if(i == 0){
						    	   
						    	   Server.broadcastMessage(ChatColor.RED + "[HungerGames] " + ChatColor.AQUA + "GO");
						    	   return true;
						    	   
						       }
						   }
						}, (long) 20);
 

Benni1000

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
4 Mai 2012
Beiträge
1.396
Diamanten
0
Es gibt in java keine zeiger.
Du erstellst hier eine neue runnable klasse, das ist eine eigene abgeschottete klasse die keinen zugriff auf die mainklasse hat.

Wenn du mir sagst was du genau brauchst dann kann ich dir auch besser helfen.

P.s: Dein code würde übersichtlicher sein wenn du pastebin.com benutzen würdest :p
 

Nils070697

Braumeister
Registriert
2 Juni 2012
Beiträge
347
Diamanten
0
Ok werde ich mir merken, vlt kann man hier ja auch mal Hihgliter einbauen...? (Wurde glaub ich schonmal vorgeschlagen)
Da ich leider in Java sonst ein totaler noob bin, verstehe ich nur Sachen die ich von C++ herleiten kann xD. (Deswegen auch der Mist mit den Zeigern, dachte wg. this usw...)
Kann ich denn den Zugriff nicht übertragen?
Kannst mir auch gerne helfen, ich will einen einfach Countdown von 10 herunter erstellen, bei dem am Ende ein GO ausgegeben wird...
Der Rest mit der Variable hat nichts mehr mit dem jetzigen Problem zu tun^^

EDIT: Wieso bekomme ich immer einen Error wenn ich etwas mit Int casten will? (z.b. laden aus der Config...)
 
Status
Für weitere Antworten geschlossen.
Oben