diff --git a/src/main/java/fr/korastrip/paperplugin/SharedStats.java b/src/main/java/fr/korastrip/paperplugin/SharedStats.java index 4bbaffe..065e71f 100644 --- a/src/main/java/fr/korastrip/paperplugin/SharedStats.java +++ b/src/main/java/fr/korastrip/paperplugin/SharedStats.java @@ -29,6 +29,7 @@ public void onEnable() { this.getServer().getPluginManager().registerEvents(new DamageListener(this), this); this.getServer().getPluginManager().registerEvents(new PlayerQuitListener(this), this); this.getServer().getPluginManager().registerEvents(new PlayerDeathListener(this), this); + this.getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this); this.getServer().getPluginManager().registerEvents(new RegenerationListener(this), this); this.getServer().getPluginManager().registerEvents(new PlayerRespawnListener(this), this); this.getServer().getPluginManager().registerEvents(new EntityResurrectListener(this), this); diff --git a/src/main/java/fr/korastrip/paperplugin/listener/PlayerJoinListener.java b/src/main/java/fr/korastrip/paperplugin/listener/PlayerJoinListener.java new file mode 100644 index 0000000..cac825e --- /dev/null +++ b/src/main/java/fr/korastrip/paperplugin/listener/PlayerJoinListener.java @@ -0,0 +1,38 @@ +package fr.korastrip.paperplugin.listener; + +import fr.korastrip.paperplugin.SharedStats; +import fr.korastrip.paperplugin.model.SharedGroup; +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; + +public class PlayerJoinListener implements Listener { + + private final SharedStats plugin; + + public PlayerJoinListener(SharedStats plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + SharedGroup group = this.plugin.getGroup(); + + if(!group.getIsPlaying()) return; + if (group.getPlayersId().contains(player.getUniqueId())) { + + Bukkit.getScheduler().runTask(plugin, () -> { + if (!player.isOnline()) return; + if(player.isDead()) return; + + if(this.plugin.getSynchronizationConfig().isEnabled("health")) player.setHealth(group.getHealth()); + if(this.plugin.getSynchronizationConfig().isEnabled("food")) player.setFoodLevel(group.getFood()); + }); + } + } + + +} diff --git a/src/main/java/fr/korastrip/paperplugin/listener/PlayerQuitListener.java b/src/main/java/fr/korastrip/paperplugin/listener/PlayerQuitListener.java index fde17f6..29baf7b 100644 --- a/src/main/java/fr/korastrip/paperplugin/listener/PlayerQuitListener.java +++ b/src/main/java/fr/korastrip/paperplugin/listener/PlayerQuitListener.java @@ -38,13 +38,18 @@ public void onPlayerQuit(PlayerQuitEvent event) { group.resetGroup(); return; } - group.removePlayer(playerId); - if (group.getIsPlaying() && group.getOnlinePlayers().size() < 2) { - group.getOnlinePlayers().forEach(p -> { - p.sendRichMessage("The group has been disbanded because there are not enough players to continue."); - }); - group.resetGroup(); - } + + Bukkit.getScheduler().runTask(plugin, () -> { + if (!group.getIsPlaying()) { + group.removePlayer(playerId); + } + if (group.getIsPlaying() && group.getOnlinePlayers().size() < 2) { + group.getOnlinePlayers().forEach(p -> { + p.sendRichMessage("The group has been disbanded because there are not enough players to continue."); + }); + group.resetGroup(); + } + }); } } }