Solved Accessing a HashMap from another class

Discussion in 'Plugin Development' started by MrBakbuki, Apr 12, 2021.

Thread Status:
Not open for further replies.
  1. Offline

    MrBakbuki

    Hey, I'm trying to make a stat plugin. I get a weird error when I try to call methods from another class, it worked on my other plugin but here it doesn't work.

    Main Class:
    Code:
    public final class  Main extends JavaPlugin {
    
        private static Main plugin;
        public static Main getPlugin() {
            return plugin;
        }
        Tick tickClass = new Tick();
    
    
        @Override
        public void onEnable() {
            // Plugin startup logic
            plugin = this;
            tickClass.tick();
            new StatCommand(this);
            new SetStat(this);
    
        }
    
        @Override
        public void onDisable() {
            // Plugin shutdown logic
        }
    }
    Storage Class:
    Code:
    public class DataStorage {
    
        private HashMap<UUID,Integer> Strength = new HashMap<UUID,Integer>();
        private HashMap<UUID,Integer> Health = new HashMap<UUID,Integer>();
        private HashMap<UUID,Integer> Defense = new HashMap<UUID,Integer>();
        private HashMap<UUID,Integer> cHealth = new HashMap<UUID,Integer>();
    
    
        public int getStrength(UUID uuid){
            return Strength.get(uuid);
        }
        public int getHealth(UUID uuid){
            return Health.get(uuid);
        }
        public int getDefense(UUID uuid){
            return Defense.get(uuid);
        }
        public int getcHealth(UUID uuid){
            return cHealth.get(uuid);   //error
        }
    
        public void setStrength(UUID uuid, int value){
            Strength.put(uuid, value);
        }
        public void setHealth(UUID uuid, int value){
            Health.put(uuid, value);
        }
        public void setDefense(UUID uuid, int value){
            Defense.put(uuid, value);
        }
        public void setcHealth(UUID uuid, int value){
            cHealth.put(uuid, value);
        }
    
    }

    (test) SetStat Command Class:
    Code:
    public class SetStat implements CommandExecutor {
    
        private Main plugin;
        DataStorage data = new DataStorage();
    
        public SetStat(Main plugin) {
            this.plugin = plugin;
            plugin.getCommand("setstat").setExecutor(this);
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            Player p = (Player) sender;
            p.sendMessage(String.valueOf(data.getHealth(p.getUniqueId())));
            data.setHealth(p.getUniqueId(),Integer.parseInt(args[1]));
            p.sendMessage(String.valueOf(data.getHealth(p.getUniqueId())));
            return false;
        }
    }
    Error:
    null
    org.bukkit.command.CommandException: Unhandled exception executing command 'setstat' in plugin BossfightStats v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:763) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:1788) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1631) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1584) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:942) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:935) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:919) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:851) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
    Caused by: java.lang.NullPointerException
    at me.mrbakbuki.bossfightstats.datastorage.DataStorage.getHealth(DataStorage.java:18) ~[?:?]
    at me.mrbakbuki.bossfightstats.commands.SetStat.onCommand(SetStat.java:23) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    ... 19 more

    I can't manage to solve this problem, any help is appreciated.
     
  2. Offline

    timtower Administrator Administrator Moderator

    MrBakbuki likes this.
  3. Offline

    MrBakbuki

    Thank you, idk how I didn't figure it out myself :)
    Anyway, I'm pretty new to Java, do you have any tips on how to check if the value is null? Because if I try to check it doesn't let me.
    upload_2021-4-12_16-28-55.png

    Never mind, got that solved. Thanks!
     
    Last edited by a moderator: Apr 12, 2021
Thread Status:
Not open for further replies.

Share This Page