- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个系统,用于将我的自定义附魔书拖放到例如一把剑上。准确地说,我为您举了一个例子:
你有一本附魔书,你应该把他拖放到你的钻石剑上,为你的钻石剑设置魔咒。而且,当你这样做时,附魔书就会被移除,并且附魔的名称会显示在你的剑的传说中。
你有做这个的想法吗?提前致谢。
我在 Spigot 1.12.2 上进行了编程,并且我的类(class)被授予。
这就是我现在的代码,但他不起作用(消息不显示):
@EventHandler
public void onClick(InventoryClickEvent e) {
if(e.getWhoClicked() instanceof Player) {
Player p = (Player) e.getWhoClicked();
if(e.getAction().equals(InventoryAction.SWAP_WITH_CURSOR)) {
if(e.getCursor() == null || e.getCurrentItem() == null) return;
if(!e.getCursor().hasItemMeta()) return;
ItemMeta cursorM = e.getCursor().getItemMeta();
if(cursorM.getDisplayName().equalsIgnoreCase("§atest")) {
Bukkit.broadcastMessage("test OK");
}
}
}
}
我没有错误或其他错误,我的日志很干净。
最佳答案
首先,InventoryAction.SWAP_WITH_CURSOR
仅在“单击的项目和光标交换[...]”时触发。请参阅https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryAction.html因此,我会尝试使用 InventoryAction
的 PLACE_ALL
、PLACE_ONE
和 PLACE_SOME
或类似内容。
调试提示:如果未显示调试消息,请尝试在实际调试消息之前放置调试消息,其中包含查询结果,用于触发调试消息。在您的情况下,您可以将调试消息 Bukkit.broadcastMessage("InventoryAction: "+ e.getAction().toString());
放在查询 if(e.getAction() 之前.equals(InventoryAction.SWAP_WITH_CURSOR)) {
。以及第一个 return; 之前的调试消息
等等...Bukkit.broadcastMessage("isCancelled:"+ (e.getCursor() == null || e.getCurrentItem() == null));
这样您就可以确定您的事件卡在哪里!
关于java - 如何将一个项目拖放到另一个项目上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57257474/
我是一名优秀的程序员,十分优秀!