Hello everyone, I've tried to make a plugin Stamina system but It doesn't work. Please help. Edit: I am not sure about the method that I used, I kept the player data in hashmap and decrease them from it Code (Text): HashMap<Player,Float> enerny = new HashMap<>(); Here is my code: Code (Java): package com.Stamina; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerToggleSprintEvent; import org.bukkit.scheduler.BukkitTask; import java.util.concurrent.TimeUnit; public class EnergyListener implements Listener { private final Main main; private int task; public EnergyListener(Main main) { this.main = main; } @EventHandler public void onJoin(PlayerJoinEvent e) { for (Player p : Bukkit.getOnlinePlayers()) { if(p.isOnline()) { if(!main.enerny.containsKey(e.getPlayer())) { main.enerny.put(e.getPlayer(),20.0F); } } if(main.enerny.containsValue(20.0F) && main.enerny.containsKey(e.getPlayer())) { p.sendMessage("Work!"); } if(main.enerny.containsValue(0.0F) && main.enerny.containsKey(e.getPlayer())) { p.sendMessage("ran out of stamina"); } } } @EventHandler public void isSprints(PlayerToggleSprintEvent e) { Bukkit.getScheduler().runTaskTimerAsynchronously(main, new Runnable() { @Override public void run() { while (e.isSprinting()) { main.enerny.remove(null,2F); if(main.enerny.containsValue(0)){ break; } } if(main.enerny.containsValue(0.0F)) { Player p = e.getPlayer(); p.sendMessage("ran out of stamina"); } } },0L ,100L); } @EventHandler public void rest(Player p) { task = Bukkit.getScheduler().scheduleAsyncRepeatingTask(main, new Runnable() { @Override public void run() { for(Player p : Bukkit.getOnlinePlayers()) { while(p.isOnGround()) { main.enerny.put(p.getPlayer(),2.0F); } if(main.enerny.containsValue(20.0F)) { Bukkit.getScheduler().cancelTask(task); break; } } } }, 0L ,100L); } @EventHandler public void cancelrest(PlayerToggleSprintEvent e) { if(e.getPlayer().isSprinting()) { Bukkit.getScheduler().cancelTask(task); } } }
I am sorry for not explaining this clearly. the plugin is runnable but It has a problem with my code.