Java 在Bukkit插件中从网页获取HTML字符串
我正在尝试为minecraft bukkit服务器创建一个插件。目标是读取html页面第一行的字符串。如果结果为真,它将执行一个命令 以下是我现在掌握的代码:Java 在Bukkit插件中从网页获取HTML字符串,java,html,http,minecraft,bukkit,Java,Html,Http,Minecraft,Bukkit,我正在尝试为minecraft bukkit服务器创建一个插件。目标是读取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.bukk
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
2012-11-02 16:18:30[严重]无效
org.bukkit.command.CommandException:在plugin first v1.0中执行命令“投票”时发生的未处理异常
位于org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
在org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180)上
位于org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:502)
位于net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:915)
位于net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:828)
位于net.minecraft.server.NetServerHandler.a(NetServerHandler.java:810)
位于net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
位于net.minecraft.server.NetworkManager.b(NetworkManager.java:282)
位于net.minecraft.server.NetServerHandler.d(NetServerHandler.java:111)
位于net.minecraft.server.ServerConnection.b(源文件:35)
位于net.minecraft.server.deficatedServerConnection.b(源文件:30)
位于net.minecraft.server.MinecraftServer.q(MinecraftServer.java:561)
位于net.minecraft.server.indivatedServer.q(indivatedServer.java:213)
位于net.minecraft.server.MinecraftServer.p(MinecraftServer.java:474)
位于net.minecraft.server.MinecraftServer.run(MinecraftServer.java:406)
位于net.minecraft.server.ThreadServerApplication.run(源文件:539)
原因:java.lang.NullPointerException
位于java.io.Reader。(未知源)
位于java.io.InputStreamReader。(未知源)
atme.storminmormon30.first.main.onCommand(main.java:43)
位于org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
... 还有15个
看起来错误在其他地方:
未处理的异常正在执行命令“投票”在您给出的代码片段中,我没有看到该命令。您应该将每个命令拆分为自己的类,并在plugin.yml中注册。我要做的是在
onEnable()方法中,设置如下内容:
getCommand(“command”).setExecutor(新CommandExecutor())代码>
这将把所有命令分割成它们自己的类,这样会更好,我建议这样做
代码的问题看起来像是第43行的类main
中的NPE(它在onEnable()
方法中)似乎是错误发生后您更改了代码,或者您没有上载整个文件,因为第43行是注释。。。。