基本上,每当我在服务器中键入某个命令时,它都会多次加载所有这些代码(20+)。出于某种原因,每当我键入命令时,服务器都会冻结(包括控制台)。如果我停止服务器并重新启动它,它会说某些东西绑定到服务器正在运行的端口,导致我不得不终止服务器进程。是因为在我发出命令时运行的计算太多了吗?我记得它以前没有崩溃过,但是在我改变了百分比条的计算方式之后,它每次都崩溃了。
package com.mcvigor.utils;
import java.util.ArrayList;
import org.apache.commons.lang.WordUtils;
import org.bukkit.ChatColor;
import org.bukkit.inventory.meta.ItemMeta;
import com.mcvigor.RunePlayer;
import com.mcvigor.Skills;
public class ItemUtils {
public static ItemMeta addSkillInformation(ItemMeta i, Skills skill, RunePlayer rp) {
i.setDisplayName(ChatColor.GOLD + WordUtils.capitalize(skill.toString().toLowerCase()));
ArrayList<String> lore = new ArrayList<String>();
lore.add(ChatColor.RED + "Level " + ChatColor.YELLOW + rp.getSkillLevel(skill));
int xp = rp.getSkillXP(skill);
int neededXP = rp.getXPRequiredForLevel((rp.getSkillLevel(skill) + 1));
lore.add(ChatColor.RED + "Experience: " + ChatColor.YELLOW + xp + ChatColor.RED + " / " + ChatColor.YELLOW + neededXP);
lore.add(ChatColor.RED + "Remainder: " + ChatColor.YELLOW + (neededXP - xp));
float percent = (xp/neededXP);
int percent10 = (int) Math.floor(percent * 10);
String bar = "";
while (percent10 >= 10) {
bar += ChatColor.GREEN + "▀";
percent--;
}
while (percent10 < 10) {
bar += ChatColor.RED + "▀";
percent10--;
}
lore.add(ChatColor.RED + "Percent to next level: " + ChatColor.YELLOW + (int) percent + ChatColor.RED + "%");
lore.add(bar);
i.setLore(lore);
return i;
}
}
编辑:认为是因为:
while (percent10 < 10) {
bar += ChatColor.RED + "▀";
percent10--;
}
percent10 总是小于 10,所以它会不断重复。