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