是控控吗
自己在开发一个插件,其中有一个功能是屏蔽 设定的玩家 输入的指令,后台会有屏蔽的记录。但我发现在登录前 指令系统似乎直接被authme接管了,后台也收不到屏蔽记录,却能收到玩家正常登录指令/login(如果被屏蔽了收不到)。
我的插件用的是PlayerCommandPreprocessEvent 这个事件,不知道怎样才能优先于authme或者与他同一级




SumCraft
这是authme的监听,在你的监听代码上加上ignoreCancelled = true 应该就能监听到了
  1.     @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
  2.     public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
  3.         String cmd = event.getMessage().split(" ")[0].toLowerCase();
  4.         if (settings.getProperty(HooksSettings.USE_ESSENTIALS_MOTD) && "/motd".equals(cmd)) {
  5.             return;
  6.         }
  7.         if (settings.getProperty(RestrictionSettings.ALLOW_COMMANDS).contains(cmd)) {
  8.             return;
  9.         }
  10.         final Player player = event.getPlayer();
  11.         if (!quickCommandsProtectionManager.isAllowed(player.getName())) {
  12.             event.setCancelled(true);
  13.             player.kickPlayer(messages.retrieveSingle(player, MessageKey.QUICK_COMMAND_PROTECTION_KICK));
  14.             return;
  15.         }
  16.         if (listenerService.shouldCancelEvent(player)) {
  17.             event.setCancelled(true);
  18.             messages.send(player, MessageKey.DENIED_COMMAND);
  19.         }
  20.     }
复制代码

是控控吗
咸鱼气功王 发表于 2021-4-12 09:37
这是authme的监听,在你的监听代码上加上ignoreCancelled = true 应该就能监听到了
...

感谢!这就去试试

是控控吗
本帖最后由 862685950 于 2021-4-12 13:11 编辑
咸鱼气功王 发表于 2021-4-12 09:37
这是authme的监听,在你的监听代码上加上ignoreCancelled = true 应该就能监听到了
...


刚开始的几秒能正常拦截,后面的还是被authme接管了
我都通过各种手段吧authme的handler改成这样了,还是不行


自己的是


SumCraft
把你事件的优先级改成 MONITOR 看看,不行的话可以试试protocollib 听包

是控控吗
咸鱼气功王 发表于 2021-4-13 08:52
把你事件的优先级改成 MONITOR 看看,不行的话可以试试protocollib 听包

解决了
我插件是针对op的,然后authme在一定时间后会取消玩家的op导致我的判断条件没达到,才没拦截的qwq

第一页 上一页 下一页 最后一页