1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Перехват чужих команд

Тема в разделе "Разработка плагинов для новичков", создана пользователем misterzym, 2 дек 2013.

Статус темы:
Закрыта.
  1. Автор темы
    misterzym

    misterzym Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    Misterzym
    Собственно есть команда от comandbook /sethome
    делаю ее перехват
    Код:
    @EventHandler(priority=EventPriority.HIGH)
      public void onCom(PlayerCommandPreprocessEvent e)
      {
          String com=e.getMessage(); Player player=e.getPlayer();
          if(substring(com, "sethome") !=-1){
              if (!conner()){
                  e.getPlayer().sendMessage("Запрещено ставить точку дома!");
                  e.setCancelled(true);
              }
          }
      }
    но увы, сыпит ошибкой, и не отменяет действие, что не так в коде?
     
    zuma2 нравится это.
  2. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    misterzym, можно было ещё ошибку привести. А то непонятно в каком месте ошибка. Может на самом деле в методе conner()?
     
  3. gamelax

    gamelax Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    fromgate, а я ставлю на ошибку в методе substring (строкой выше).
    Код:
    if(substring(com, "sethome") !=-1){
    
    Не понимаю, зачем создавать свой метод, если у объекта String уже есть подходящий для Вас indexOf(String str).
     
  4. Автор темы
    misterzym

    misterzym Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    Misterzym
    В самом деле,. ошибку я просто забыл прикрепить, conner() по апи worldguard получает информацию, отдельно, в другом примере, тот же код апи работает безукоризненно
    Код:
    2013-12-02 22:15:50 [SEVERE] Could not pass event PlayerCommandPreprocessEvent to fixer v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:363)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
        at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1361)
        at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1240)
        at net.minecraft.network.NetServerHandler.func_72481_a(NetServerHandler.java:1166)
        at net.minecraft.network.packet.Packet3Chat.func_73279_a(Packet3Chat.java:60)
        at net.minecraft.network.TcpConnection.func_74428_b(TcpConnection.java:442)
        at net.minecraft.network.NetServerHandler.func_72570_d(NetServerHandler.java:213)
        at net.minecraft.network.NetworkListenThread.func_71747_b(NetworkListenThread.java:53)
        at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(SourceFile:30)
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:859)
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:728)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:612)
        at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
    Caused by: java.lang.NullPointerException
        at ru.dmitriymx.bukkit.tutorial.DmxFirstPlugin.onCom(DmxFirstPlugin.java:95)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361)
        ... 16 more
    На самом деле substring занимается не только сверкой, но и записью в лог в случае совпадения + записью в переменные других классов, но суть не в этом, функция прекрасно работает с сверкой полей с табличек например, затык только тут
     
    slavik123123123 нравится это.
  5. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Хер поймёшь что ты пытаешься сделать, выкладывай все сырцы.

    И скажи что ты пытаешься реализовать.
     
  6. Автор темы
    misterzym

    misterzym Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    Misterzym
    ок, выкинем все ненужные эвенты, функции и прочее и сведем задачу к конкретной и сыпящей идентичную ошибку, получается на выходе:

    Код:
     public static final Logger _log = Logger.getLogger("Minecraft");
      public WorldGuardPlugin wg;
    
      @Override
      public void onEnable() {
          _log.info("[FIXER] Active");
          Bukkit.getPluginManager().registerEvents(this, this);     
      }
    
      @EventHandler(priority=EventPriority.HIGH)
      public void onCom(PlayerCommandPreprocessEvent e)
      {
          String com=e.getMessage(); Player player=e.getPlayer();
          if(com.indexOf("sethome")!=-1){
              if (!wg.canBuild(player,player.getLocation().getBlock().getRelative(0, -1, 0))){
                  e.getPlayer().sendMessage("Запрещено ставить точку дома!");
                  e.setCancelled(true);
              }
          }
      }
     
  7. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ну вижу нигде инициализацию переменной wg.
     
  8. Автор темы
    misterzym

    misterzym Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    Misterzym
    Ступил так ступил, забыл закопировать инициализацию апи, спасибо всем за помощь в такой позорной ошибке Х_Х
     
Статус темы:
Закрыта.

Поделиться этой страницей