初始化项目
This commit is contained in:
122
src/main/java/com/yaohun/petsystem/api/PetExpAPI.java
Normal file
122
src/main/java/com/yaohun/petsystem/api/PetExpAPI.java
Normal file
@@ -0,0 +1,122 @@
|
||||
package com.yaohun.petsystem.api;
|
||||
|
||||
import com.yaohun.petsystem.PetMain;
|
||||
import com.yaohun.petsystem.data.PetData;
|
||||
import com.yaohun.petsystem.data.PlayerData;
|
||||
import com.yaohun.petsystem.manage.LevelExpManager;
|
||||
import com.yaohun.petsystem.manage.PetManager;
|
||||
import com.yaohun.petsystem.manage.PlayerManager;
|
||||
import com.yaohun.petsystem.model.PetNbt;
|
||||
import de.tr7zw.nbtapi.NBTItem;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class PetExpAPI {
|
||||
|
||||
public static void addExp(Player player, int addExp) {
|
||||
String playerName = player.getName();
|
||||
PlayerManager playerManager = PetMain.getPlayerManager();
|
||||
PlayerData playerData = playerManager.getPlayerData(playerName);
|
||||
if (playerData.isPetStackNull()) {
|
||||
System.out.println("[日志 - 灵宠] 玩家 " + playerName + " 尚未携带宠物.");
|
||||
return;
|
||||
}
|
||||
PetNbt petNbt = playerData.getPetNbt();
|
||||
String petKey = petNbt.petData.getFileName();
|
||||
PetData petData = PetManager.getPetData(petKey);
|
||||
if (petData == null) {
|
||||
System.out.println("[日志 - 灵宠] 未添加 " + petKey + " 的宠物配置.");
|
||||
return;
|
||||
}
|
||||
int petLevel = petNbt.level;
|
||||
if (petLevel >= petData.getMaxLevel()) {
|
||||
return;
|
||||
}
|
||||
// 进化阶段判断
|
||||
int evolution = petNbt.evolution;
|
||||
if (evolution == 1) {
|
||||
if (petLevel >= 20) {
|
||||
return;
|
||||
}
|
||||
} else if (evolution == 2) {
|
||||
if (petLevel >= 40) {
|
||||
return;
|
||||
}
|
||||
} else if (evolution == 3) {
|
||||
if (petLevel >= 60) {
|
||||
return;
|
||||
}
|
||||
} else if (evolution == 4) {
|
||||
if (petLevel >= 70) {
|
||||
return;
|
||||
}
|
||||
} else if (evolution == 5) {
|
||||
if (petLevel >= 75) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
int needExp = LevelExpManager.getNeedExpValue(petLevel);
|
||||
petNbt.setTotalExp(petNbt.totalExp + addExp);
|
||||
|
||||
int nowExp = petNbt.exp;
|
||||
addExp = nowExp + addExp;
|
||||
while (addExp >= needExp) {
|
||||
if (petLevel < 0) {
|
||||
break;
|
||||
}
|
||||
addExp -= needExp;
|
||||
petLevel++;
|
||||
needExp = LevelExpManager.getNeedExpValue(petLevel);
|
||||
bcmupLevelEvant(playerName, petLevel);
|
||||
playerData.refreshPetStack();
|
||||
}
|
||||
petNbt.setExp(addExp);
|
||||
petNbt.setLevel(petLevel);
|
||||
playerData.savePlayerData();
|
||||
}
|
||||
|
||||
public static PetNbt addExp(String playerName, ItemStack stack, int addExp) {
|
||||
NBTItem nbtItem = new NBTItem(stack);
|
||||
String petKey = nbtItem.getString("petKey");
|
||||
PetData petData = PetManager.getPetData(petKey);
|
||||
if (petData == null) {
|
||||
System.out.println("[日志 - 灵宠] 未添加 " + petKey + " 的宠物配置.");
|
||||
return null;
|
||||
}
|
||||
PetNbt petNbt = new PetNbt();
|
||||
petNbt.loadNbtData(nbtItem);
|
||||
int petLevel = petNbt.level;
|
||||
if (petLevel >= petData.getMaxLevel()) {
|
||||
return petNbt;
|
||||
}
|
||||
int needExp = LevelExpManager.getNeedExpValue(petLevel);
|
||||
petNbt.setTotalExp(petNbt.totalExp + addExp);
|
||||
|
||||
int nowExp = petNbt.exp;
|
||||
addExp = nowExp + addExp;
|
||||
while (addExp >= needExp) {
|
||||
if (petLevel < 0) {
|
||||
break;
|
||||
}
|
||||
addExp -= needExp;
|
||||
petLevel++;
|
||||
needExp = LevelExpManager.getNeedExpValue(petLevel);
|
||||
bcmupLevelEvant(playerName, petLevel);
|
||||
}
|
||||
petNbt.setExp(addExp);
|
||||
petNbt.setLevel(petLevel);
|
||||
return petNbt;
|
||||
}
|
||||
|
||||
public static void bcmupLevelEvant(String playerName, int level) {
|
||||
boolean butt = false;
|
||||
if (level == 10 || level == 20 || level == 30 || level == 40 || level == 50 ||
|
||||
level == 60 || level == 70 || level == 80 || level == 90 || level == 100
|
||||
|| level == 105 || level == 110 || level == 115 || level == 120 || level == 125) {
|
||||
butt = true;
|
||||
}
|
||||
if (butt) {
|
||||
// Bukkit.broadcastMessage("§f[§c§l公告§f] §a玩家§e"+playName+"§a本月器师手礼达到了 §7[§e§lLv."+level+"§7]");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user