Java 使用项目| | Minecraft插件插口Bukkit后标记位置
我想把玩家点击的块的位置保存为两个变量 我尝试在使用该项目后触发一个事件,但该事件仅在我在空中单击时生成 if(p.getItemInHand().getType()==Material.BLAZE_ROD){ 系统输出打印(“测试”); } 我也尝试过这种设计,但代码仍然不能正常工作: if((p.getItemInHand().getType()==Material.BLAZE_ROD)和&(event.getAction().equals(Action.RIGHT_CLICK_BLOCK)){ 系统输出打印(“测试”); } 总之,我想将两个指示块的位置写入变量。一个在右键单击给定项时,另一个在左键单击相同项时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)
我还没有搜索,但我会马上问,如何检查给定坐标处是否存在块(是否为空,是否为空)如何在给定坐标处设置或替换所选的块?您可以通过
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()
方法将返回该块的位置
确保阅读有关此类、枚举和接口的所有文档: