Advertisement
Guest User

Untitled

a guest
Feb 13th, 2023
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.98 KB | None | 0 0
  1. import me.clip.placeholderapi.PlaceholderAPI;
  2. import me.clip.placeholderapi.expansion.PlaceholderExpansion;
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.configuration.file.FileConfiguration;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.event.EventHandler;
  7. import org.bukkit.event.Listener;
  8. import org.bukkit.event.entity.PlayerDeathEvent;
  9. import org.bukkit.plugin.java.JavaPlugin;
  10.  
  11. import java.io.File;
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. import java.util.UUID;
  15.  
  16. public class KillLvLs extends JavaPlugin {
  17.  
  18. private FileConfiguration config;
  19. private File dataFile;
  20. private Map<UUID, Integer> points;
  21. private Map<UUID, Integer> levels;
  22. private int serverPointMultiplier;
  23. private int killStreakPointMultiplier;
  24. private int playerKillPointMultiplier;
  25.  
  26. @Override
  27. //Getting config values
  28. public void onEnable() {
  29. //Setting up hashmaps to store player data
  30. config = this.getConfig();
  31. dataFile = new File(getDataFolder(), "data.yml");
  32. //Setting up values for point calculations
  33. points = new HashMap<>();
  34. levels = new HashMap<>();
  35. serverPointMultiplier = config.getInt("serverPointMultiplier");
  36. killStreakPointMultiplier = config.getInt("killStreakPointMultiplier");
  37. //Setting up a placeholder hook for placeholderapi
  38. playerKillPointMultiplier = config.getInt("playerKillPointMultiplier");
  39. PlaceholderAPI.registerPlaceholderHook(this, new PlaceholderExpansion() {
  40.  
  41. @Override
  42. public boolean canRegister() {
  43. return true;
  44. }
  45.  
  46. @Override
  47. public String getAuthor() {
  48. return "author";
  49. }
  50.  
  51. @Override
  52. public String getIdentifier() {
  53. return "killlvls";
  54. }
  55.  
  56. @Override
  57. public String getVersion() {
  58. return "1.0.0";
  59. }
  60.  
  61. @Override
  62. public String onPlaceholderRequest(Player p, String identifier) {
  63. if (identifier.equals("points")) {
  64. return points.get(p.getUniqueId()).toString();
  65. } else if (identifier.equals("level")) {
  66. return levels.get(p.getUniqueId()).toString();
  67. }
  68. return null;
  69. }
  70.  
  71. //TODO: add more placeholders
  72. });
  73. //Command to check your own level and points
  74.  
  75. getCommand("lvl").setExecutor((sender, command, label, args) -> {
  76. if (sender instanceof Player) {
  77. Player p = (Player) sender;
  78. p.sendMessage("You are currently level " + levels.get(p.getUniqueId()) + " with " + points.get(p.getUniqueId()) + " points.");
  79. }
  80. //Command to set another player's points
  81. return true;
  82. });
  83. //First argument is the target's name, second is the value to set their points to
  84.  
  85. getCommand("setplayerpoints").setExecutor((sender, command, label, args) -> {
  86. //Parsing the second argument to an int
  87. if (sender.hasPermission("killlvls.admin")) {
  88. if (args.length == 2) {
  89. Player target = Bukkit.getPlayer(args[0]);
  90. int points = Integer.parseInt(args[1]);
  91. if (target != null) {
  92. setPlayerPoints(target, points);
  93. sender.sendMessage(target.getName() + "'s points have been set to " + points + ".");
  94. } else {
  95. sender.sendMessage("Player not found!");
  96. }
  97. } else {
  98. sender.sendMessage("Incorrect usage. Usage: /setplayerpoints <player> <points>");
  99. }
  100. } else {
  101. sender.sendMessage("You do not have permission to use this command!");
  102. }
  103. return true;
  104. });
  105.  
  106. getCommand("setlevel").setExecutor((sender, command, label, args) -> {
  107. //Command to set another player's level
  108. if (sender.hasPermission("killlvls.admin")) {
  109. if (args.length == 2) {
  110. Player target = Bukkit.getPlayer(args[0]);
  111. int level = Integer.parseInt(args[1]);
  112. if (target != null) {
  113. //TODO: implement set player level
  114. sender.sendMessage(target.getName() + "'s level has been set to " + level + ".");
  115. } else {
  116. sender.sendMessage("Player not found!");
  117. }
  118. } else {
  119. sender.sendMessage("Incorrect usage. Usage: /setlevel <player> <level>");
  120. }
  121. } else {
  122. sender.sendMessage("You do not have permission to use this command!");
  123. }
  124. return true;
  125. });
  126.  
  127. Bukkit.getPluginManager().registerEvents(new EventListener(), this);
  128. }
  129.  
  130. @Override
  131. public void onDisable() {
  132. saveData();
  133. }
  134.  
  135. class EventListener implements Listener {
  136.  
  137. @EventHandler
  138. public void onPlayerDeath(PlayerDeathEvent e) {
  139. Player killer = e.getEntity().getKiller();
  140. Player victim = e.getEntity();
  141. if (killer != null) {
  142. int pointsEarned = calculatePointsEarned(killer, victim);
  143. addPlayerPoints(killer, pointsEarned);
  144. }
  145. }
  146. }
  147.  
  148. private int calculatePointsEarned(Player killer, Player victim) {
  149. int pointsEarned = playerKillPointMultiplier * victim.getLevel();
  150. if (getKillStreak(killer) >= 3) {
  151. pointsEarned *= killStreakPointMultiplier;
  152. }
  153. if (getPlayersInCombat() >= 3) {
  154. pointsEarned *= serverPointMultiplier;
  155. }
  156. return pointsEarned;
  157. }
  158.  
  159. private void addPlayerPoints(Player p, int pointsEarned) {
  160. int currentPoints = points.get(p.getUniqueId());
  161. points.put(p.getUniqueId(), currentPoints + pointsEarned);
  162. int currentLevel = levels.get(p.getUniqueId());
  163. while (points.get(p.getUniqueId()) >= (currentLevel * 10)) {
  164. levels.put(p.getUniqueId(), currentLevel + 1);
  165. currentLevel++;
  166. }
  167. }
  168.  
  169. private void setPlayerPoints(Player p, int points) {
  170. points.put(p.getUniqueId(), points);
  171. int currentLevel = levels.get(p.getUniqueId());
  172. while (points.get(p.getUniqueId()) >= (currentLevel * 10)) {
  173. levels.put(p.getUniqueId(), currentLevel + 1);
  174. currentLevel++;
  175. }
  176. }
  177.  
  178. private int getKillStreak(Player p) {
  179. //TODO: implement kill streak logic
  180. return 0;
  181. }
  182.  
  183. private int getPlayersInCombat() {
  184. //TODO: implement players in combat logic
  185. return 0;
  186. }
  187.  
  188. private void saveData() {
  189. //TODO: implement save data logic
  190. }
  191.  
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement