Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import me.clip.placeholderapi.PlaceholderAPI;
- import me.clip.placeholderapi.expansion.PlaceholderExpansion;
- import org.bukkit.Bukkit;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.io.File;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
- public class KillLvLs extends JavaPlugin {
- private FileConfiguration config;
- private File dataFile;
- private Map<UUID, Integer> points;
- private Map<UUID, Integer> levels;
- private int serverPointMultiplier;
- private int killStreakPointMultiplier;
- private int playerKillPointMultiplier;
- @Override
- //Getting config values
- public void onEnable() {
- //Setting up hashmaps to store player data
- config = this.getConfig();
- dataFile = new File(getDataFolder(), "data.yml");
- //Setting up values for point calculations
- points = new HashMap<>();
- levels = new HashMap<>();
- serverPointMultiplier = config.getInt("serverPointMultiplier");
- killStreakPointMultiplier = config.getInt("killStreakPointMultiplier");
- //Setting up a placeholder hook for placeholderapi
- playerKillPointMultiplier = config.getInt("playerKillPointMultiplier");
- PlaceholderAPI.registerPlaceholderHook(this, new PlaceholderExpansion() {
- @Override
- public boolean canRegister() {
- return true;
- }
- @Override
- public String getAuthor() {
- return "author";
- }
- @Override
- public String getIdentifier() {
- return "killlvls";
- }
- @Override
- public String getVersion() {
- return "1.0.0";
- }
- @Override
- public String onPlaceholderRequest(Player p, String identifier) {
- if (identifier.equals("points")) {
- return points.get(p.getUniqueId()).toString();
- } else if (identifier.equals("level")) {
- return levels.get(p.getUniqueId()).toString();
- }
- return null;
- }
- //TODO: add more placeholders
- });
- //Command to check your own level and points
- getCommand("lvl").setExecutor((sender, command, label, args) -> {
- if (sender instanceof Player) {
- Player p = (Player) sender;
- p.sendMessage("You are currently level " + levels.get(p.getUniqueId()) + " with " + points.get(p.getUniqueId()) + " points.");
- }
- //Command to set another player's points
- return true;
- });
- //First argument is the target's name, second is the value to set their points to
- getCommand("setplayerpoints").setExecutor((sender, command, label, args) -> {
- //Parsing the second argument to an int
- if (sender.hasPermission("killlvls.admin")) {
- if (args.length == 2) {
- Player target = Bukkit.getPlayer(args[0]);
- int points = Integer.parseInt(args[1]);
- if (target != null) {
- setPlayerPoints(target, points);
- sender.sendMessage(target.getName() + "'s points have been set to " + points + ".");
- } else {
- sender.sendMessage("Player not found!");
- }
- } else {
- sender.sendMessage("Incorrect usage. Usage: /setplayerpoints <player> <points>");
- }
- } else {
- sender.sendMessage("You do not have permission to use this command!");
- }
- return true;
- });
- getCommand("setlevel").setExecutor((sender, command, label, args) -> {
- //Command to set another player's level
- if (sender.hasPermission("killlvls.admin")) {
- if (args.length == 2) {
- Player target = Bukkit.getPlayer(args[0]);
- int level = Integer.parseInt(args[1]);
- if (target != null) {
- //TODO: implement set player level
- sender.sendMessage(target.getName() + "'s level has been set to " + level + ".");
- } else {
- sender.sendMessage("Player not found!");
- }
- } else {
- sender.sendMessage("Incorrect usage. Usage: /setlevel <player> <level>");
- }
- } else {
- sender.sendMessage("You do not have permission to use this command!");
- }
- return true;
- });
- Bukkit.getPluginManager().registerEvents(new EventListener(), this);
- }
- @Override
- public void onDisable() {
- saveData();
- }
- class EventListener implements Listener {
- @EventHandler
- public void onPlayerDeath(PlayerDeathEvent e) {
- Player killer = e.getEntity().getKiller();
- Player victim = e.getEntity();
- if (killer != null) {
- int pointsEarned = calculatePointsEarned(killer, victim);
- addPlayerPoints(killer, pointsEarned);
- }
- }
- }
- private int calculatePointsEarned(Player killer, Player victim) {
- int pointsEarned = playerKillPointMultiplier * victim.getLevel();
- if (getKillStreak(killer) >= 3) {
- pointsEarned *= killStreakPointMultiplier;
- }
- if (getPlayersInCombat() >= 3) {
- pointsEarned *= serverPointMultiplier;
- }
- return pointsEarned;
- }
- private void addPlayerPoints(Player p, int pointsEarned) {
- int currentPoints = points.get(p.getUniqueId());
- points.put(p.getUniqueId(), currentPoints + pointsEarned);
- int currentLevel = levels.get(p.getUniqueId());
- while (points.get(p.getUniqueId()) >= (currentLevel * 10)) {
- levels.put(p.getUniqueId(), currentLevel + 1);
- currentLevel++;
- }
- }
- private void setPlayerPoints(Player p, int points) {
- points.put(p.getUniqueId(), points);
- int currentLevel = levels.get(p.getUniqueId());
- while (points.get(p.getUniqueId()) >= (currentLevel * 10)) {
- levels.put(p.getUniqueId(), currentLevel + 1);
- currentLevel++;
- }
- }
- private int getKillStreak(Player p) {
- //TODO: implement kill streak logic
- return 0;
- }
- private int getPlayersInCombat() {
- //TODO: implement players in combat logic
- return 0;
- }
- private void saveData() {
- //TODO: implement save data logic
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement