Advertisement
Guest User

Untitled

a guest
Aug 20th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.36 KB | None | 0 0
  1. package fr.enzaynox.rank;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.util.Map;
  6.  
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.configuration.file.FileConfiguration;
  9. import org.bukkit.configuration.file.YamlConfiguration;
  10. import org.bukkit.entity.Player;
  11. import org.bukkit.plugin.Plugin;
  12. import org.bukkit.scoreboard.Scoreboard;
  13. import org.bukkit.scoreboard.Team;
  14.  
  15. import co
  16. public final class Rank{
  17.  
  18. /**
  19. * Permet de stocker les grades des joueurs connecté.
  20. */
  21. private final Map<String, RankList> playerRanks = Maps.newHashMap();
  22.  
  23. /**
  24. * Permet d'enregistrer les Teams pour afficher les Grades.
  25. */
  26. private Scoreboard scoreboard;
  27.  
  28. /**
  29. * Permet de garder une instance du Plugin.
  30. */
  31. private final Plugin plugin;
  32.  
  33. /**
  34. * Permet de set un prefix au message envoyé par le plugin.
  35. */
  36. private final String prefix = "§8[§4Rank§8] ";
  37.  
  38. /**
  39. * Permet d'enregistrer les grades de joueur.
  40. */
  41. private FileConfiguration config;
  42.  
  43. /**
  44. * Endroit ou ce trouve le fichier yml de la config.
  45. */
  46. private File file;
  47.  
  48. /**
  49. * Seule constructeur qui permet d'initialiser le plugin ainsi que de créer la config.
  50. * @param plugin
  51. */
  52. public Rank(Plugin plugin){
  53. this.plugin = plugin;
  54. initConfig();
  55. }
  56.  
  57. /**
  58. * Récupere la class {@link Plugin}
  59. * @return plugin
  60. */
  61. public final Plugin getPlugin() {
  62. return plugin;
  63. }
  64.  
  65. /**
  66. * Recupére le prefix pour les debut des message envoyé par le plugin.
  67. * @return prefix
  68. */
  69. public String getPrefix() {
  70. return prefix;
  71. }
  72.  
  73. /**
  74. * Recupère le Scoreboard ou sont enregistrer les Teams pour les Grades.
  75. * @return scoreboard
  76. */
  77. public final Scoreboard getScoreboard(){
  78. return scoreboard;
  79. }
  80.  
  81. /**
  82. * Recupère la config pour enregistrer les grades des joueur.
  83. * @return config
  84. */
  85. public final FileConfiguration getConfig() {
  86. return config;
  87. }
  88.  
  89. /**
  90. * Creer le dossier Rank dans le dossier plugin puis le fichier rank.yml dans le dossier Rank
  91. * Ensuite Chargement de la config.
  92. */
  93. private void initConfig(){
  94. File f = new File("plugins/Rank");
  95. if(!f.exists()) f.mkdirs();
  96. file = new File(f, "rank.yml");
  97. if(!file.exists()){
  98. try{
  99. file.createNewFile();
  100. }catch(IOException ioe){ ioe.printStackTrace();}
  101. }
  102.  
  103. config = YamlConfiguration.loadConfiguration(file);
  104. }
  105.  
  106. /**
  107. * Enregistrer les Teams des Grades du {@link RankList} dans le scoreboard
  108. */
  109. public void initScoreboard(){
  110. if(scoreboard != null) throw new UnsupportedOperationException("Le scoreboard est deja initialise.");
  111. scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  112.  
  113. for(RankList rankList : RankList.values()){
  114. Team team = scoreboard.registerNewTeam(rankList.getName());
  115. team.setPrefix(rankList.getPrefix());
  116. team.setSuffix(rankList.getSuffix());
  117. }
  118. }
  119.  
  120. /**
  121. * Enregistre le rank du joueur dans la Map playerRanks
  122. * puis insert le joueur dans la bonne team en fonction de sont Grade.
  123. * @param player
  124. */
  125. public void loadPlayer(Player player){
  126. String uuid = player.getUniqueId().toString();
  127. if(playerRanks.containsKey(uuid)) return;
  128. if(!config.contains(uuid)) changeRank(uuid, RankList.PLAYER);
  129.  
  130. playerRanks.put(uuid, getRankById(config.getInt(uuid)));
  131. scoreboard.getTeam(playerRanks.get(uuid).getName()).addEntry(player.getName());
  132. }
  133.  
  134. /**
  135. * Supprime le joueur de la Map playerRanks.
  136. * @param player
  137. */
  138. public void deletePlayer(Player player){
  139. if(!playerRanks.containsKey(player.getUniqueId().toString())) return;
  140. playerRanks.remove(player.getUniqueId().toString());
  141. }
  142.  
  143. /**
  144. * Recupère le {@link RankList} d'un joueur.
  145. * @param player
  146. * @return rank du player
  147. */
  148. public RankList getPlayerRank(Player player){
  149. if(!playerRanks.containsKey(player.getUniqueId().toString())) loadPlayer(player);
  150. return playerRanks.get(player.getUniqueId().toString());
  151. }
  152.  
  153. /**
  154. * Recupère le {@link RankList} en fonction de l'id
  155. * @param id
  156. * @return rank par raport à l'id.
  157. */
  158. public RankList getRankById(int id){
  159. for(RankList rankList : RankList.values()){
  160. if(rankList.getId() == id) return rankList;
  161. }
  162. return RankList.PLAYER;
  163. }
  164.  
  165. /**
  166. * Sauvegarde le fichier rank.yml
  167. */
  168. public void saveConfig(){
  169. try{
  170. config.save(file);
  171. }catch(IOException ioe){ioe.printStackTrace();}
  172. }
  173.  
  174. /**
  175. * Permet de savoir si le power du Grade d'un player est egale au power dans les paramètres
  176. * @param player
  177. * @param power
  178. * @return
  179. */
  180. public boolean hasPower(Player player, int power){
  181. return (getPlayerRank(player).getPower() == power);
  182. }
  183.  
  184. /**
  185. * Permet de savoir si le power du Grade d'un player est plus grand que le power dans les paramètres
  186. * @param player
  187. * @param power
  188. * @return
  189. */
  190. public boolean hasPowerSup(Player player, int power){
  191. return (getPlayerRank(player).getPower() > power);
  192. }
  193.  
  194. /**
  195. * Permet de savoir si le power du Grade d'un player est plus petit que le power dans les paramètres
  196. * @param player
  197. * @param power
  198. * @return
  199. */
  200. public boolean hasPowerInf(Player player, int power){
  201. return (getPlayerRank(player).getPower() < power);
  202. }
  203.  
  204. /**
  205. * Permet de changer le grade dans le fichier rank.yml
  206. * @param uuid
  207. * @param rankList
  208. */
  209. public void changeRank(String uuid, RankList rankList){
  210. config.set(uuid, rankList.getId());
  211. saveConfig();
  212. }
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement