コード例 #1
0
 /**
  * Loads a channel from the specified name.
  *
  * @param name to load
  */
 public Channel load(String name) {
   Channel channel = new Channel(plugin, name);
   String path = "channels." + name;
   // Don't write everything back to disk we are loading
   channel.setAutoSave(false);
   // Set properties
   channel.setRadius(getNode(path + ".radius").getInt());
   channel.setInviteOnly(getNode(path + ".invite-only").getBoolean());
   channel.setPassword(getNode(path + ".password").getString());
   channel.setJoinMessage(
       ChatArguments.fromFormatString(getNode(path + ".join-message").getString()));
   channel.setLeaveMessage(
       ChatArguments.fromFormatString(getNode(path + ".leave-message").getString()));
   channel.setFormat(ChatArguments.fromFormatString(getNode(path + ".format").getString()));
   channel.setBanMessage(
       ChatArguments.fromFormatString(getNode(path + ".ban-message").getString()));
   channel.setIrcEnabled(getNode(path + ".irc.enabled").getBoolean());
   IrcBot bot = plugin.getBots().get(getNode(path + ".irc.bot").getString());
   if (bot != null) {
     channel.connectToIrc(bot);
   }
   for (String b : getNode(path + ".banned").getStringList()) {
     channel.ban(b, false);
   }
   for (String m : getNode(path + ".muted").getStringList()) {
     channel.mute(m);
   }
   for (String c : getNode(path + ".censored-words").getKeys(false)) {
     channel.censor(c, getNode(path + ".censored-words." + c).getString());
   }
   // Turn auto-save back on
   channel.setAutoSave(true);
   channels.add(channel);
   return channel;
 }
コード例 #2
0
 public void postLoad(Channel channel) {
   String path = "channels." + channel.getName();
   for (String n : getNode(path + ".listeners").getStringList()) {
     Chatter chatter = plugin.getChatters().get(n);
     if (chatter == null) {
       continue;
     }
     channel.addListener(chatter);
   }
 }
コード例 #3
0
ファイル: Channel.java プロジェクト: windy1/WindChat
 /**
  * Broadcasts a message to all listeners of the channel.
  *
  * @param message
  */
 public void broadcast(Chatter sender, ChatArguments message) {
   ChannelBroadcastEvent event =
       plugin
           .getEngine()
           .getEventManager()
           .callEvent(new ChannelBroadcastEvent(this, sender, message));
   sender = event.getSender();
   message = event.getMessage();
   Placeholders.format(Placeholders.MESSAGE, format, message);
   for (Chatter chatter : listeners) {
     if (sender != null && !chatter.canHear(sender, this)) {
       continue;
     }
     chatter.getParent().sendMessage(format);
   }
   if (bot != null && ircEnabled) {
     bot.sendMessage(message);
   }
   plugin.getChatLogger().log(message);
 }
コード例 #4
0
ファイル: Channel.java プロジェクト: windy1/WindChat
 /**
  * Unbans a name from the channel.
  *
  * @param name
  */
 public void unban(String name) {
   ChannelUnbanEvent event =
       plugin.getEngine().getEventManager().callEvent(new ChannelUnbanEvent(this, name));
   if (event.isCancelled()) {
     return;
   }
   banned.remove(event.getName());
   if (autoSave) {
     save();
   }
 }
コード例 #5
0
ファイル: Channel.java プロジェクト: windy1/WindChat
 /**
  * Censors a word in the channel
  *
  * @param word
  * @param replacement
  */
 public void censor(String word, String replacement) {
   ChannelCensorEvent event =
       plugin
           .getEngine()
           .getEventManager()
           .callEvent(new ChannelCensorEvent(this, word, replacement));
   censoredWords.put(event.getWord().toLowerCase(), event.getReplacement());
   if (autoSave) {
     save();
   }
 }
コード例 #6
0
ファイル: Channel.java プロジェクト: windy1/WindChat
 /**
  * Bans a name from the channel
  *
  * @param name of chatter
  * @param kick whether to kick if online
  * @param reason for kick
  */
 public void ban(String name, boolean kick, ChatArguments reason) {
   ChannelBanEvent event =
       plugin
           .getEngine()
           .getEventManager()
           .callEvent(new ChannelBanEvent(this, name, kick, reason));
   if (event.isCancelled()) {
     return;
   }
   name = event.getName();
   if (event.isKicked()) {
     Chatter chatter = plugin.getChatters().get(name);
     if (chatter == null) {
       return;
     }
     chatter.kick(this, event.getReason());
   }
   banned.add(name);
   if (autoSave) {
     save();
   }
 }
コード例 #7
0
ファイル: Channel.java プロジェクト: windy1/WindChat
 /**
  * Allows the chatter to chat in the channel.
  *
  * @param name
  */
 public void unmute(String name) {
   ChannelMuteChangeEvent event =
       plugin
           .getEngine()
           .getEventManager()
           .callEvent(new ChannelMuteChangeEvent(this, name, false));
   name = event.getName();
   if (event.isMuted()) {
     mute(name);
     return;
   }
   muted.remove(name);
   if (autoSave) {
     save();
   }
 }
コード例 #8
0
 /** Constructs a new ChannelConfiguration at 'plugins/WindChat/channels.yml'. */
 public ChannelConfiguration(WindChat plugin) {
   super(new File(plugin.getDataFolder(), "channels.yml"));
   this.plugin = plugin;
 }
コード例 #9
0
ファイル: Channel.java プロジェクト: windy1/WindChat
 /** Saves the channel to disk */
 public void save() {
   plugin.getChannels().save(this);
 }