本帖最后由 Arobcher 于 2017-3-27 21:25 编辑 
如题,我想写一个禁止铁砧修复一些物品的插件,但是有一个bug无法解决,导致玩家依然可以用 数字键盘(123456789 之内的)来直接移动放置到铁砧修复物品内.
代码复制代码
这里拿 钻石镐为列子,一些基本的点击事件(左键 右键 Shift点击 之内的)都可以禁止,但是唯一的就是 数字键盘无法禁止.
用 getClick() 判断是否是 数字键盘 也不行! 求解决方法 谢谢!
如题,我想写一个禁止铁砧修复一些物品的插件,但是有一个bug无法解决,导致玩家依然可以用 数字键盘(123456789 之内的)来直接移动放置到铁砧修复物品内.
代码
-         @EventHandler
 
-         public void onClick(InventoryClickEvent e){
 
-                 ItemStack stack = new ItemStack(Material.DIAMOND_PICKAXE);
 
-                 InventoryType type = e.getInventory().getType();
 
-                 if (type == InventoryType.ANVIL) {
 
-                         if (e.getCurrentItem().isSimilar(stack)) {
 
-                                 if (e.getClick().isKeyboardClick() || e.getClick() == ClickType.NUMBER_KEY) {
 
-                                         e.setCancelled(true);
 
-                                 }
 
-                                 e.setCancelled(true);
 
-                         }
 
-                 }
 
- }
这里拿 钻石镐为列子,一些基本的点击事件(左键 右键 Shift点击 之内的)都可以禁止,但是唯一的就是 数字键盘无法禁止.
用 getClick() 判断是否是 数字键盘 也不行! 求解决方法 谢谢!
嘛...其实呢有个事件是可以预览的
PrepareAnvilEvent.getResult() //返回铁砧修复东西后得到的ItemStack
PrepareAnvilEvent.getInventory() //返回这个铁砧的Inventory,是个叫AnvilInventory的类好像是继承还是实现了Inventory类(还是接口)
相关网址: https://hub.spigotmc.org/javadoc ... pareAnvilEvent.html
PrepareAnvilEvent.getResult() //返回铁砧修复东西后得到的ItemStack
PrepareAnvilEvent.getInventory() //返回这个铁砧的Inventory,是个叫AnvilInventory的类好像是继承还是实现了Inventory类(还是接口)
相关网址: https://hub.spigotmc.org/javadoc ... pareAnvilEvent.html
602723113 发表于 2017-3-26 17:56
嘛...其实呢有个事件是可以预览的
PrepareAnvilEvent.getResult() //返回铁砧修复东西后得到的ItemStack
我没有找到这个 Event 要换什么版本的服务端?
监听InventoryClickEvent事件
通过e.getInventory().getType() == InventoryType.ANVIL判断是不是铁砧
通过InventoryAction.HOTBAR_MOVE_AND_READD.equals(e.getAction())判断是不是用数字键把快捷栏物品弄上去,是的话取消事件即可(e.setCancelled(true))
通过e.getInventory().getType() == InventoryType.ANVIL判断是不是铁砧
通过InventoryAction.HOTBAR_MOVE_AND_READD.equals(e.getAction())判断是不是用数字键把快捷栏物品弄上去,是的话取消事件即可(e.setCancelled(true))
问题已解决!!!请勿再回复