伏天咕咕咕

怎么样写能取消玩家扔鸡蛋,我试过 event.setCancelled(true); 然后报错,不行啊

美味的曲奇
Called when a player throws an egg and it might hatch
也就是说这应该是扔出鸡蛋后的事件
考虑监听物品使用事件PlayerInteractEvent并进行取消

青蛙的名单
如果想消耗但不产生蛋就getEgg然后移除掉蛋

伏天咕咕咕
青蛙的名单 发表于 2021-12-3 16:48
如果想消耗但不产生蛋就getEgg然后移除掉蛋

那如果是不消耗也不产生蛋呢

伏天咕咕咕
美味的曲奇 发表于 2021-12-3 16:47
Called when a player throws an egg and it might hatch
也就是说这应该是扔出鸡蛋后的事件
考虑监听物品 ...

PlayerInteractEvent,这个事件怎么用...我怎么在网上没找到

Leosouthey
本帖最后由 Taboolib 于 2021-12-3 19:37 编辑

应该差不多是这样(未经测试)
  1. //Kotlin + TabooLib代码:
  2.    @SubscribeEvent
  3.     fun e(e:PlayerInteractEvent){
  4.         if (e.item!!.type == Material.EGG){
  5.             e.isCancelled = true
  6.         }
  7.     }
复制代码



名副其实
可以试着监测是否同时满足 手上持有鸡蛋+是否右键 如果是那么取消后者事件的执行

美味的曲奇
本帖最后由 美味的曲奇 于 2021-12-4 08:12 编辑
伏天咕咕咕 发表于 2021-12-3 19:14
PlayerInteractEvent,这个事件怎么用...我怎么在网上没找到

*随手摸的,未经实际运行/**
* @author cookie
*/
public class Event implements Listener {
    @EventHandler
    public void onPlayerThrowEgg(PlayerInteractEvent event){
        if(event.getAction().isRightClick()&&event.getMaterial().equals(Material.EGG)){
            event.setCancelled(true);
        }
    }
}
试试这样呢


ZX夏夜之风
美味的曲奇 发表于 2021-12-4 08:11
*随手摸的,未经实际运行/**
* @author cookie
*/

EventHandler的优先级应该是LOWEST,不然获取不到这个事件(因为nms内部会自动取消右键空气事件)