当前位置: 首页 > 知识库问答 >
问题:

Minecraft Bukkit插件抛出语法错误

包翔
2023-03-14

我试图使一个混合modeauth(我自己的版本的身份验证插件),但有一个问题-在与明星的行,我得到以下错误:

Syntax error on token "(", ; expected
Syntax error on token ")", ; expected
void is an invalid type for the variable onPlayerJoin

这是我的代码:

public class MixedPlugin extends JavaPlugin implements Listener{
    @Override
    public void onEnable(){
        getLogger().info("Mixed Mode: ON");
        getCommand("mm").setExecutor(new MixedCommand());
        
        @EventHandler
        **public void onPlayerJoin(PlayerJoinEvent event) {**
            Player player = event.getPlayer();
            String name = player.getName();
            boolean isGood = getURL("http://minecraft.net/haspaid.jsp?user=deadmau5" + name).equals("true");
            if (isGood) {
              player.sendMessage("Welcome back to server!");
            }
            else {
              List<String> ex = getConfig().getStringList("allow");
              if (((MemorySection)ex).getStringList("allow").contains(player.getName())) {
                player.sendMessage("Welcome back to server!");
                player.sendMessage("You are a few person that are using cracked minecraft and allowed to join this premium server!");
              } else {
                player.kickPlayer("Failed to login: User not premium");
              }
            }
        }
    }
    public String getURL(String url){
         Logger log = Logger.getLogger("Minecraft");
        String inputLine = "";
        try{
          URL mcheck = new URL(url);
          URLConnection mcheckc = mcheck.openConnection();
          mcheckc.setReadTimeout(1500);
          BufferedReader in = new BufferedReader(new InputStreamReader(mcheckc.getInputStream()));
          inputLine = in.readLine();
          in.close();
          return inputLine;
        } catch(Exception e){
          log.warning("Error retrieving "+url+": "+e.getMessage());
        }
        return "ERROR";
      }
    @Override
    public void onDisable(){
        getLogger().info("You have disable Mixed Mode");
    }
}

共有2个答案

慕光赫
2023-03-14

此代码没有工作权限,因为您把 onPlayerJoin 方法放在 onEnable() 方法中。相反,请使用:

@Override
public void onEnable(){
    getLogger().info("Mixed Mode: ON");
    getCommand("mm").setExecutor(new MixedCommand());        
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    String name = player.getName();
    boolean isGood = getURL("http://minecraft.net/haspaid.jsp?user=deadmau5" + name).equals("true");
    if (isGood) {
      player.sendMessage("Welcome back to server!");
    }
    else {
      List<String> ex = getConfig().getStringList("allow");
      if (((MemorySection)ex).getStringList("allow").contains(player.getName())) {
        player.sendMessage("Welcome back to server!");
        player.sendMessage("You are a few person that are using cracked minecraft and allowed to join this premium server!");
      } else {
        player.kickPlayer("Failed to login: User not premium");
      }
    }
}

希望这有所帮助!

益智明
2023-03-14

这不是有效的代码。Java不允许像你目前所做的那样嵌套函数(也就是不要把 onPlayer加入到 onEnable 方法里面。

因此,将<code>onPlayerJoin</code>方法放在<code>on Enable</code>之后,而不是放在里面。

例子:

@Override
public void onEnable(){
    getLogger().info("Mixed Mode: ON");
    getCommand("mm").setExecutor(new MixedCommand());
}

@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    String name = player.getName();
    boolean isGood = getURL("http://minecraft.net/haspaid.jsp?user=deadmau5" + name).equals("true");
    if (isGood) {
      player.sendMessage("Welcome back to server!");
    }
    else {
      List<String> ex = getConfig().getStringList("allow");
      if (((MemorySection)ex).getStringList("allow").contains(player.getName())) {
        player.sendMessage("Welcome back to server!");
        player.sendMessage("You are a few person that are using cracked minecraft and allowed to join this premium server!");
      } else {
        player.kickPlayer("Failed to login: User not premium");
      }
    }
}
 类似资料:
  • 问题内容: 下面是用户单击“ 应用余额” 时的代码 。 这适用于第一部分,用户的余额更新很好,但是当我尝试执行第二条语句时,出现SQL语法错误。是什么原因引起的? 下面是运行此命令时得到的堆栈跟踪。 问题答案: 您的第二个查询缺少子句中的右括号。 代替直接在查询中附加参数,请使用参数化查询。 这样看起来会更干净,更容易编写。最重要的是,它将使您免受SQL Injection 攻击。 这是用于参数化

  • 出于某种原因,这段代码给了我一个无法捕捉的异常错误。catch块似乎没有捕捉到错误。try catch块的作用范围是否如此,以至于我不能在嵌套函数中抛出一个错误,然后期望它被一个作用范围更高的catch语句捕获?我正在使用的应用程序中的一些敏感数据已经被删除,但它预期leadInfo[ 0 / 1]将是一个32个字符的字母数字字符串,我从URL参数中提取。 这里的根本问题是我的AJAX调用从API

  • 我使用OAuth对我的应用程序进行了身份验证,并使用日历API对其进行了测试。一切正常。我还为事件API使用了“快速添加”方法,效果很好。但是当我尝试使用以下代码插入时 我得到以下错误: 致命错误:未捕获异常“apiServiceException”,消息为“调用POST时出错 https://www.googleapis.com/calendar/v3/calendars/myemail@gma

  • 尝试使用此查询 #1064-您的SQL语法有错误; 表和几乎完全相同-有相同的列。 请求中有什么错误?

  • 因此,我使用服务器(google-app-engine)在客户端应用程序上进行身份验证。当我使用JavaFX、Webview或HttpsURLConnection时,一切都很好,它们连接起来了,但是当我使用HttpClient时,它会抛出以下错误 javax.net.ssl.sslpeerunverifiedexception:peer未在sun.security.ssl.sslsessionim

  • 这是我的疑问- 我在执行时遇到这个错误 错误:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得使用“alter TABLE tmp drop category_id”附近的正确语法;在第2行插入类别SELECT 0'错误号:1064 但是当我直接在数据库中运行查询时,我不会得到任何错误。请帮帮我!