【发布时间】:2015-06-10 23:30:01
【问题描述】:
我正在使用带有 Java 7 的 Bukkit API 1.8。
我有一个重复任务,循环遍历服务器上的所有玩家,并将他们的盔甲随机设置为皮革、锁子甲等......
当我使用setHelmet、setChestplate 等方法时,我会像往常一样更新他们的库存,但由于此任务每 6 刻运行一次,因此运行速度很快。因此,当玩家尝试开弓时,每次执行此任务时,弓都会重置其力量。
由于我知道更新库存存在问题,因此我尝试删除 updateInventory 方法。
完成此操作后,盔甲仍会穿上并更换,但每次运行任务时弓仍会重置。
如何在保持任务运行的同时保持弓不重置?
我的代码:
@SuppressWarnings("deprecation")
public static void repeatEffect()
{
main.getServer().getScheduler().scheduleAsyncRepeatingTask(main, new Runnable()
{
@Override
public void run()
{
for(Player o : Bukkit.getOnlinePlayers())
{
Material M1 = Material.WOOL;
int num = rainbow.get(o.getName());
if(num==1)
{
M1 = Material.LEATHER_HELMET;
}
else if(num==2)
{
M1 = Material.CHAINMAIL_HELMET;
}
else if(num==3)
{
M1 = Material.GOLD_HELMET;
}
else if(num==4)
{
M1 = Material.IRON_HELMET;
}
else if(num==5)
{
M1 = Material.DIAMOND_HELMET;
}
rainbow.put(o.getName(), num+1);
if(rainbow.get(o.getName())>5)
{
rainbow.put(o.getName(), 1);
}
ItemStack rrhelm = createItemStack(M1, 1, "§a§lR§b§la§c§li§d§ln§e§lb§f§lo§a§lw §c§lH§d§le§e§ll§f§lm§a§le§b§lt", "§7Very special piece of armor");
o.getInventory().setHelmet(rrhelm);
}
}
}
, 6, 6);
}
【问题讨论】:
标签: java algorithm bukkit inventory