当前位置: 首页 > 知识库问答 >
问题:

为什么库存在更新?

夏飞鹏
2023-03-14

我正在使用Bukkit API 1.8和Java7。

我有一个重复的任务,循环通过服务器上的所有玩家,并将他们的盔甲随机设置为皮革,链甲等...

当我使用sethelmetsetchestplate方法时...我像往常一样更新他们的库存,但由于这个任务是每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);
}

共有1个答案

濮阳品
2023-03-14

如果改变盔甲会重置玩家的弓,您可以通过只改变加入的玩家的盔甲来解决这个问题,而不是使用弓或在EntityShootbowEvent之后。

要查看玩家是否在挥舞弓,请使用:

org.bukkit.Bukkit.entity.Player player = ...;
boolean hasBowEquiped = player.getEquipment().getItemInHand().getData().getItemType().equals(Material.BOW);
 类似资料:
  • 我是Intellij用户,现在我需要使用Eclipse来创建一个Maven Web应用程序。所以我安装了Eclipse,我添加了Tomcat和所有内容。而且我想在我的项目中使用Java8,但我有一个问题,因为我试图将JRE System Library从1.7更改为1.8,当我做Maven时- 所以我创建了一个Maven项目,我从org.apache.maven中选择webapp原型,一开始我的项

  • 问题内容: 为什么存在MaxPermSize? 问题答案: 我还没有发现任何东西可以表明他们为什么要做出设计来对永久发电量有最大限制的决定。但是我认为这样做是出于几个原因。 它使实现起来更加容易,GC绝对是不平凡的,因此以任何方式简化实现可能是一个好主意。 YAGNI(您可能会需要它)大多数应用程序都加载固定数量的类,并且通常不是特别大,因此它们可能已针对常见情况进行了优化,并选择了合理的默认值并

  • 问题内容: 在Linux中,为什么标准库需要存根? 问题答案: 需要存根以确保在各种Linux版本之间正确链接可执行文件,而无需构建目标文件。 例如:让a为我们正在构建的可执行文件: 在上述情况下,可执行文件a依赖libz.so(即与libz.so链接)。链接器使用LD_LIBRARY_PATH解析libz.so。 现在让我们看看问题所在: 在RHEL5中,我们在libz.so中看到一个未定义的符

  • 我是java新手,所以请不要后悔java中的对象和东西正在传递引用的值,但下面是我试图传递对象的代码。当我通过传递到函数中更新值时,a的值没有改变。发生了什么请帮助我。。。

  • 所以,当我试图更新我的构建时,我发现自己在挠头。渐变依赖项。com。Android支持:appcompat库版本26.0.2未解析。经过一段时间的搜索,我了解到我必须将Google的maven存储库添加到我的gradle项目文件中的存储库列表中。所以现在Google的maven repository和jcenter()都列出了。 那么,为什么谷歌现在托管自己的maven存储库,有什么理由不使用它呢

  • 问题内容: 维基百科说:“一个终止但从未被其父级等待的子进程变成了僵尸进程。” 我运行此程序: 这会创建一个僵尸进程,但我不明白为什么在这里创建了僵尸进程? 该程序的输出是 但是在这种情况下,为什么“子进程终止但没有被其父进程等待”呢? 问题答案: 在您的代码中,创建了僵尸(带有以下箭头的注释): 为什么?因为你从来没有上过。调用时,它将返回有关进程的事后信息,例如其退出代码。不幸的是,当进程退出