Discord

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

Erledigt PlugIn Ich finde den Startfehler nicht.

SyntaxWolf

Redstoneengineer
Mitglied seit
26 Oktober 2017
Beiträge
46
Main Klasse:

Code:
package net.SyntaxVace.SyntaxWolf.main;

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

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

import net.SyntaxVace.SyntaxWolf.command.CMD_Setloc;
import net.SyntaxVace.SyntaxWolf.listener.Events;
import net.SyntaxVace.SyntaxWolf.listener.HeaderAndFooter;
import net.SyntaxVace.SyntaxWolf.listener.Prefix;
import net.SyntaxVace.SyntaxWolf.listener.Protection;
import net.SyntaxVace.SyntaxWolf.listener.SlotSwitch;
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;

public class Main extends JavaPlugin {

    public static String prefix = "§bFFA §8| §7";
    public static String noPerm = "§6System §8| §cDieser Befehl existiert nicht!";
    public static Main instance;
    public File locFile = new File("plugins//" + instance.getName() + "//locations.yml");
    public YamlConfiguration locConfig = YamlConfiguration.loadConfiguration(locFile);
    private PacketPlayOutChat packet;

    @Override
    public void onEnable() {
        instance = this;
        registerListener();
        registerCommand();
    }

    @Override
    public void onDisable() {
        instance = null;
    }

    public void registerListener() {
        PluginManager pm = (PluginManager) this.getServer().getPluginManager();
        pm.registerEvents(new Protection(), this);
        pm.registerEvents(new SlotSwitch(), this);
        pm.registerEvents(new HeaderAndFooter(), this);
        pm.registerEvents(new Events(), this);
        pm.registerEvents(new Prefix(), this);
    }

    public void registerCommand() {
        this.getCommand("setloc").setExecutor(new CMD_Setloc());
    }

    public Main(String msg) {
        PacketPlayOutChat packet = new PacketPlayOutChat(
                IChatBaseComponent.ChatSerializer.a("{\"text\":\"" + msg + "\"}"), (byte) 2);
        instance.packet = packet;
    }

    public void sendToPlayer(Player p) {
        ((CraftPlayer)p).getHandle().playerConnection.sendPacket(instance.packet);
    }

    public void sendToAll() {
        for (Player p : Bukkit.getServer().getOnlinePlayers()) {
            ((CraftPlayer)p).getHandle().playerConnection.sendPacket(instance.packet);
        }
    }

    public void createLocation(Location loc, String path, File file, YamlConfiguration cfg) {
        cfg.set(path + ".World", loc.getWorld().getName());
        cfg.set(path + ".X", loc.getX());
        cfg.set(path + ".Y", loc.getY());
        cfg.set(path + ".Z", loc.getZ());
        cfg.set(path + ".Yaw", loc.getYaw());
        cfg.set(path + ".Pich", loc.getPitch());
        try {
            cfg.save(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public Location getLocation(String path, YamlConfiguration cfg) {
        World w = Bukkit.getWorld(cfg.getString(path + ".World"));
        double x = cfg.getDouble(path + ".X");
        double y = cfg.getDouble(path + ".Y");
        double z = cfg.getDouble(path + ".Z");
        float yaw = (float) cfg.getDouble(path + ".Yaw");
        float pitch = (float) cfg.getDouble(path + ".Pitch");

        return new Location(w, x, y, z, yaw, pitch);
    }

    public static Main getInstance() {
        return instance;
    }
}
Fehlermeldung:

Code:
[Server thread/ERROR]: Could not load 'plugins\FFA.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Abnormal plugin type
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:80) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [spigot.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:292) [spigot.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:198) [spigot.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot.jar:git-Spigot-db6de12-18fbb24]
    at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.InstantiationException: net.SyntaxVace.SyntaxWolf.main.Main
    at java.base/java.lang.Class.newInstance(Unknown Source) ~[?:?]
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
    ... 7 more
Caused by: java.lang.NoSuchMethodException: net.SyntaxVace.SyntaxWolf.main.Main.<init>()
    at java.base/java.lang.Class.getConstructor0(Unknown Source) ~[?:?]
    at java.base/java.lang.Class.newInstance(Unknown Source) ~[?:?]
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
    ... 7 more
Ich finde den Fehler seit Stunden nicht.

Mit freundlichen Grüßen,
SyntaxWolf
 
F

Figz

Guest
  • public Main(String msg) {
  • PacketPlayOutChat packet = new PacketPlayOutChat(
  • IChatBaseComponent.ChatSerializer.a("{\"text\":\"" + msg + "\"}"), (byte) 2);
  • instance.packet = packet;
}
Sicher bin ich mir nicht, aber füg mal einen Konstruktor ohne Parametern hinzu.

Und eigentlich verwendet man die Main-Klasse, die das Plugin initialisiert nicht so.

Im Grunde genommen ist das, was du da machst eine ziemlich große Schei*e.
 

SirYwell

Vorarbeiter
Osterei Experte
Mitglied seit
30 Juni 2017
Beiträge
291
Alter
20
Minecraft
SirYwell
Ich möchte trotzdem noch ein wenig kritisieren:
1. Locations implementieren das Interface ConfigurationSerializable. Das würde dir beim Speichern und Laden eine Menge Code ersparen.
2. Anstatt Packets selber zusammenzubasteln, könntest du auch die das hier verwenden. Ist weniger anfällig für Fehler.
3. Wenn du schon eine eigene Config-Datei haben möchtest, solltest du auch eine Methode zum Speichern haben, damit du nicht bei jedem Speichervorgang im Code eine IOException behandeln musst.
4. Einen PluginManager zu einem PluginManager zu casten ist recht sinnlos (siehe Zeile 46 in deinem Codeausschnitt).
5. Mich würde mal interessieren, woher solche Namensgebungen wie CMD_Setloc kommen. Gibt's da ein Tutorial, das das so erklärt? Man sollte seinen Klassen zur Verständlichkeit beschreibende Namen wie z.B. SetLocationCommand geben (Dies gilt auch für Listener). Unterstriche sind für Klassennamen in Java NICHT vorgesehen.

Sonst kann ich dir nur das ans Herz legen, was @Figz bereits erwähnt hat.
 
Oben