2012-11-02 21 views
2

我正在尝试为minecraft bukkit服务器创建一个插件。目标是读取html页面第一行的字符串。如果结果为True,它将执行一个命令。从Bukkit Plugin的网页获取HTML字符串

下面是代码,我现在所拥有的:

import java.net.URLConnection; 
import java.util.Scanner; 
import java.util.logging.Logger; 

import org.bukkit.ChatColor; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.plugin.java.JavaPlugin; 

public class main extends JavaPlugin{ 
public final Logger logger = Logger.getLogger("Minecraft"); 

public void onEnable(){ 
    logger.info("[First] Has Been Enabled."); 
} 

public void onDisable(){ 
    logger.info("[First] Has Been Disabled."); 
} 

public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) { 
    Player player = (Player) sender; 
    if(commandLabel.equalsIgnoreCase("hello")){ 
     player.sendMessage(ChatColor.GOLD + "Hello"); 
    } 
    else if(commandLabel.equalsIgnoreCase("world")){ 
     player.sendMessage(ChatColor.GOLD + "World"); 
    } 
    else if(commandLabel.equalsIgnoreCase("coolman")){ 
     player.setPlayerListName("coolman"); 
    } 
    else if(commandLabel.equalsIgnoreCase("vote")){ 
     String sourceLine = null; 

     // The URL address of the page to open. 
     URL address = new URL("http://www.koolflashgames.com/test.php"); 

     // Open the address and create a BufferedReader with the source code. 
     InputStreamReader pageInput = new InputStreamReader(address.openStream()); 
     BufferedReader source = new BufferedReader(pageInput); 

     // Append each new HTML line into one string. Add a tab character. 
     try { 
      sourceLine = source.readLine(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     if(sourceLine == "False"){ 
      player.sendMessage("Thanks for voting!"); 
     } 

    } 
    return false; 

} 

}

创建日志中出现以下错误:

2012-11-02 16:18:30 [SEVERE] null 
org.bukkit.command.CommandException: Unhandled exception executing command 'vote' in  plugin first v1.0 
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) 
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) 
at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:502) 
at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:915) 
at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:828) 
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:810) 
at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44) 
at net.minecraft.server.NetworkManager.b(NetworkManager.java:282) 
at net.minecraft.server.NetServerHandler.d(NetServerHandler.java:111) 
at net.minecraft.server.ServerConnection.b(SourceFile:35) 
at net.minecraft.server.DedicatedServerConnection.b(SourceFile:30) 
at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:561) 
at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:213) 
at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:474) 
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:406) 
at net.minecraft.server.ThreadServerApplication.run(SourceFile:539) 
Caused by: java.lang.NullPointerException 
at java.io.Reader.<init>(Unknown Source) 
at java.io.InputStreamReader.<init>(Unknown Source) 
at me.storminmormon30.first.main.onCommand(main.java:43) 
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) 
... 15 more 
+0

看样子你要么改变了代码,因为这个错误,或者你没有上传整个文件,因为第43行是一条评论.... – TheJavaCoder16

回答

2

貌似错误是在别处: 未处理的异常执行命令'投票'
我没有看到该命令的片断,你给

+0

我已经发布了更多的代码。 – arennaker

0

你应该每个命令拆分到它自己的类,并在plugin.yml注册代码,我会做什么,是在onEnable()方法,设置是这样的:

getCommand("command").setExecutor(new CommandExecutor());

这将分离出来的所有命令到自己的类,这将更好地工作,我会建议它。

与您的代码的问题看起来像一个NPE在main类上线43(其在onEnable()法)