白可乐
本帖最后由 白可乐 于 2022-9-9 01:01 编辑

RT

  1. @EventHandler
  2.     public void onPlayerInteract(PlayerInteractEvent event){
  3.         Block block = event.getClickedBlock();
  4.         BlockData blockData = block.getBlockData();
  5.         Material material = blockData.getMaterial();
  6.         Location location = event.getClickedBlock().getLocation();
  7.         location.getBlock().setType(Material.AIR);
  8.         location.getBlock().setType(material);
  9.         location.getBlock().setBlockData(blockData);
  10.     }
复制代码
设置以后,方块变了,但是方向不对
服务端: 1.16.5 catserver

自行解决:  就用这个,然后把自己的强迫症去掉就好了

‮tcejorPoiK
本帖最后由 ‮tcejorPoiK 于 2022-9-7 10:12 编辑

楼主你这个是为了实现什么,把方块用同材质的方块替换一遍..?
能否详细说明一下使用场景,光看给出的代码看不出什么问题

私聊补充:楼主是1.16.5 catserver,需要操作的对象是mod方块,后来的人可以参考一下,我是无能为力了

白可乐
‮tcejorPoiK 发表于 2022-9-7 08:12
楼主你这个是为了实现什么,把方块用同材质的方块替换一遍..?
能否详细说明一下使用场景,光看给出的代码看 ...

是的,把方块用同一个材质进行替换,然后,方向还是原来方块的方向,怎么弄?

782963325
使用过WorldEdit 方块朝向 可能是由子id控制的 反馈到代码里 应该是BlockData进行控制的 建议放置不同朝向方块 输出BlockData中的字段 进行观察 然后再通过设置不同的BlockData 查看是否可以改变玩家朝向 再对玩家朝向方块的方向 进行不同的BlockData替换 就可以做到了。

‮tcejorPoiK
白可乐 发表于 2022-9-7 09:49
是的,把方块用同一个材质进行替换,然后,方向还是原来方块的方向,怎么弄? ...

我这用完全相同的代码测试没有任何问题,paper1.19.2

不知道你实现这个功能的目的是什么,替换一遍方块不等于没做任何操作吗

782963325
782963325 发表于 2022-9-7 10:01
使用过WorldEdit 方块朝向 可能是由子id控制的 反馈到代码里 应该是BlockData进行控制的 建议放置不同朝向 ...

笔误 第二行 查看是否可以改变玩家朝向 应该是 改变方块朝向 233

nsju7
  1. Block block = event.getClickedBlock();
  2.          //这里clone一下试试
  3.         BlockData blockData = block.getBlockData().clone();

  4.         Material material = blockData.getMaterial();
  5.         Location location = event.getClickedBlock().getLocation();
  6.         location.getBlock().setType(Material.AIR);
  7.         location.getBlock().setType(material);
  8.         location.getBlock().setBlockData(blockData);
复制代码

SumCraft
本帖最后由 SumCraft 于 2022-9-7 10:12 编辑
  1. BlockFace getFace(Block block)
  2. Gets the face relation of this block compared to the given block.
  3. For example:


  4. Block current = world.getBlockAt(100, 100, 100);
  5. Block target = world.getBlockAt(100, 101, 100);

  6. current.getFace(target) == BlockFace.Up;


  7. If the given block is not connected to this block, null may be returned
  8. 参数:
  9. block - Block to compare against this block
  10. 返回:
  11. BlockFace of this block which has the requested block, or null
复制代码

编辑了,这个方法是错误的

cnYeqi
https://bukkit.windit.net/javado ... ta/Directional.html

白可乐

还是会改变方向

nsju7
  1. public void onPlayerInteract(PlayerInteractEvent event) {
  2.         Block block = event.getClickedBlock();
  3.         BlockData blockData = block.getBlockData().clone();
  4.         Material material = blockData.getMaterial();
  5.         Location location = event.getClickedBlock().getLocation();
  6.         location.getBlock().setType(Material.AIR);
  7.         location.getBlock().setType(material);
  8.         location.getBlock().setBlockData(blockData);
  9.         BlockData blockData1 = location.getBlock().getBlockData();
  10.         if (blockData1 instanceof Directional) {
  11.             Directional blockData11 = (Directional) blockData1;
  12.             blockData11.setFacing(BlockFace.UP);
  13.         }
  14.     }
复制代码


哪如果是这样 方块会不会朝上呢

白可乐
nsju7 发表于 2022-9-7 10:33
哪如果是这样 方块会不会朝上呢

没有UP 这个
然后还是会改变成 north

第一页 上一页 下一页 最后一页