IRCMessageEvent is now modifiable.

This commit is contained in:
cnaude 2016-11-28 20:32:03 -07:00
parent efe102ddaa
commit 8dff546768
3 changed files with 110 additions and 30 deletions

View File

@ -16,19 +16,22 @@
*/ */
package com.cnaude.purpleirc.Events; package com.cnaude.purpleirc.Events;
import com.cnaude.purpleirc.PurpleIRC;
import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
/** /**
* *
* @author Chris Naude Event listener for plugins that want to catch irc message events * @author Chris Naude Event listener for plugins that want to catch irc message
* from PurpleIRC * events from PurpleIRC
*/ */
public class IRCMessageEvent extends Event { public class IRCMessageEvent extends Event {
private static final HandlerList HANDLERS = new HandlerList(); private static final HandlerList HANDLERS = new HandlerList();
private String message; private String message;
private final String permission; private final String permission;
private final Player player;
/** /**
* *
@ -38,6 +41,27 @@ public class IRCMessageEvent extends Event {
public IRCMessageEvent(String message, String permission) { public IRCMessageEvent(String message, String permission) {
this.message = message; this.message = message;
this.permission = permission; this.permission = permission;
this.player = null;
}
/**
*
* @param message
* @param permission
* @param player
*/
public IRCMessageEvent(String message, String permission, Player player) {
this.message = message;
this.permission = permission;
this.player = player;
}
/**
*
* @return
*/
public Player getPlayer() {
return this.player;
} }
/** /**

View File

@ -0,0 +1,74 @@
/*
* Copyright (C) 2014 cnaude
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.cnaude.purpleirc.GameListeners;
import com.cnaude.purpleirc.Events.IRCMessageEvent;
import com.cnaude.purpleirc.Message;
import com.cnaude.purpleirc.PurpleIRC;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
/**
*
* @author Chris Naude
*/
public class IRCMessageListener implements Listener {
private final PurpleIRC plugin;
/**
*
* @param plugin the PurpleIRC plugin
*/
public IRCMessageListener(PurpleIRC plugin) {
this.plugin = plugin;
}
/**
*
* @param event
*/
@EventHandler
public void onIRCMessageEvent(IRCMessageEvent event) {
String permission = event.getPermission();
String message = event.getMessage();
Player player = event.getPlayer();
String fixedMessage = message.replace("\u200B", "");
if (player != null) {
if (player.hasPermission(permission)) {
plugin.logDebug("Broadcast player [" + player.getName() + "] [" + permission + "]: " + fixedMessage);
player.sendMessage(fixedMessage);
}
return;
}
if (plugin.broadcastChatToConsole) {
plugin.logDebug("Broadcast All [" + permission + "]: " + fixedMessage);
plugin.messageQueue.add(new Message(fixedMessage, permission));
} else {
plugin.logDebug("Broadcast Players [" + permission + "]: " + fixedMessage);
for (Player p : plugin.getServer().getOnlinePlayers()) {
if (p.hasPermission(permission)) {
p.sendMessage(fixedMessage);
}
}
}
}
}

View File

@ -20,7 +20,6 @@ import com.cnaude.purpleirc.Events.IRCMessageEvent;
import com.cnaude.purpleirc.GameListeners.AdminChatListener; import com.cnaude.purpleirc.GameListeners.AdminChatListener;
import com.cnaude.purpleirc.GameListeners.CleverNotchListener; import com.cnaude.purpleirc.GameListeners.CleverNotchListener;
import com.cnaude.purpleirc.GameListeners.DeathMessagesListener; import com.cnaude.purpleirc.GameListeners.DeathMessagesListener;
import com.cnaude.purpleirc.GameListeners.DiscordListener;
import com.cnaude.purpleirc.GameListeners.DynmapListener; import com.cnaude.purpleirc.GameListeners.DynmapListener;
import com.cnaude.purpleirc.GameListeners.EssentialsListener; import com.cnaude.purpleirc.GameListeners.EssentialsListener;
import com.cnaude.purpleirc.GameListeners.GamePlayerChatListener; import com.cnaude.purpleirc.GameListeners.GamePlayerChatListener;
@ -33,6 +32,7 @@ import com.cnaude.purpleirc.GameListeners.GamePlayerPlayerAchievementAwardedList
import com.cnaude.purpleirc.GameListeners.GamePlayerQuitListener; import com.cnaude.purpleirc.GameListeners.GamePlayerQuitListener;
import com.cnaude.purpleirc.GameListeners.GameServerCommandListener; import com.cnaude.purpleirc.GameListeners.GameServerCommandListener;
import com.cnaude.purpleirc.GameListeners.HeroChatListener; import com.cnaude.purpleirc.GameListeners.HeroChatListener;
import com.cnaude.purpleirc.GameListeners.IRCMessageListener;
import com.cnaude.purpleirc.GameListeners.McMMOChatListener; import com.cnaude.purpleirc.GameListeners.McMMOChatListener;
import com.cnaude.purpleirc.GameListeners.VentureChatListener; import com.cnaude.purpleirc.GameListeners.VentureChatListener;
import com.cnaude.purpleirc.GameListeners.NTheEndAgainListener; import com.cnaude.purpleirc.GameListeners.NTheEndAgainListener;
@ -70,7 +70,6 @@ import com.cnaude.purpleirc.Utilities.UpdateChecker;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.onarandombox.MultiverseCore.api.MVPlugin; import com.onarandombox.MultiverseCore.api.MVPlugin;
import com.onarandombox.MultiverseCore.api.MultiverseWorld; import com.onarandombox.MultiverseCore.api.MultiverseWorld;
import com.scarsz.discordsrv.api.DiscordSRVAPI;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
@ -176,7 +175,7 @@ public class PurpleIRC extends JavaPlugin {
private boolean stripIRCColors; private boolean stripIRCColors;
private boolean stripIRCBackgroundColors; private boolean stripIRCBackgroundColors;
protected boolean stripGameColorsFromIrc; protected boolean stripGameColorsFromIrc;
private boolean broadcastChatToConsole; public boolean broadcastChatToConsole;
public boolean customTabList; public boolean customTabList;
public String customTabGamemode; public String customTabGamemode;
private boolean listSortByName; private boolean listSortByName;
@ -259,7 +258,6 @@ public class PurpleIRC extends JavaPlugin {
public String smsgReplyAlias = "/r"; public String smsgReplyAlias = "/r";
public CaseInsensitiveMap<String> privateMsgReply; public CaseInsensitiveMap<String> privateMsgReply;
public PurpleIRC() { public PurpleIRC() {
this.MAINCONFIG = "MAIN-CONFIG"; this.MAINCONFIG = "MAIN-CONFIG";
this.sampleFileName = "SampleBot.yml"; this.sampleFileName = "SampleBot.yml";
@ -309,6 +307,7 @@ public class PurpleIRC extends JavaPlugin {
logError(ex.getMessage()); logError(ex.getMessage());
} }
} }
getServer().getPluginManager().registerEvents(new IRCMessageListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerPlayerAchievementAwardedListener(this), this); getServer().getPluginManager().registerEvents(new GamePlayerPlayerAchievementAwardedListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerGameModeChangeListener(this), this); getServer().getPluginManager().registerEvents(new GamePlayerGameModeChangeListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerChatListener(this), this); getServer().getPluginManager().registerEvents(new GamePlayerChatListener(this), this);
@ -1762,7 +1761,6 @@ public class PurpleIRC extends JavaPlugin {
hookList.add(hookFormat(PL_DISCORDSRV, false)); hookList.add(hookFormat(PL_DISCORDSRV, false));
} }
} }
public void getPurpleHooks(CommandSender sender, boolean colors) { public void getPurpleHooks(CommandSender sender, boolean colors) {
@ -1791,26 +1789,10 @@ public class PurpleIRC extends JavaPlugin {
public void broadcastToGame(final String message, final String permission) { public void broadcastToGame(final String message, final String permission) {
getServer().getPluginManager().callEvent(new IRCMessageEvent(message, permission)); getServer().getPluginManager().callEvent(new IRCMessageEvent(message, permission));
String fixedMessage = message.replace("\u200B", "");
if (broadcastChatToConsole) {
logDebug("Broadcast All [" + permission + "]: " + fixedMessage);
messageQueue.add(new Message(fixedMessage, permission));
} else {
logDebug("Broadcast Players [" + permission + "]: " + fixedMessage);
for (Player player : getServer().getOnlinePlayers()) {
if (player.hasPermission(permission)) {
player.sendMessage(fixedMessage);
}
}
}
} }
public void broadcastToPlayer(final Player player, final String message, final String permission) { public void broadcastToPlayer(final Player player, final String message, final String permission) {
getServer().getPluginManager().callEvent(new IRCMessageEvent(message, permission)); getServer().getPluginManager().callEvent(new IRCMessageEvent(message, permission, player));
String fixedMessage = message.replace("\u200B", "");
if (player.hasPermission(permission)) {
player.sendMessage(fixedMessage);
}
} }
/** /**