Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.revengermc.game.api;
- import java.sql.SQLException;
- import java.sql.Statement;
- import org.bukkit.Bukkit;
- import org.bukkit.Color;
- import org.bukkit.FireworkEffect;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Firework;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.meta.FireworkMeta;
- import net.revengermc.Core;
- import net.revengermc.player.api.PlayerAPI;
- import net.revengermc.server.api.MessageQuality;
- import net.revengermc.server.api.ServerLog;
- public class LevelAPI {
- public static int getMaxXPbyLevel(int level) {
- int limitxp = 60;
- if (level >= 2) {
- for (int lvl = 2; lvl <= level; lvl++) {
- int phase = (int)(lvl/10)+3;
- limitxp = (int)limitxp+(1*limitxp/phase);
- }
- }
- return limitxp;
- }
- public static void addXP(String playername, int xp) {
- addXP(playername, xp, false);
- }
- public static void setXP(String playername, int newxp) {
- try {
- Statement statement = Core.connection.createStatement();
- statement.executeUpdate("UPDATE mmodata SET CurrentXP='" + newxp + "' WHERE Username='" + playername + "';");
- } catch (SQLException sql) {
- }
- }
- public static void setLevel(String playername, int newlevel) {
- try {
- Statement statement = Core.connection.createStatement();
- statement.executeUpdate("UPDATE mmodata SET Level='" + newlevel + "' WHERE Username='" + playername + "';");
- } catch (SQLException sql) {
- }
- }
- public static void addXP(String playername, int xp, boolean notupdatebar) {
- if (Bukkit.getServer().getPlayer(playername) != null) {
- Player p = (Player)Bukkit.getServer().getPlayer(playername);
- int currentXP = PlayerAPI.getCurrentXP(playername);
- int currentLevel = PlayerAPI.getLevel(playername);
- int getmaxXP = getMaxXPbyLevel(currentLevel);
- int newXP = currentXP + xp;
- if (newXP >= getmaxXP) {
- // NEW LEVEL
- setXP(playername, 0);
- setLevel(playername, currentLevel+1);
- int remainXP = newXP - getmaxXP;
- if (!notupdatebar) {
- updatePlayer(p);
- alertLevelingUp(p, currentLevel+1);
- }
- addXP(playername, remainXP);
- } else {
- // STAY IN THIS LEVEL
- setXP(playername, newXP);
- if (!notupdatebar) {
- updatePlayer(p);
- }
- }
- }
- }
- private static void alertLevelingUp(Player p,int level) {
- p.sendMessage("§6---------------------------------------------");
- p.sendMessage(" ");
- p.sendMessage(" §a§kA §f§lLevel up! §a§kA");
- p.sendMessage("§e You are now leveling up to §lLevel " + level);
- LevelASQAPI.sendAvailableinThisLevel(p, level);
- p.sendMessage(" ");
- p.sendMessage("§6---------------------------------------------");
- p.setFoodLevel(20);
- Firework fw = (Firework)p.getWorld().spawnEntity(p.getLocation(), EntityType.FIREWORK);
- FireworkMeta fwmeta = fw.getFireworkMeta();
- fwmeta.addEffect(FireworkEffect.builder().withColor(Color.LIME).build());
- fw.setFireworkMeta(fwmeta);
- for (Entity en: p.getNearbyEntities(100, 100, 100)) {
- if (en instanceof Player) {
- Player ps = (Player)en;
- ps.sendMessage("§6" + p.getName() + " is now leveling up to level " + level);
- }
- }
- ServerLog.sendLog(p.getName() + " is now level " + level, MessageQuality.PEACEFUL);
- }
- public static void updatePlayer(Player p) {
- int currentXP = PlayerAPI.getCurrentXP(p.getName());
- int currentLevel = PlayerAPI.getLevel(p.getName());
- p.setLevel(currentLevel);
- float xpbar = (float)currentXP/getMaxXPbyLevel(currentLevel);
- // p.sendMessage("§eXPBAR: §f" + xpbar + " §d" + currentXP + " §c" + getMaxXPbyLevel(currentLevel));
- if (xpbar >= 1 || xpbar < 0) {
- xpbar = 0;
- }
- // p.sendMessage("§aXPBAR: §f" + xpbar + " §d" + currentXP + " §c" + getMaxXPbyLevel(currentLevel));
- p.setExp(xpbar);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement