ServerPlugin God Mode funktioniert nicht..

Dieses Thema im Forum "Programmierung" wurde erstellt von PepaMC, 15. September 2014.

  1. PepaMC
    Offline

    PepaMC

    Registriert seit:
    29. Juli 2013
    Beiträge:
    6
    Hallo,
    ich habe eine kurze Frage.. ich glaube ich stehe echt auf dem Schlauch warum mein Code nicht funktioniert.. irgendwie erkennt er nicht wenn der Spieler in der ArrayList ist..

    Alles ist importiert, daran kann's nicht liegen.

    Code (Text):
    1. package Commands;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandExecutor;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.EventPriority;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.entity.EntityDamageEvent;
    13.  
    14. import Main.JRC;
    15.  
    16. public class GodCommand implements CommandExecutor, Listener {
    17.    
    18.     ArrayList<String> god = new ArrayList<String>();
    19.    
    20.     public boolean onCommand(CommandSender sender, Command cmd, String label,
    21.             String[] args) {
    22. Player p = (Player)sender;
    23.  
    24.     if (label.equalsIgnoreCase("god")) {
    25.       if (p.hasPermission("jrc.god")) {
    26.         if (args.length == 0) {
    27.             if(!god.contains(p.getName())) {
    28.             p.setHealth(20D);
    29.             p.setFoodLevel(20);
    30.             p.setFireTicks(0);
    31.             p.setExhaustion(0.0F);
    32.             p.sendMessage(JRC.prefix + "§7Dein Godmode ist nun eingeschaltet");
    33.             god.add(p.getName());
    34.             } else {
    35.                 god.remove(p.getName());
    36.                 p.sendMessage(JRC.prefix + "§7Dein Godmode ist nun ausgeschaltet");
    37.             }
    38.         } else if (args.length == 1) {
    39.           if (p.getServer().getPlayer(args[0]) != null) {
    40.             Player p2 = p.getServer().getPlayer (
    41.               args[0]);
    42.             if(!god.contains(p2.getName())) {
    43.             p.setHealth(20D);
    44.             p2.setFoodLevel(20);
    45.             p2.setFireTicks(0);
    46.             p.setExhaustion(0.0F);
    47.             p.sendMessage(JRC.prefix + "§7Du hast §6" + p2.getName() + "§7 Godmode gegeben.");
    48.             p2.sendMessage(JRC.prefix + "§7Du hast von §6" + p.getName() + " §7Godmode bekommen.");
    49.             god.add(p2.getName());
    50.             } else {
    51.                 p.sendMessage(JRC.prefix + "§7Du hast §6" + p2.getName() + "§7 Godmode entzogen.");
    52.                 p2.sendMessage(JRC.prefix + "§7Du hast von §6" + p.getName() + " §7Godmode entzogen bekommen.");
    53.             }
    54.           } else {
    55.             p.sendMessage(JRC.prefix + "§cDieser Spieler wurde nicht gefunden.");
    56.           }
    57.         }
    58.       }
    59.       else {
    60.         p.sendMessage(JRC.perm);
    61.       }
    62.     }
    63.     return false;
    64.     }
    65.    
    66.      @EventHandler(priority = EventPriority.HIGH)
    67.         public void onDamage(EntityDamageEvent event){
    68.          Player p = (Player)event.getEntity();
    69.          p.sendMessage("§7ERKANNT!");
    70.          if(god.contains(p.getName())) {
    71.          event.setCancelled(true);
    72.          p.sendMessage("§aERKANNT!");
    73.      }
    74.      }
    75.    
    76. }
    Freue mich auf Antworten

    LG.
     
    #1
  2. delta242
    Offline

    delta242

    Registriert seit:
    28. Mai 2012
    Beiträge:
    90
    Ich kann dir schon sagen warum das nicht geht. Vermutlich machst du in deiner Hauptklasse etwas wie:

    getCommand("god").setExecutor(new GodCommand());
    und
    Bukkit.getPluginManager().registerListener(this, new GodCommand());

    Nun hast du jeweils ein neues Objekt der Klasse GodCommand und dadurch hast du auch zweimal deine "god" Liste. Es gibt in dem Fall zwei Möglichkeiten:

    1. Du definierst die "god" Liste als static, dadurch ist sie nicht von Objekt zu Objekt unterschiedlich (also "static ArrayList<String> god = new ...")
    2. In deiner Hauptklasse erstellst du nur ein Objekt der Klasse, speicherst dies ab und registrierst den Command sowie den Listener mit dem gleichen Objekt (also sowas in der Art:
    GodCommand godCommand = new GodCommand();
    getCommand("god").setExecutor(godCommand);
    Bukkit.getPluginManager().registerListener(this, godCommand);
     
    #2
  3. PepaMC
    Offline

    PepaMC

    Registriert seit:
    29. Juli 2013
    Beiträge:
    6
    Static.. darauf hätte ich auch kommen sollen :)
    Vielen dank!
     
    #3