Minecraft-Plugin Schwierigkeiten

    • Offizieller Beitrag

    Guten Tag!
    Ich habe mich mal an mein Plugin rangesetzt und irgendwie funktioniert es nicht ganz. Wenn ich Ingame "/beam SGT_Shan" eingebe wird der Befehl "/heilen SGT_Shan" ausgeführt, oder wenn ich eingebe "/beam jwdw" (Also ein Spieler der nicht online ist) wird auch die Meldung von "/heilen jwdw" angezeigt. Kann mir jemand helfen ?


    Code:
    package com.Shan.ShanPlugin;


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


    public class ShanPlugin extends JavaPlugin {


    @Override
    public void onEnable() {
    super.onEnable();

    System.out.println("[ShanPlugin] Version 1.0 erfolgreich geladen!");

    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {


    //Falls sender ein Player ist, machen wir den Sender zum Player
    Player player = null;
    if(sender instanceof Player){
    player = (Player) sender;
    }


    //Kommandos
    //Kommando "heilen"
    if (command.getName().equalsIgnoreCase("heilen")){


    }

    if (args.length == 1){
    for (Player haktuellerSpieler : this.getServer().getOnlinePlayers()){
    if(haktuellerSpieler.getName().equalsIgnoreCase(args[0])){
    haktuellerSpieler.setHealth(20);
    sender.sendMessage(ChatColor.DARK_GRAY +"[" + ChatColor.GREEN + "Heilung" + ChatColor.DARK_GRAY + "] " + ChatColor.AQUA + "Du hast " + ChatColor.RED + haktuellerSpieler.getName() + ChatColor.AQUA + " erfolgreich geheilt!");
    haktuellerSpieler.sendMessage(ChatColor.DARK_GRAY +"[" + ChatColor.GREEN + "Heilung" + ChatColor.DARK_GRAY + "] " + ChatColor.AQUA + "Du wurdest von " + ChatColor.RED + sender.getName() + ChatColor.AQUA + " geheilt!");
    return true;
    }
    player.sendMessage(ChatColor.DARK_GRAY +"[" + ChatColor.GREEN + "Heilung" + ChatColor.DARK_GRAY + "] " + ChatColor.RED +args[0] + ChatColor.AQUA + " ist leider nicht auf dem Server!");
    return true;
    }


    }
    //Kommando "/heilen"
    if (command.getName().equalsIgnoreCase("heilen"))
    if (args.length != 1){
    player.setHealth(20);
    player.sendMessage(ChatColor.DARK_GRAY +"[" + ChatColor.GREEN + "Heilung" + ChatColor.DARK_GRAY + "] " + ChatColor.RED + "du" + ChatColor.AQUA + " hast" + ChatColor.RED + " dich" + ChatColor.AQUA + " geheilt");
    }






    //Kommando "beam"
    if (command.getName().equalsIgnoreCase("beam")){

    if(args.length != 1){
    return false;
    }
    // Sucht den Spieler den wir brauchen
    for(Player baktuellerSpieler : this.getServer().getOnlinePlayers()){
    if(baktuellerSpieler.getName().equalsIgnoreCase(args[0])){
    //Kommando "beam"
    player.sendMessage(ChatColor.DARK_GRAY +"[" + ChatColor.GREEN + "Beam" + ChatColor.DARK_GRAY + "] " + ChatColor.AQUA + "Skooty beam mich!");
    player.teleport(baktuellerSpieler.getLocation());
    player.sendMessage(ChatColor.DARK_GRAY +"[" + ChatColor.GREEN + "Beam" + ChatColor.DARK_GRAY + "] " + ChatColor.RED + "Du " + ChatColor.AQUA + "bist nun bei" + ChatColor.RED + baktuellerSpieler.getName() + "!");
    return true;

    }
    }

    player.sendMessage(ChatColor.DARK_GRAY +"[" + ChatColor.GREEN + "Beam" + ChatColor.DARK_GRAY + "] " + ChatColor.RED + args[0] + ChatColor.AQUA + " ist leider nicht auf dem Server");
    return true;

    }





    return true;
    }
    }

  • Also dein Gesamter Code ist sehr komisch? Du definierst 2x Heilen als Command, Der code steht außerhalb des Commands selber.


    Das wäre mein überarbeiteter Quellcode für dich. Dieser müsste Theoretisch auch funktionieren. Da du ihn aber hier sehr blöd rein kopiert hast ohne leerschritte usw. kann man diesen Quellcode nur sehr kacke lesen und muss immer alles suchen..


    MfG
    MrKampf

    • Offizieller Beitrag

    Wenn Ich am PC bin editier ich das nochmal.


    Der Befehl ist zweimal drinnen weil es ja 2 Varianten des Befehls gibt


    1. /heilen (Heilt sich selber)


    2. /heilen <Name> (Heilt jemand anderen)

  • Das ist vollkommener Blödsinn du kannst einen Befehl machen und im Befehl prüfen wie ich es dir in den Code gebaut habe ob ein Zusatz eingegben ist oder nicht.


    MfG
    MrKampf

    • Offizieller Beitrag

    Sorry, ich kann eigenlich in Java Programmieren aber irgendwie habe ich diesen Schritt nicht gelernt. Sorry :)



    //EDIT Danke für deine Hilfe @MrKampf funktioniert jetzt einwandfrei!