Gelöst ServerPlugin Welt der Config ist null

Dieses Thema im Forum "Programmierung" wurde erstellt von AvoPXL, 5. September 2016.

  1. AvoPXL
    Offline

    AvoPXL

    Registriert seit:
    14. Mai 2016
    Beiträge:
    28
    Hey MCSEU,

    ich arbeite gerade an einen eigenen Minigame.

    Ich habe eine Location erstellt "Location teleport = new Location(Welt, X, Y, Z)"

    Beim Teleport bzw. wenn dieser Teleport ausgeführt wird, kommt ein Error: NullPointerException.

    Folgendes ist Null:
    Code (Text):
    1. static Main m;
    2.  
    3. World w = Bukkit.getServer().getWorld(m.getConfig().getString("world"));
    Ich glaube es liegt daran dass in der Config folgendes steht:

    world: world

    und nicht

    world: 'world'

    Es existiert alles in der Config.

    Vielen Dank für die Hilfe.
     
    #1
  2. Trasher
    Offline

    Trasher

    Registriert seit:
    14. März 2016
    Beiträge:
    15
    Ort:
    Manching
    Minecraft:
    _Trasher
    Ich schätze eher, dass die NPE davon kommt, weil die Variable "m" nicht zugewiesen wurde.
     
    #2
  3. AvoPXL
    Offline

    AvoPXL

    Registriert seit:
    14. Mai 2016
    Beiträge:
    28
    Also ist m sozusagen null?
     
    #3
  4. jensIO
    Offline

    jensIO

    Registriert seit:
    28. Juli 2015
    Beiträge:
    602
    Ort:
    Internet, im Neuland
    Minecraft:
    jens1o
    Zeig uns mal deine Main.
     
    #4
  5. AvoPXL
    Offline

    AvoPXL

    Registriert seit:
    14. Mai 2016
    Beiträge:
    28
    Code (Text):
    1. package me.avopxl.haudenhemdmann;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.Location;
    8. import org.bukkit.Material;
    9. import org.bukkit.World;
    10. import org.bukkit.block.Sign;
    11. import org.bukkit.command.Command;
    12. import org.bukkit.command.CommandSender;
    13. import org.bukkit.entity.Player;
    14. import org.bukkit.event.EventHandler;
    15. import org.bukkit.event.Listener;
    16. import org.bukkit.event.block.BlockBreakEvent;
    17. import org.bukkit.event.block.BlockPlaceEvent;
    18. import org.bukkit.event.block.SignChangeEvent;
    19. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    20. import org.bukkit.event.player.PlayerInteractEvent;
    21. import org.bukkit.event.player.PlayerQuitEvent;
    22. import org.bukkit.inventory.ItemStack;
    23. import org.bukkit.plugin.java.JavaPlugin;
    24.  
    25. public class Main extends JavaPlugin implements Listener {
    26.  
    27.     /** UTILS **/
    28.  
    29.     public static HashMap<Player, Location> save = new HashMap<Player, Location>();
    30.     public static HashMap<Player, ItemStack[]> save2 = new HashMap<Player, ItemStack[]>();
    31.  
    32.     public static ArrayList<Player> ingame = new ArrayList<Player>();
    33.  
    34.     public static boolean countdown = false;
    35.  
    36.     /** REGISTERING **/
    37.  
    38.     @Override
    39.     public void onEnable() {
    40.         Bukkit.getServer().getPluginManager().registerEvents(this, this);
    41.         set("hemd.spawn.welt", "world");
    42.         coord("hemd.spawn.x", 0);
    43.         coord("hemd.spawn.y", 0);
    44.         coord("hemd.spawn.z", 0);
    45.         set("hemd.teleport.welt", "world");
    46.         coord("hemd.teleport.x", 0);
    47.         coord("hemd.teleport.y", 0);
    48.         coord("hemd.teleport.z", 0);
    49.         set("hemd.wartelobby.welt", "world");
    50.         coord("hemd.wartelobby.x", 0);
    51.         coord("hemd.wartelobby.y", 0);
    52.         coord("hemd.wartelobby.z", 0);
    53.         getConfig().options().copyDefaults(true);
    54.         saveConfig();
    55.     }
    56.  
    57.     /** METHODS **/
    58.  
    59.     public void coord(String config, int value) {
    60.         if (getConfig().getInt(config) == 0) {
    61.             getConfig().set(config, value);
    62.         } else {
    63.             getConfig().set(config, getConfig().getInt(config));
    64.         }
    65.     }
    66.  
    67.     public void set(String config, String value) {
    68.         if (getConfig().getString(config) == null) {
    69.             getConfig().set(config, value);
    70.         } else {
    71.             getConfig().set(config, getConfig().getString(config));
    72.         }
    73.     }
    74.  
    75.     public void start(Player gamers) {
    76.         if (Join.running == false) {
    77.             World w = Bukkit.getServer().getWorld(getConfig().getString("hemd.spawn.world"));
    78.             Location spawn = new Location(w, getConfig().getDouble("hemd.spawn.x"),
    79.                     getConfig().getDouble("hemd.spawn.y"), getConfig().getDouble("hemd.spawn.z"));
    80.             gamers.teleport(spawn);
    81.             gamers.sendMessage("§7[§eHau den HemdMann§7] §aDas Spiel hat begonnen! Farme dir nun Equipment!");
    82.             ingame.add(gamers);
    83.             Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    84.                 public void run() {
    85.                     gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 4 Minute werden alle Spieler teleportiert!");
    86.                 }
    87.             }, 1 * (60 * 20));
    88.             Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    89.                 public void run() {
    90.                     gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 3 Minute werden alle Spieler teleportiert!");
    91.                 }
    92.             }, 2 * (60 * 20));
    93.             Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    94.                 public void run() {
    95.                     gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 2 Minute werden alle Spieler teleportiert!");
    96.                 }
    97.             }, 3 * (60 * 20));
    98.             Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    99.                 public void run() {
    100.                     gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 1 Minute werden alle Spieler teleportiert!");
    101.                 }
    102.             }, 4 * (60 * 20));
    103.             Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    104.                 public void run() {
    105.                     Teleport.teleport(gamers);
    106.                 }
    107.             }, 5 * (60 * 20));
    108.         } else {
    109.             gamers.sendMessage(
    110.                     "§4§lError: §cDie Runde ist anscheinend bereits gestartet! Bitte melde das einen Administrator.");
    111.         }
    112.     }
    113.  
    114.     public void end() {
    115.         for (Player p : Join.players) {
    116.             p.sendMessage("§7[§eHau den HemdMann§7] §aHerzlichen Glückwunsch! Alle HemdMänner wurden gehauen!");
    117.             p.sendMessage("§7[§eHau den HemdMann§7] §aBenutze den Befehl /leavehdhm oder warte noch 10 Sekunden.");
    118.             Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    119.                 public void run() {
    120.                     if (Join.players.contains(p)) {
    121.                         Leave.leave(p);
    122.                         Join.running = false;
    123.                     }
    124.                 }
    125.             }, 10 * 20);
    126.         }
    127.     }
    128.  
    129.     /** EVENTS **/
    130.  
    131.     @EventHandler
    132.     public void SignChangeEvent(SignChangeEvent e) {
    133.         Player p = e.getPlayer();
    134.         if (p.hasPermission("hemdmann.haudenhemdmann.schild")) {
    135.             if (e.getLine(0).equalsIgnoreCase("[hau]") || e.getLine(0).equalsIgnoreCase("[hdhm]")) {
    136.                 e.setLine(0, "§6[HDHM]");
    137.                 e.setLine(1, Join.players.size() + "§e/§010");
    138.                 Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
    139.                     public void run() {
    140.                         e.setLine(1, Join.players.size() + "§e/§010");
    141.                     }
    142.                 }, 50, 50);
    143.                 e.setLine(2, "§b[§3Join§b]");
    144.                 e.setLine(3, "***");
    145.             }
    146.         }
    147.     }
    148.  
    149.     @EventHandler
    150.     public void PlayerInteract(PlayerInteractEvent e) {
    151.         Player p = e.getPlayer();
    152.         ItemStack i = e.getItem();
    153.         if (e.getClickedBlock().getType() == Material.WALL_SIGN) {
    154.             Sign s = (Sign) e.getClickedBlock().getState();
    155.             if (s.getLine(3).equalsIgnoreCase("***")) {
    156.                 Join.join(p);
    157.             }
    158.         } else if (i.getType() == Material.SLIME_BALL) {
    159.             if (i.getItemMeta().getDisplayName().equalsIgnoreCase("§cSpiel verlassen")) {
    160.                 Leave.leave(p);
    161.             }
    162.         } else {
    163.  
    164.         }
    165.     }
    166.  
    167.     @EventHandler
    168.     public void onLeave(PlayerQuitEvent e) {
    169.         Player p = e.getPlayer();
    170.         if (Join.players.contains(p)) {
    171.             Leave.leave(p);
    172.         }
    173.     }
    174.  
    175.     @EventHandler
    176.     public void onBlockPlace(BlockPlaceEvent e) {
    177.         if (Join.players.contains(e.getPlayer())) {
    178.             e.setCancelled(true);
    179.         }
    180.     }
    181.  
    182.     @EventHandler
    183.     public void onBlockBreak(BlockBreakEvent e) {
    184.         if (Join.players.contains(e.getPlayer())) {
    185.             e.setCancelled(true);
    186.         }
    187.     }
    188.  
    189.     @EventHandler
    190.     public void onDamage(EntityDamageByEntityEvent e) {
    191.         if (Join.players.contains(e.getEntity())) {
    192.             e.setCancelled(true);
    193.         }
    194.     }
    195.  
    196.     /** COMMANDS **/
    197.  
    198.     public boolean onCommand(CommandSender cs, Command cmd, String label, String[] args) {
    199.         Player p = (Player) cs;
    200.         if (cmd.getName().equalsIgnoreCase("sethemdspawn")) {
    201.             if (p.hasPermission("hemdmann.haudenhemdmann.setspawn")) {
    202.                 if (args.length == 0) {
    203.                     getConfig().set("hemd.spawn.world", "'" + p.getWorld().getName().toString() + "'");
    204.                     getConfig().set("hemd.spawn.x", p.getLocation().getX());
    205.                     getConfig().set("hemd.spawn.y", p.getLocation().getY());
    206.                     getConfig().set("hemd.spawn.z", p.getLocation().getZ());
    207.                     saveConfig();
    208.                     p.sendMessage("§aDer Spawn wurde erfolgreich gesetzt!");
    209.                     return true;
    210.                 } else {
    211.                     p.sendMessage("§c/sethemdspawn");
    212.                     return true;
    213.                 }
    214.             }
    215.         }
    216.         if (cmd.getName().equalsIgnoreCase("starthdhm")) {
    217.             if (p.hasPermission("hemdmann.haudenhemdmann.start")) {
    218.                 for (Player gamers : Join.players) {
    219.                     start(gamers);
    220.                 }
    221.             }
    222.         }
    223.         if (cmd.getName().equalsIgnoreCase("sethemdteleport")) {
    224.             if (p.hasPermission("hemdmann.haudenhemdmann.setteleport")) {
    225.                 if (args.length == 0) {
    226.                     getConfig().set("hemd.teleport.world", "'" + p.getWorld().getName().toString() + "'");
    227.                     getConfig().set("hemd.teleport.x", p.getLocation().getX());
    228.                     getConfig().set("hemd.teleport.y", p.getLocation().getY());
    229.                     getConfig().set("hemd.teleport.z", p.getLocation().getZ());
    230.                     saveConfig();
    231.                     p.sendMessage("§aDer Spawn des Teleports wurde erfolgreich gesetzt!");
    232.                     return true;
    233.                 } else {
    234.                     p.sendMessage("§c/sethemdspawn");
    235.                     return true;
    236.                 }
    237.             }
    238.         }
    239.         if (cmd.getName().equalsIgnoreCase("joinhdhm")) {
    240.             Join.join(p);
    241.         }
    242.         if (cmd.getName().equalsIgnoreCase("leavehdhm")) {
    243.             Leave.leave(p);
    244.         }
    245.         if (cmd.getName().equalsIgnoreCase("setwartelobby")) {
    246.             if (p.hasPermission("hemdmann.haudenhemdmann.setwartelobby")) {
    247.                 if (args.length == 0) {
    248.                     getConfig().set("hemd.wartelobby.world", "'" + p.getWorld().getName().toString() + "'");
    249.                     getConfig().set("hemd.wartelobby.x", p.getLocation().getX());
    250.                     getConfig().set("hemd.wartelobby.y", p.getLocation().getY());
    251.                     getConfig().set("hemd.wartelobby.z", p.getLocation().getZ());
    252.                     saveConfig();
    253.                     p.sendMessage("§aDer Spawn der Wartelobby wurde erfolgreich gesetzt!");
    254.                     return true;
    255.                 } else {
    256.                     p.sendMessage("§c/sethemdspawn");
    257.                     return true;
    258.                 }
    259.             }
    260.         }
    261.         return true;
    262.     }
    263.  
    264. }
    Und ich weis das mit coord() und set() war unnötig könnte man mit addDefault machen aber ich hatte nur etwas getestet.
    Ich habe mittlerweile die Methode von dieser Location in die Main eingefügt
     
    #5
  6. AvoPXL
    Offline

    AvoPXL

    Registriert seit:
    14. Mai 2016
    Beiträge:
    28
    Okay habe es nun hinbekommen statt z.B.
    m.getConfig()
    zu benutzen, dass hier zu schreiben:
    Main.getPlugin(Main.class).getConfig()
     
    #6