Minecraft Minecraft Plugin Problem

Minecraft - Java Edition

Cookienation

Mitglied
Hier meine Main.java:
Java:
package dev.cookienation.main;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

    @Override
    public void onEnable() {
        loadConfig();
        System.out.println("[RankInfo] has been enabled!");

    }

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        Player p = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("premium")) {
            String premium = getConfig().getString("Config.premium");
            p.sendMessage(premium);
            return true;
        }
        return false;
    }

    public void loadConfig() {
        String premium = "Config.premium";
        getConfig().addDefault(premium, "INSERT MESSAGE HERE");
        FileConfiguration cfg = this.getConfig();
        cfg.options().copyDefaults(true);
        saveConfig();
    }
}
Hier meine mod.java:
Java:
package dev.cookienation.main;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class mod extends JavaPlugin {

    [USER=48687]@Override[/USER]
    public void onEnable() {
        loadConfig();

    }

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        Player p = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("mod")) {
            String mod = getConfig().getString("Config.mod");
            p.sendMessage(mod);
            return true;
        }
        return false;
    }

    public void loadConfig() {
        String mod = "Config.mod";
        getConfig().addDefault(mod, "INSERT MESSAGE HERE");
        FileConfiguration cfg = this.getConfig();
        cfg.options().copyDefaults(true);
        saveConfig();
    }
}
Hier meine titan.java:
Java:
package dev.cookienation.main;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class titan extends JavaPlugin {

    [USER=48687]@Override[/USER]
    public void onEnable() {
        loadConfig();

    }

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        Player p = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("titan")) {
            String titan = getConfig().getString("Config.titan");
            p.sendMessage(titan);
            return true;
        }
        return false;
    }

    public void loadConfig() {
        String titan = "Config.titan";
        getConfig().addDefault(titan, "INSERT MESSAGE HERE");
        FileConfiguration cfg = this.getConfig();
        cfg.options().copyDefaults(true);
        saveConfig();
    }
}
Und hier die plugin.yml:
Code:
main: dev.cookienation.main.Main
name: RankInfo
author: Cookienation
version: 1.0

commands:
  premium:
    description: Premium Features
    usage: /premium
  titan:
    description: Titan Features
    usage: /titan
  mod:
    description: Mod Features
    usage: /mod
Problem:
Die Config erstellt sich, so, wie sie soll.
Der Kommand /premium geht.
Aber die beiden Kommands /titan und /mod gehen nicht :c
Da steht dann immer nur, der Kommand, den ich gerade eingetippt habe.
Also z.B.: Ich gebe /titan ein und im Chat steht /titan.
Nun ist meine Frage: Wieso ?
Das Plugin soll die Features von den 3 Rängen anzeigen.
Diese Features kann man dann in der Config einstellen.
Das Plugin ist für Spigot1-8.

Danke im voraus!
 
Zuletzt bearbeitet von einem Moderator:
Es wird dir hier niemand helfen, wenn du nicht jetzt und sofort dein Code in Code-Tags setzt!
Das hat man dir in einem anderen Beitrag auch schon geschrieben!
 
Java:
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        Player p = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("premium")) {
            String premium = getConfig().getString("Config.premium");
            p.sendMessage(premium);
            return true;
        }
        return false;
    }
Du fragst hier nur ab ob der Befehl "premium" eingegeben wurde. Allerdings hast du keine Abfrage was passieren soll, wenn die anderen Befehle eingegeben wurden.
 
Zuletzt bearbeitet:
Java:
package dev.cookienation.main;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

  public void onEnable() {
     loadConfig();
     System.out.println("[RankInfo] has been enabled");
  }
  public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
     Player p = (Player)sender;
    
     //RangInfo befehl
    
     if (cmd.getName().equalsIgnoreCase("ranginfo")) {
         if (args.length == 0);
         String ranginfo = getConfig().getString("Config.ranginfo");
         p.sendMessage(ranginfo);
     }
    
     if (cmd.getName().equalsIgnoreCase("ranginforeload")) {
         reloadConfig();
         p.sendMessage("§aRanginfo Reloaded");
     }
    return true;
  }

   private void loadConfig() {
      String ranginfo = "Config.ranginfo";
      getConfig().addDefault(ranginfo, "§4EDIT ME IN THE CONFIG FILE");
      FileConfiguration cfg = this.getConfig();
      cfg.options().copyDefaults(true);
      saveConfig();
   }
}

Wenn ich hier in der Config was eingebe, wird nur manchmal das auch geladen und manchmal wird da garnix angezeigt, weiß einer, wieso ?
 
