如题,比如说,我悬挂物贴上去的朝向是东面,那么,我要如何获取到它东面指定范围内的方块集合呢
BlockFace#getDirection() 获取方块朝向向量。
Location#add(Vector vec) 将坐标加上指定向量。
然后套一层for来循环获取坐标对应的方块就行了
Location#add(Vector vec) 将坐标加上指定向量。
然后套一层for来循环获取坐标对应的方块就行了
tcejorPoiK 发表于 2022-6-10 20:49
BlockFace#getDirection() 获取方块朝向向量。
Location#add(Vector vec) 将坐标加上指定向量。
他这个add,是只增加朝向那个方向的坐标嘛
tcejorPoiK 发表于 2022-6-10 20:49
BlockFace#getDirection() 获取方块朝向向量。
Location#add(Vector vec) 将坐标加上指定向量。
为什么我获取完他这个输出的坐标是这样的,不是应该获取的是我悬挂物朝向前面的两格嘛
不知道啊.
GhostSkyV9 发表于 2022-6-10 22:13
为什么我获取完他这个输出的坐标是这样的,不是应该获取的是我悬挂物朝向前面的两格嘛
...
final Block block = event.getBlock();
final Vector vec = event#getBlockFace().getDirection();
block.getLocation().add(vec).getBlock(); 获取方块朝向前一格的方块
block.getLocation().add(vec.multiply(10)).getBlock(); 获取方块朝向前10格的方块
tcejorPoiK 发表于 2022-6-10 22:48
final Block block = event.getBlock();
final Vector vec = event#getBlockFace().getDirection();
这只是获取到单个的,如果要获取到往前10格内的所有方块呢
本帖最后由 tcejorPoiK 于 2022-6-11 14:02 编辑
外层套个for
var loc = block.getLocation();
var list = new ArrayList<>();
for (循环10次) {
list.add(loc.add(vec).getBlock());
}
GhostSkyV9 发表于 2022-6-10 23:22
这只是获取到单个的,如果要获取到往前10格内的所有方块呢
外层套个for
var loc = block.getLocation();
var list = new ArrayList<>();
for (循环10次) {
list.add(loc.add(vec).getBlock());
}
本帖最后由 GhostSkyV9 于 2022-6-11 19:03 编辑
这循环不对吧,循环十次,这获取到的都是同一个方块吧,我的写法是这样的,不知道逻辑上对不对
tcejorPoiK 发表于 2022-6-11 14:00
外层套个for
var loc = block.getLocation();
这循环不对吧,循环十次,这获取到的都是同一个方块吧,我的写法是这样的,不知道逻辑上对不对
GhostSkyV9 发表于 2022-6-11 19:00
这循环不对吧,循环十次,这获取到的都是同一个方块吧,我的写法是这样的,不知道逻辑上对不对 ...
没学过kt,但是粗略的看你写的应该是对的,可以去试试。
Location#add(Vector vec) 这个方法改变的是此Location自身,所以我的那个for是没问题的。
tcejorPoiK 发表于 2022-6-11 19:11
没学过kt,但是粗略的看你写的应该是对的,可以去试试。
Location#add(Vector vec) 这个方法改变的是此L ...
不知道是不是我对这个add方法有误解
不clone的话,它是不是在原有的基础上add,就比如
(0,0,0),我add一次,(10,0,10),再add一次(20,0,20)
这样叠加下去是不是就不止十格了
GhostSkyV9 发表于 2022-6-13 13:01
不知道是不是我对这个add方法有误解
不clone的话,它是不是在原有的基础上add,就比如
(0,0,0),我add一次 ...
是的,add就是改变自身,Location的绝大部分方法都是如此,所以才有clone()方法来使自身不改变。
tcejorPoiK 发表于 2022-6-13 13:08
是的,add就是改变自身,Location的绝大部分方法都是如此,所以才有clone()方法来使自身不改变。 ...
那还有什么更好的解决办法吗
GhostSkyV9 发表于 2022-6-14 13:29
那还有什么更好的解决办法吗
生成射线?https://hub.spigotmc.org/javadoc ... RayTraceResult.html