コード例 #1
0
  public static void uninject(Player p) {
    try {
      Object craftOnline = ReflectionUtil.getBukkitClass("entity.CraftPlayer").cast(p);
      Object craftHandle =
          ReflectionUtil.invokeMethod(craftOnline.getClass(), craftOnline, "getHandle");
      Object playerCon =
          ReflectionUtil.getField(craftHandle.getClass(), "playerConnection").get(craftHandle);
      Object manager =
          ReflectionUtil.getField(playerCon.getClass(), "networkManager").get(playerCon);
      Channel channel =
          (Channel) ReflectionUtil.getField(manager.getClass(), "channel").get(manager);

      if (channel.pipeline().context("PacketListener") != null)
        channel.pipeline().remove("PacketListener");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }