我想把玩家点击的块的位置保存到两个变量中。
我尝试在使用该项目后触发一个事件,但只有当我在空中单击时才会生成该事件。
如果(p.getiteminhand().gettype()==Material.blaze_rod){System.out.println(“test”);}
如果((p.getiteminhand().gettype()==Material.blaze_rod)&&(event.getaction().equals(action.right_click_block)){System.out.println(“test”);}
总之,我想把两个指示块的位置写到变量中。一个是当右键单击给定项时,另一个是当左键单击相同项时。
我还没有搜索,但我会马上问,我如何检查给定坐标处的块是否存在(它是空的,是空的),以及我如何设置或替换给定坐标处的选定块?
您可以通过PlayerInteractEvent
、操作
、材料
和位置
来实现这一点。以下是一个例子:
import org.bukkit.Location;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.block.Action;
import org.bukkit.block.Block;
import org.bukkit.Material;
public class YourListener {
private Location firstLocation;
private Location secondLocation;
@EventHandler
public void onPlayerInteractEvent(PlayerInteractEvent event) {
// Only process when the player has a wooden axe in the hand.
if (event.getMaterial() == Material.WOODEN_AXE) {
Action action = event.getAction();
Block clickedBlock = event.getClickedBlock();
if (clickedBlock == null) return;
if (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK) {
// Do one thing (left click)
Material type = clickedBlock.getType(); // Block material (Check if it's Material.AIR or another type)
firstLocation = clickedBlock.getLocation(); // Save the location
} else if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK){
// Do another thing (right click)
Material type = clickedBlock.getType(); // Block material (Check if it's Material.AIR or another type)
secondLocation = clickedBlock.getLocation(); // Save location
// Let's say you now want to replace the block material to a diamond block:
clickedBlock.setType(Material.DIAMOND_BLOCK);
}
}
}
}
PlayerInteractEvent
具有getMaterial()
方法,该方法返回:
返回此事件表示的项的材料
(玩家手中物品的材质)
然后,getAction()
方法返回下列枚举项之一
action.left_click_air
:在air上左键单击操作.left_click_block
:左键单击block操作。right_click_air
:右键单击air操作。right_click_block
:右键单击blockgetClickedBlock()
方法返回播放器单击的块。然后可以使用gettype()
和settype(Material)
方法来获取和设置该块的材料。
最后,block
中的getlocation()
方法将返回该块的位置。
请务必阅读有关此类、枚举和接口的所有文档:
我正在为一个服务器做一个插件,我是开发者,我正在开发一个插件!我想通过执行boss give lvl命令来生成boss鸡蛋
我想制作一个插件,允许玩家自定义他们的盔甲模型和纹理。我希望服务器上的其他玩家能够看到这些自定义设置。 由于我从未在插件中做过纹理覆盖,我不知道这是否可行,我也无法在网上找到任何相关的东西。我知道你可以让积木看起来和其他积木一样,但是盔甲不行。 我必须给在线玩家发送一个数据包,还是有其他方法可以做到这一点?如果这是可能的,是否有一个地方记录了如何做到这一点?
我试图使一个混合modeauth(我自己的版本的身份验证插件),但有一个问题-在与明星的行,我得到以下错误: 这是我的代码:
欣然回答: 提前致谢
我正在尝试学习如何编写minecraft插件,但是我在开始时遇到了一点问题,当我尝试运行导出的插件时,我得到一个主类未找到错误。我已经尝试移动plugin.yml文件,检查所有部分都导出和重命名类等无济于事。也阅读了现有的问题。任何帮助都将不胜感激。 主要: helloCommand: 插件。yml: 控制台错误: Pic of Package Explorer编辑前一个问题,更正建议但错误仍然存