Unter welchen Vorraussetzungen wird die Config geladen und wann genau wird sie nicht geladen? Ist der Fehler reproduzierbar?

Weil mir die Standard-Config nicht gefällt, habe ich mir einen eigenen Config-Manager geschrieben, auch alle anderen die ich kenne finden die Standard-Config von der Handhabung nicht so schön.

Nebenbei erwähnt solltest du dir folgende Abfrage nocheinmal anschauen und überdenken.
Java:
if (args.length == 0);
Zusätzlich solltest du dir auch mal die Serverlog anschauen, ich gehe davon aus, dass dort einige Fehler auftauchen, denn du hast keine Methode "onDisable".
 
Java:
package dev.cookienation.main;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

    @Override
    public void onEnable() {
        loadConfig();
        System.out.println("[RankInfo] has been enabled!");

    }
 
    @Override
    public void onDisable() {
        System.out.println("[RankInfo] has been disabled");
    }

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        Player p = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("ranginfo")) {
            String ranginfo = getConfig().getString("Config.ranginfo");
            p.sendMessage(ranginfo);
               
            return true;
        }else{
        return false;
    }
}

    public void loadConfig() {
        String ranginfo = "Config.ranginfo";
        getConfig().addDefault(ranginfo, "INSERT MESSAGE HERE");
        FileConfiguration cfg = this.getConfig();
        cfg.options().copyDefaults(true);
        saveConfig();
    }
}
Das ist die Main.
Java:
package dev.cookienation.main;


import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class reload extends JavaPlugin {

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    Player p = (Player) sender;

          if (cmd.getName().equalsIgnoreCase("ranginforeload")) {
         reloadConfig();
           p.sendMessage("§aRankInfo Reloaded");      
            return true;
        }else{
        return false;
    }
}
}
Die reload.java

Die der Kommand /ranginforeload geht nicht.
Der Rest geht schon.
Und noch so nebenbei, weiß jemand, wie man in der Config, & Farbcodes benutzen kann ?
Danke.
 
Zuletzt bearbeitet von einem Moderator:
Was sagt denn die API von Spigot? Der Grund dafuer, warum da nur "RankInfo Reloaded" steht, ist weil du auch nur das in deinem if-statement stehen hast.
Java:
     if(cmd.getName().equalsIgnoreCase("ranginforeload")){
         reloadConfig();
           p.sendMessage("§aRankInfo Reloaded");    
           returntrue;
       }else{
       returnfalse;
Du benutzt nur
Java:
p.sendMessage("§aRankInfo Reloaded");
Mehr aber auch nicht.
 
Und wenn du anstatt eine neue Klasse "reload.java" benutzt, deine zwei Befehle einfach in der Main hast?
Main:
Java:
package dev.cookienation.main;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
   @Override
   public void onEnable() {
     loadConfig();
     System.out.println("[RankInfo] has been enabled!");
   }

   @Override
     public void onDisable() {
     System.out.println("[RankInfo] has been disabled");
   }

   public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
     Player p = (Player) sender;
     if (cmd.getName().equalsIgnoreCase("ranginfo")) {
       String ranginfo = getConfig().getString("Config.ranginfo");
       p.sendMessage(ranginfo);
       return true;
     } else {
       return false;
     }

     if(cmd.getName().equalsIgnoreCase("ranginforeload")) {
       reloadConfig();
       p.sendMessage("§aRankInfo Reloaded");
       return true;
     } else {
       return false;
     }
   }

   public void loadConfig() {
     String ranginfo = "Config.ranginfo";
     getConfig().addDefault(ranginfo, "INSERT MESSAGE HERE");
     FileConfiguration cfg = this.getConfig();
     cfg.options().copyDefaults(true);
     saveConfig();
   }
}
 
Java:
.....
     if(cmd.getName().equalsIgnoreCase("ranginforeload")) {    // Hier ist eine Glühbirne, wo steht: Unreachable Code. Und ab hier ist bis zur klammer nach return true alles Rot unterstrichen
       reloadConfig();
       p.sendMessage("§aRankInfo Reloaded");
       return true;
     } else {
       return false;
     }
   }
.....

Hab da was reingeschrieben
// Hier ist eine Glühbirne, wo steht: Unreachable Code. Und ab hier ist bis zur klammer nach return true alles Rot unterstrichen
 
Zuletzt bearbeitet von einem Moderator:
Ja weil du bei dem 1.if entweder true oder false zurück lieferst. Durch das return wird deine Methode verlassen.
Somit gibt es keine Möglichkeit mehr die 2.if-Bedingung zu prüfen -> Code wird nicht erreicht.
 

Zurück
Oben