# Minecraft Event Plugin



## TaMoBiDa (26. Mrz 2020)

Hallo! Ich habe ein Problem mit meinem Plugin. Ich habe ein Plugin gemacht, mit dem man einen Warp machen/löschen/tpn kann mit folgenden Befehlen:

/tevent (Event)
/tsetevent (Event)
/tdelevent (Event)
(Event = Warp)


Nun hab ich aber das Problem, dass mir nur /tdelevent in Minecraft angezeigt wird.

Laut Console scheint es etwas in Main zu sein:


Aber ich verstehe nicht was ich in Main bei /tdelevent anders gemacht habe als bei den anderen..

Hier sind meine Quellcodes für alle Dateien die im Plugin sind:

*EventFunction:*

```
package EventFunc;

import java.io.File;
import java.io.IOException;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;

public class EventFunction{
    public static String speicherort = "plugins/TaMoBiDa's Events/Events";
    
    public static void CheckOrdner() {
        File file = new File("speicherort");
        if(file.isDirectory()==false)file.mkdirs();
    }

    public static void SetTEvent (Player p, String EventName) throws IOException{
        File file = new File("plugins/TaMoBiDa's Events/Events", EventName.toLowerCase()+".yml");
        EventFunction.CheckOrdner();
        if(!file.exists()) {
            
            file.createNewFile();
            FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
            cfg.set("Location.X", p.getLocation().getX());
            cfg.set("Location.Y", p.getLocation().getY());
            cfg.set("Location.Z", p.getLocation().getZ());
            cfg.set("Location.Yaw", p.getLocation().getYaw());
            cfg.set("Location.Pitch", p.getLocation().getPitch());
            cfg.set("Location.World", p.getWorld().getName());
            cfg.save(file);
            
        }else {
            p.sendMessage("§4Fehler: §cDieses Event existiert bereits!");
            return;
        }

    }
    
    public static void DelTEvent (Player p, String EventName){
        File file = new File("plugins/TaMoBiDa's Events/Events", EventName.toLowerCase()+".yml");
        if(!file.exists()) {
            file.delete();
        }
        p.sendMessage("§4Fehler: §cDieses Event existiert nicht!");
    }
    
    public static void TEvent (Player p, String EventName){
        File file = new File("plugins/TaMoBiDa's Events/Events", EventName.toLowerCase()+".yml");
        if(!file.exists()) {
            p.sendMessage("§4Fehler: §cDieses Event existiert nicht!");
            
        }
        FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);   
        double x = cfg.getDouble("Location.X");
        double y = cfg.getDouble("Location.Y");
        double z = cfg.getDouble("Location.Z");
        float yaw = (float) cfg.getDouble("Location.Yaw");
        float pitch = (float) cfg.getDouble("Location.Ptch");
        String worldname = cfg.getString("Location.World");
        
        Location loc = p.getLocation();
        loc.setX(x);
        loc.setX(y);
        loc.setX(z);
        loc.setX(yaw);
        loc.setX(pitch);
        loc.setWorld(Bukkit.getWorld(worldname));
        
        p.teleport(loc);
        p.sendMessage("$6Du hast dich zu dem Event §c"+ EventName + "$6teleportiert!");
        
    }
    
}
```

*EventCommands*

```
package EventCom;

import java.io.IOException;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;

import EventFunc.EventFunction;

public class EventCommands implements CommandExecutor{

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        
        
        if(sender instanceof ConsoleCommandSender){
            System.out.println("Dieser Befehl kann über die Console nicht ausgeführt werden!");
            return true;
        }
        Player p = (Player) sender;
        
        
        if(cmd.getName().equalsIgnoreCase("tevent")) {
            if(!p.hasPermission("TaMo.TEvent"));
                p.sendMessage("§4Fehler: $cKeine Berechtigung!");
                return true;
                
        }
            if(args.length == 0) {
                p.sendMessage("$cZu wenig Argumente!");
                return true;
            }
            if(args.length == 1) {
                EventFunction.TEvent(p, args[0]);
                return true;
                
            }
            
        
        if(cmd.getName().equalsIgnoreCase("settevent")) {
            if(!p.hasPermission("TaMo.setTEvent"));
            p.sendMessage("§4Fehler: $cKeine Berechtigung!");
            return true;
            
    }
        if(args.length == 0) {
            p.sendMessage("$cZu wenig Argumente!");
            return true;
        }
        if(args.length == 1) {
            try {
                EventFunction.SetTEvent(p, args[0]);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return true;
            
        }
            
        
        if(cmd.getName().equalsIgnoreCase("deltevent")) {
            if(!p.hasPermission("TaMo.delTEvent"));
            p.sendMessage("§4Fehler: $cKeine Berechtigung!");
            return true;
            
    }
        if(args.length == 0) {
            p.sendMessage("$cZu wenig Argumente!");
            return true;
        }
        if(args.length == 1) {
            EventFunction.DelTEvent(p, args[0]);
            return true;
            
        }
    
        
        
        return false;
    }

}
```


