Java 使用项目| | Minecraft插件插口Bukkit后标记位置

Java 使用项目| | Minecraft插件插口Bukkit后标记位置,java,plugins,minecraft,bukkit,Java,Plugins,Minecraft,Bukkit,我想把玩家点击的块的位置保存为两个变量 我尝试在使用该项目后触发一个事件,但该事件仅在我在空中单击时生成 if(p.getItemInHand().getType()==Material.BLAZE_ROD){ 系统输出打印(“测试”); } 我也尝试过这种设计,但代码仍然不能正常工作: if((p.getItemInHand().getType()==Material.BLAZE_ROD)和&(event.getAction().equals(Action.RIGHT_CLICK_BLOCK)

我想把玩家点击的块的位置保存为两个变量

我尝试在使用该项目后触发一个事件,但该事件仅在我在空中单击时生成

if(p.getItemInHand().getType()==Material.BLAZE_ROD){ 系统输出打印(“测试”); }

我也尝试过这种设计,但代码仍然不能正常工作:

if((p.getItemInHand().getType()==Material.BLAZE_ROD)和&(event.getAction().equals(Action.RIGHT_CLICK_BLOCK)){ 系统输出打印(“测试”); }

总之,我想将两个指示块的位置写入变量。一个在右键单击给定项时,另一个在左键单击相同项时


我还没有搜索,但我会马上问,如何检查给定坐标处是否存在块(是否为空,是否为空)如何在给定坐标处设置或替换所选的块?

您可以通过
PlayerInteractEvent
Action
Material
Location
来实现这一点。示例如下:

import org.bukkit.Location;
导入org.bukkit.event.EventHandler;
导入org.bukkit.event.player.PlayerInteractEvent;
导入org.bukkit.event.block.Action;
导入org.bukkit.block.block;
导入org.bukkit.Material;
公共类YourListener{
私人位置优先位置;
私人场所;
@事件处理程序
PlayerInteractEvent上的公共无效(PlayerInteractEvent事件){
//只有当玩家手中有一把木斧时,才能进行此过程。
if(event.getMaterial()==Material.woody_){
Action Action=event.getAction();
Block clickedBlock=event.getClickedBlock();
if(clickedBlock==null)返回;
if(action==action.LEFT_CLICK_AIR | | action==action.LEFT_CLICK_BLOCK){
//做一件事(左键单击)
材质类型=clickedBlock.getType();//块材质(检查是Material.AIR还是其他类型)
firstLocation=clickedBlock.getLocation();//保存位置
}else if(action==action.RIGHT_CLICK_AIR | | action==action.RIGHT_CLICK_BLOCK){
//做另一件事(右键单击)
材质类型=clickedBlock.getType();//块材质(检查是Material.AIR还是其他类型)
secondLocation=clickedBlock.getLocation();//保存位置
//假设您现在要将块材质替换为菱形块:
单击块。设置类型(材质。菱形块);
}
}
}
}
PlayerInteractEvent
具有方法
getMaterial()
,该方法返回:

返回此事件表示的项的材质

(玩家手中物品的材质)

然后
getAction()
方法返回以下枚举项之一

  • 操作。左键单击空气
    :左键单击空气
  • 操作。左键单击块
    :左键单击块
  • 操作。右键单击空气
    :右键单击空气
  • 操作。右键单击块
    :右键单击块
getClickedBlock()
方法返回播放器已单击的块。然后可以使用方法
getType()
setType(Material)
获取和设置该块的材质

最后,来自
Block
getLocation()
方法将返回该块的位置

确保阅读有关此类、枚举和接口的所有文档: