2016-07-19 81 views
-3

我目前遇到一些麻烦,此代码:需要一些PUB/SUB Jedis帮助Bukkit

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功能的工作,和我不真的不知道发生了什么。没有堆栈跟踪,只是当插件启用时,它会冻结。是的,我知道这是因为我在主线程上执行它,但即使我运行它异步(我有)它仍然不起作用。

希望有人能帮助! 谢谢

+1

你应该对你的标题更加具体,而不是说你需要一些已经与帖子关联的标签列表。此外,你应该把你的代码放在这里;不是它的链接。 – ChiefTwoPencils

+0

你知道我每次使用这个论坛时,总是有人在说些什么。你能帮我吗?如果你至少要纠正我给我一些关于我的代码的建议。而且,这个班级非常大,请原谅我不知道该怎么做。至于标题,你想要我放什么?我制作我的标题,以便其他人可以在需要帮助时找到此请求。你会喜欢它'Redis Jedis PUB/SUB不工作没有错误bukkit'吗?谁会去搜索接近那个的东西?相反,如果他们搜索“PUB/SUB Jedis Bukkit”,它会出现。 @ChiefTwoPencils – stargate

+0

要添加,@ChiefTwoPencils。如果你只是批评最简单的东西,我不知道你为什么会问这个问题?请向我解释这些意见将如何帮助我实现我的目标?顺便说一下,我编辑了代码以更好地满足您的需求,因为您知道,您是需要帮助的人!我可能违反评论规则两次,但这个文本框有一个字符限制!哇,我只是双贴,举报我! – stargate

回答

0

您没有发送给我们您的saveDefaultConfig方法,所以首先检查插件配置是否正确创建。在检查完Bukkit或任何逻辑错误之后,你没有犯任何错误,试着谷歌的任何例子或尝试找到programcreek.com上的例子(我发现一些jedis那里)。

如果你仍然不知道:在你问这里之前试着做你应该做的事情。阅读杰迪斯的维基! https://github.com/xetorthio/jedis/wiki