*Main*


```
package me.TaMoBiDa.TaMoBiDaEvents;

import org.bukkit.plugin.java.JavaPlugin;

import EventCom.EventCommands;

public class Main extends JavaPlugin{
    
    
    public void onEnable() {
        System.out.println("Plugin wurde erfolgreich aktiviert!");
        this.getCommand("tevent").setExecutor(new EventCommands());
        this.getCommand("settevent").setExecutor(new EventCommands());
        this.getCommand("deltevent").setExecutor(new EventCommands());
        
        
        
    }
    
    
    public void onDisable() {
        
        
        
        
    }
    
    

}
```

*Plugin.yml*


```
name: TaMoBiDaEvents
author: TaMoBiDa
version: 1.0
main: me.TaMoBiDa.TaMoBiDaEvents.Main

commands:
     tevent:
        description: Teleportiere dich zu einem Event-Punkt
        usage: /<command> (Event)

commands:
    settevent:
        description: Setze einen Event-Punkt
        usage: /<command> (Event)

commands:
     deltevent:
        description: Entferne einen Event-Punkt
        usage: /<command> (Event)
```





Bitte um Hilfe!!

Danke!
~Dominik


----------



## fhoffmann (26. Mrz 2020)

Ich kenne mich mit minecraft nicht aus und habe auch nicht deinen gesamten Code angeguckt.
Ich würde dir aber raten, einmal folgenden Code einzubauen, um den Fehler einzugrenzen:


```
public void onEnable() {
        System.out.println("Plugin wurde erfolgreich aktiviert!");
        if (this.getCommand("tevent") == null) {
            System.out.println("getCommand(\"tevent\") == null");
        }
```


----------



## TaMoBiDa (26. Mrz 2020)

fhoffmann hat gesagt.:


> Ich kenne mich mit minecraft nicht aus und habe auch nicht deinen gesamten Code angeguckt.
> Ich würde dir aber raten, einmal folgenden Code einzubauen, um den Fehler einzugrenzen:
> 
> 
> ...


Hey!
Danke für die Antwort, ich habe den Code eingebaut und bekomme nun folgende Meldung in der Console:


----------



## kneitzel (26. Mrz 2020)

Also ich kenne mich auch nicht wirklich aus, aber deine Plugins.yml ist nicht korrekt wenn es nach der Dokumentation geht.

Du hast nur ein "commands:" und nicht mehrere:

```
commands:
     tevent:
        description: Teleportiere dich zu einem Event-Punkt
        usage: /<command> (Event)
    settevent:
        description: Setze einen Event-Punkt
        usage: /<command> (Event)
     deltevent:
        description: Entferne einen Event-Punkt
        usage: /<command> (Event)
```

So habe ich es zumindest auf einer Webseite zu einem Minecraft plugin gefunden.


----------



## TaMoBiDa (27. Mrz 2020)

JustNobody hat gesagt.:


> Also ich kenne mich auch nicht wirklich aus, aber deine Plugins.yml ist nicht korrekt wenn es nach der Dokumentation geht.
> 
> Du hast nur ein "commands:" und nicht mehrere:
> 
> ...


Danke für den Tipp!
Ich werde mir das nacher gleich mal anschauen!


----------



## TaMoBiDa (27. Mrz 2020)

JustNobody hat gesagt.:


> Also ich kenne mich auch nicht wirklich aus, aber deine Plugins.yml ist nicht korrekt wenn es nach der Dokumentation geht.
> 
> Du hast nur ein "commands:" und nicht mehrere:
> 
> ...


Ich hab nachgeschaut, das passt so wie ich das habe, ich habe mir einige Plugin Codes angeschaut, und dort ist es überall so :/

Trotzdem Danke!


----------



## kneitzel (27. Mrz 2020)

Wo hast Du nachgeschaut? Hast Du es wenigstens ausprobiert?

a) Von der Logik her heisst es "commands" und nicht "command" - also ist das die Angabe für die Befehle.
b) Wenn man sich das offizielle Beispiel des Sample Plugins von Bukkit anschaut, dann ist es da auch so: https://github.com/Bukkit/SamplePlugin/blob/master/src/main/resources/plugin.yml
c) Du hast bei den anderen Befehlen es ja im Code ebenso gemacht wie bei dem Befehl, der funktioniert. Das deutet auch darauf hin, dass es an der Beschreibungsdatei liegen müsste ...

Aber ich bin damit auch raus - ich werde mir hier kein Minecraft-Server aufsetzen nur um dies zu testen.


----------

