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

Bukkit:替换块只是丢弃新块的项目

曾新
2023-03-14

我是Java和Spiget-API的新手。我想做一个Block中断事件来检测一个GOLD_ORE块是否被玩家破坏了。如果是这样,它应该用一个STONE块替换那个GOLD_ORE块。但是它不起作用,它没有替换块,而是丢弃了一个当然是鹅卵石的项目。

我的代码:

public class GoldOreListener implements Listener {

    @EventHandler
    public void onGoldOreDestroyed(BlockBreakEvent event)
    {
        Block block = event.getBlock();
        Player player = event.getPlayer();

        Material material = block.getType();

        if (material == Material.GOLD_ORE)
        {
            Location locationOfBlock = block.getLocation();
            Material newMaterial = Material.STONE;

            System.out.println(locationOfBlock.getBlock());
            locationOfBlock.getBlock().setType(newMaterial);
        }

    }
}

locationOfBlock的输出。getBlock()

CraftBlock{pos=BlockPosition{x=-158, y=83, z=303},type=GOLD_ORE,data=Block{minecraft:gold_ore},fluid=net.minecraft.world.level.material.FluidTypeEmpty@1507c3c3}

共有1个答案

姜锋
2023-03-14

这是正常的,因为此事件是在块真正断开之前调用的。因此,在事件调用中更改块将不起任何作用,并将被实际效果覆盖。

你应该取消这样的活动:

@EventHandler
public void onGoldOreDestroyed(BlockBreakEvent event) {
    Block block = event.getBlock();
    Material material = block.getType();
    if (material == Material.GOLD_ORE) {
         event.setCancelled(true); // cancel here
         block.setType(Material.STONE);
    }
}

你也可以等待一滴答,但这显然是不推荐的。

 类似资料:
  • 由于使用了容器模式来组织各模块的实例,意味着你可以比较容易的替换掉已经有的服务,以公众号服务为例: <...> $app = Factory::officialAccount($config); $app->rebind('request', new MyCustomRequest(...)); 这里的 request 为 SDK 内部服务名称。

  • 问题内容: 我有一个关于Bitbucket的项目。仅提交源。为了将项目检索到新机器上,我在IntelliJ中使用了Version Control> Checkout from Version Control。 然后,它询问我是否要从该源创建一个新项目,对此我回答“是”。到目前为止,一切都很好。它为我创建了一个不错的Java小项目,由一个模块组成。 但是,将这个项目引入IntelliJ的目的是将其变

  • 正如你在标题中所看到的,我将块替换为块。每次加载一个块时,我都会用另一个随机块替换生成块。这是我的代码 但当我加入服务器并加载一些块时,我会得到以下日志: https://pastebin.com/vA8qHSUr 有人能帮我解决这个吗?提前谢谢!

  • 这个问题只是为了让我理解这个概念。空值怎么能转换成(可丢弃的)?null不是一个类,对吗?这个问题可能很愚蠢。 我知道:

  • 除了前一节介绍的权重衰减以外,深度学习模型常常使用丢弃法(dropout)[1] 来应对过拟合问题。丢弃法有一些不同的变体。本节中提到的丢弃法特指倒置丢弃法(inverted dropout)。 方法 回忆一下,“多层感知机”一节的图3.3描述了一个单隐藏层的多层感知机。其中输入个数为4,隐藏单元个数为5,且隐藏单元$h_i$($i=1, \ldots, 5$)的计算表达式为 $$h_i = \p