Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. package net.revengermc.game.api;
  2.  
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.Color;
  8. import org.bukkit.FireworkEffect;
  9. import org.bukkit.entity.Entity;
  10. import org.bukkit.entity.EntityType;
  11. import org.bukkit.entity.Firework;
  12. import org.bukkit.entity.Player;
  13. import org.bukkit.inventory.meta.FireworkMeta;
  14.  
  15. import net.revengermc.Core;
  16. import net.revengermc.player.api.PlayerAPI;
  17. import net.revengermc.server.api.MessageQuality;
  18. import net.revengermc.server.api.ServerLog;
  19.  
  20. public class LevelAPI {
  21.  
  22. public static int getMaxXPbyLevel(int level) {
  23. int limitxp = 60;
  24. if (level >= 2) {
  25. for (int lvl = 2; lvl <= level; lvl++) {
  26. int phase = (int)(lvl/10)+3;
  27. limitxp = (int)limitxp+(1*limitxp/phase);
  28. }
  29. }
  30. return limitxp;
  31. }
  32.  
  33. public static void addXP(String playername, int xp) {
  34. addXP(playername, xp, false);
  35. }
  36.  
  37. public static void setXP(String playername, int newxp) {
  38. try {
  39. Statement statement = Core.connection.createStatement();
  40. statement.executeUpdate("UPDATE mmodata SET CurrentXP='" + newxp + "' WHERE Username='" + playername + "';");
  41. } catch (SQLException sql) {
  42.  
  43. }
  44. }
  45.  
  46. public static void setLevel(String playername, int newlevel) {
  47. try {
  48. Statement statement = Core.connection.createStatement();
  49. statement.executeUpdate("UPDATE mmodata SET Level='" + newlevel + "' WHERE Username='" + playername + "';");
  50. } catch (SQLException sql) {
  51.  
  52. }
  53. }
  54.  
  55. public static void addXP(String playername, int xp, boolean notupdatebar) {
  56. if (Bukkit.getServer().getPlayer(playername) != null) {
  57. Player p = (Player)Bukkit.getServer().getPlayer(playername);
  58. int currentXP = PlayerAPI.getCurrentXP(playername);
  59. int currentLevel = PlayerAPI.getLevel(playername);
  60. int getmaxXP = getMaxXPbyLevel(currentLevel);
  61. int newXP = currentXP + xp;
  62. if (newXP >= getmaxXP) {
  63. // NEW LEVEL
  64. setXP(playername, 0);
  65. setLevel(playername, currentLevel+1);
  66. int remainXP = newXP - getmaxXP;
  67. if (!notupdatebar) {
  68. updatePlayer(p);
  69. alertLevelingUp(p, currentLevel+1);
  70. }
  71. addXP(playername, remainXP);
  72. } else {
  73. // STAY IN THIS LEVEL
  74. setXP(playername, newXP);
  75. if (!notupdatebar) {
  76. updatePlayer(p);
  77. }
  78. }
  79. }
  80. }
  81.  
  82. private static void alertLevelingUp(Player p,int level) {
  83. p.sendMessage("§6---------------------------------------------");
  84. p.sendMessage(" ");
  85. p.sendMessage(" §a§kA §f§lLevel up! §a§kA");
  86. p.sendMessage("§e You are now leveling up to §lLevel " + level);
  87. LevelASQAPI.sendAvailableinThisLevel(p, level);
  88. p.sendMessage(" ");
  89. p.sendMessage("§6---------------------------------------------");
  90. p.setFoodLevel(20);
  91. Firework fw = (Firework)p.getWorld().spawnEntity(p.getLocation(), EntityType.FIREWORK);
  92. FireworkMeta fwmeta = fw.getFireworkMeta();
  93. fwmeta.addEffect(FireworkEffect.builder().withColor(Color.LIME).build());
  94. fw.setFireworkMeta(fwmeta);
  95.  
  96. for (Entity en: p.getNearbyEntities(100, 100, 100)) {
  97. if (en instanceof Player) {
  98. Player ps = (Player)en;
  99. ps.sendMessage("§6" + p.getName() + " is now leveling up to level " + level);
  100. }
  101. }
  102. ServerLog.sendLog(p.getName() + " is now level " + level, MessageQuality.PEACEFUL);
  103.  
  104. }
  105.  
  106. public static void updatePlayer(Player p) {
  107. int currentXP = PlayerAPI.getCurrentXP(p.getName());
  108. int currentLevel = PlayerAPI.getLevel(p.getName());
  109. p.setLevel(currentLevel);
  110. float xpbar = (float)currentXP/getMaxXPbyLevel(currentLevel);
  111. // p.sendMessage("§eXPBAR: §f" + xpbar + " §d" + currentXP + " §c" + getMaxXPbyLevel(currentLevel));
  112. if (xpbar >= 1 || xpbar < 0) {
  113. xpbar = 0;
  114. }
  115. // p.sendMessage("§aXPBAR: §f" + xpbar + " §d" + currentXP + " §c" + getMaxXPbyLevel(currentLevel));
  116. p.setExp(xpbar);
  117. }
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement