Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么此方法不返回面积是否大于参数立方?_Java_Minecraft_Bukkit - Fatal编程技术网

Java 为什么此方法不返回面积是否大于参数立方?

Java 为什么此方法不返回面积是否大于参数立方?,java,minecraft,bukkit,Java,Minecraft,Bukkit,我正在开发一个Minecraft插件来保护一个区域。我有一个area类,它是在玩家选择3个区块后创建的,这个area类有一个名为tooBig的方法,用于检测面积是否大于block^3。问题是这个方法总是返回false b1、b2和b3是块对象。只有当区域的宽度、长度和高度同时大于i时,此函数才会返回true 也许你应该使用return bo1 | | bo2 | | bo3;因此,如果至少一个尺寸超过限制,该函数将返回true。仅当区域的宽度、长度和高度同时大于i时,该函数才会返回true 也许

我正在开发一个Minecraft插件来保护一个区域。我有一个area类,它是在玩家选择3个区块后创建的,这个area类有一个名为tooBig的方法,用于检测面积是否大于block^3。问题是这个方法总是返回false

b1、b2和b3是块对象。

只有当区域的宽度、长度和高度同时大于i时,此函数才会返回true

也许你应该使用return bo1 | | bo2 | | bo3;因此,如果至少一个尺寸超过限制,该函数将返回true。

仅当区域的宽度、长度和高度同时大于i时,该函数才会返回true


也许你应该使用return bo1 | | bo2 | | bo3;因此,如果至少有一个维度超出限制,函数将返回true。

您对变量的使用不一致

public boolean tooBig(int i) {
    boolean bo1, bo2, bo3;
    bo1 = Math.abs(b1.getX() - b2.getX()) > i;
    bo2 = Math.abs(b1.getZ() - b2.getZ()) > i;
    bo3 = Math.abs(b1.getY() - b3.getY()) > i;
    return bo1 && bo2 && bo3;
}
另见:


您对变量的使用不一致

public boolean tooBig(int i) {
    boolean bo1, bo2, bo3;
    bo1 = Math.abs(b1.getX() - b2.getX()) > i;
    bo2 = Math.abs(b1.getZ() - b2.getZ()) > i;
    bo3 = Math.abs(b1.getY() - b3.getY()) > i;
    return bo1 && bo2 && bo3;
}
另见:


答案中提到了为什么玩家应该选择3个方块,而2个方块就足够了?因为这可能会引起讨论,而不是完成问题/答案,所以我把它移到了评论中。答案中提到了更新,为什么玩家应该选择3个区块,而2个区块就足够了?由于这可能会引起讨论,而不是完成问题/答案,因此我将其移到了评论中。顺便说一句,限制该区域的体积是不安全的,因为玩家可以制作1x[max_volume]区域,该区域可用于剥夺大距离区域。@Heavy这是真的,但最初的问题包括规格,它用于检测面积是否大于i块^3。;因此,通过使用我为此创建的maxX、minX和类似变量,可以执行额外的检查。顺便说一句,限制区域的体积是不安全的,因为玩家可以创建1x[max_volume]区域,这可以用于大距离区域的私有化。@Heavy是这样的,但最初的问题包括规格,它用于检测面积是否大于i块^3。;因此,通过使用maxX、minX和我为此创建的类似变量,可以执行额外的检查。
Base (Length * Width) * Height
public boolean tooBig(int i) {
    int minX = Math.min(Math.min(b1.getBlockX(), b2.getBlockX()), b3.getBlockX());
    int maxX = Math.max(Math.max(b1.getBlockX(), b2.getBlockX()), b3.getBlockX());
    int minY = Math.min(Math.min(b1.getBlockY(), b2.getBlockY()), b3.getBlockY());
    int maxY = Math.max(Math.max(b1.getBlockY(), b2.getBlockY()), b3.getBlockY());
    int minZ = Math.min(Math.min(b1.getBlockZ(), b2.getBlockZ()), b3.getBlockZ());
    int maxZ = Math.max(Math.max(b1.getBlockZ(), b2.getBlockZ()), b3.getBlockZ());
    
    int area = (maxX - minX) * (maxY - minY) * (maxY - minY);
}
return area > Math.pow(i, 3);
Block.getBlockX()