我目前在使用此代码时遇到了一些问题:
public class ChatPlugin extends JavaPlugin implements Listener{
private static ChatPlugin instance;
private final static String CHANNEL = "chat";
private JedisPool jedisPool;
private ChatChannel chatChannel;
@Override
public void onEnable()
{
instance = this;
saveDefaultConfig();
this.jedisPool = new JedisPool(new JedisPoolConfig(), getConfig().getString("redis-host"), 6379, 0,getConfig().getString("redis-password"));
this.chatChannel = new ChatChannel();
this.jedisPool.getResource().subscribe(this.chatChannel, new String[]{"chat"});
Bukkit.getPluginManager().registerEvents(this, this);
getCommand("chat").setExecutor(this);
}
@Override
public void onDisable()
{
instance = null;
this.chatChannel.unsubscribe();
this.jedisPool.destroy();
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("chat"))
{
getJedis().publish(CHANNEL, args[0]);
sender.sendMessage(ChatColor.GREEN + "Sent!");
}
return true;
}
public Jedis getJedis(){
return jedisPool.getResource();
}
public static ChatPlugin getInstance() {
return instance;
}
public class ChatChannel extends JedisPubSub {
@Override
public void onMessage(String channel, String message) {
new BukkitRunnable(){
@Override
public void run() {
Bukkit.broadcastMessage(message);
}
}.runTask(ChatPlugin.getInstance());
}
}
}
这是我第一次使用redis' PUB / SUB功能,我真的不知道发生了什么。没有堆栈跟踪,只是,当插件启用时,它会冻结。是的,我知道这是因为我在主线程上执行它,但即使我运行它async(我有)它仍然无效。
希望有人可以帮忙! 感谢
答案 0 :(得分:0)
您没有向我们发送saveDefaultConfig方法,因此首先检查是否正确创建了插件配置。在检查你没有对Bukkit或任何逻辑错误做出任何错误之后,尝试谷歌任何例子或尝试在programcreek.com上找到一些例子(我在那里找到了一些jedis)。
如果你仍然不清楚:在你问这里之前,尝试做你应该做的事情。阅读Jedis的维基! https://github.com/xetorthio/jedis/wiki