Minecraft Event Plugin

Diskutiere Minecraft Event Plugin im Spiele- und Multimedia-Programmierung Bereich.
T

TaMoBiDa

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.1585250542407.png

Laut Console scheint es etwas in Main zu sein:
1585250591944.png

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:
Java:
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
Java:
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

Java:
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

Java:
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
 
F

fhoffmann

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:

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

TaMoBiDa

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:

Java:
    public void onEnable() {
        System.out.println("Plugin wurde erfolgreich aktiviert!");
        if (this.getCommand("tevent") == null) {
            System.out.println("getCommand(\"tevent\") == null");
        }
Hey!
Danke für die Antwort, ich habe den Code eingebaut und bekomme nun folgende Meldung in der Console:
1585253536924.png
1585253561597.png
 
J

JustNobody

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:
Code:
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.
 
T

TaMoBiDa

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:
Code:
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.
Danke für den Tipp!
Ich werde mir das nacher gleich mal anschauen!
 
T

TaMoBiDa

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:
Code:
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.
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!
 
J

JustNobody

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.
 
Thema: 

Minecraft Event Plugin

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben