java - 在 Minecraft bukkit 插件中构建金字塔

标签 java geometry minecraft bukkit

我想使用 bukkit 插件中的方法在 Minecraft 中构建一个简单的金字塔。最终结果应如下所示:enter image description here

我写了这段代码:

public static void buildPyramid(Location l) {
    Location pos;
    for(int i = -2; i <= 2; i++) {
        for(int j = -2; j <= 2; j++) {
            pos = l.clone().add(i, 0, j);
            Bukkit.broadcastMessage(Math.abs(i) + Math.abs(j) + ""); // for test
            int diff = Math.abs(i) + Math.abs(j);
            switch(diff) {
                case 2:
                    l.getBlock().setType(Material.BEDROCK);
                    break;
                case 1:
                    l.getBlock().setType(Material.BEDROCK);
                    pos.add(0, 1, 0);
                    l.getBlock().setType(Material.BEDROCK);
                    pos.add(0, -1, 0);
                    break;
                case 0:
                    l.getBlock().setType(Material.BEDROCK);
                    pos.add(0, 1, 0);
                    l.getBlock().setType(Material.BEDROCK);
                    pos.add(0, 1, 0);
                    l.getBlock().setType(Material.BEDROCK);
                    pos.add(0, -2, 0);
                    break;
                default:
                    break;

            }
        }
    }
}

不幸的是,发生的情况是,一个基岩被放置在位置 l 上,而没有其他任何反应。 真是令人失望……有什么帮助吗?

最佳答案

您的问题在这里:

for(int i = -2; i <= 2; i++) {
        for(int j = -2; j <= 2; j++) {
            pos = l.clone().add(i, 0, j);
            Bukkit.broadcastMessage(Math.abs(i) + Math.abs(j) + ""); // for test
            int diff = Math.abs(i) + Math.abs(j);

处理主体变量情况的第一种方法是:i = -2 且 j = -2。执行此行后:

int diff = Math.abs(i) + Math.abs(j);

它们将是 i = -2 和 j = -2 但 diff = 4 因为 Math.abs()方法将两个变量的 -2 转换为 2,然后将它们相加得出 diff。因此,您的 switch-case语句将无法正常工作。顺便说一句,我建议您从头开始重新计算所有事情。

关于java - 在 Minecraft bukkit 插件中构建金字塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41302042/

相关文章:

postgresql - 函数类型错误

graphics - WebGL绘制透视图体积

java - 启动外部 JAR 文件需要什么,例如 Minecraft 启动器?

java - 我的世界启动器 : Cannot get main method need assistance

java - 获取 hibernate 中实体的最后一个ID

java - setMinimumSize() 不适用于 JButton

algorithm - 如何检查一个点是否在椭圆体内?

java - 我如何在 spigot api 中的命令上打印可点击的链接

java - Java 中的 DecimalFormat applyPattern 不会覆盖语言环境设置

java - 在 Android 上保存文件