【问题标题】:Spigot change stained clay color插口改变染色粘土颜色
【发布时间】:2017-10-06 22:15:01
【问题描述】:

这是我的搜索代码:

for(int x = -100; x < 100; x ++)
{
    for(int z = -100; z < 100; z ++)
    {
        for(int y = 0; y < 50; y ++)
        {
            Location loc = new Location(Bukkit.getWorld(map_name), x, y, z);
            Block block = loc.getBlock();
            if(block.getType()
                .equals(ConstantsManager.ground_material))
            {
                if(block.getType().getData()
                    .equals(ConstantsManager.ground_redId))
                    orig_redClay.add(block);
                if(block.getType().getData()
                    .equals(ConstantsManager.ground_blueId))
                    orig_blueClay.add(block);
            }
        }
    }
}

在静态类 ConstantsManager 中

public static final Material ground_material = Material.STAINED_CLAY;

public static final int ground_blueId = 3;
public static final int ground_redId = 14;

它应该在 100*50*100 体积中搜索红色或蓝色染色粘土,调用 ConstantsManager 获取材料和颜色值。该代码能够检测块是否为粘土,但无法检测它是红色还是蓝色。为了检测粘土颜色,我可以在代码中进行哪些更改?

【问题讨论】:

  • getData() 返回什么?

标签: java minecraft bukkit


【解决方案1】:

您的问题是您使用的是block.getType().getData()。你想使用

block.getData()

block.getType().getData() 似乎返回了Class&lt;? extends MaterialData&gt;,这绝对不等于您要与之比较的 int。 (不太清楚那个方法自己返回了什么)

总结您的一个 if 语句应该如下所示。

if (block.getData() == ConstantsManager.ground_redId)

注意:您不能在原始 Java 数据类型上使用 .equals,因此 ==

【讨论】:

    【解决方案2】:

    快速搜索后,Block class 应该包含一个名为 blockID 的公共 int 变量。因此,您应该能够调用它并执行以下操作

    if(block.getType().equals(ConstantsManager.ground_material))
    {
        if(block.blockID == ConstantsManager.ground_blueId)
        {
            orig_blueClay.add(block);
        }
        else if(block.blockID == ConstantsManager.ground_redId)
        {
            orig_redClay.add(block);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 2012-01-20
      • 2015-07-16
      相关资源
      最近更新 更多