Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added external/Permissions-3.1.6.jar
Binary file not shown.
10 changes: 8 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -251,14 +251,20 @@
<dependency>
<groupId>org.pircbotx</groupId>
<artifactId>pircbotx</artifactId>
<version>1.7-SNAPSHOT</version>
<scope>compile</scope>
<version>1.6</version>
</dependency>
<dependency>
<groupId>net.sf.trove4j</groupId>
<artifactId>trove4j</artifactId>
<version>3.0.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.nijiko.permissions</groupId>
<artifactId>permissions</artifactId>
<scope>system</scope>
<version>3.1.6</version>
<systemPath>${project.basedir}\external\Permissions-3.1.6.jar</systemPath>
</dependency>
</dependencies>
</project>
32 changes: 32 additions & 0 deletions src/main/java/hef/IRCTransport/IRCTransport.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
package hef.IRCTransport;

import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;

import org.bukkit.Server;
import org.bukkit.plugin.Plugin;
import gnu.trove.map.hash.TIntObjectHashMap;
import gnu.trove.procedure.TIntObjectProcedure;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand All @@ -14,15 +21,36 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.pircbotx.PircBotX;

import com.nijiko.permissions.PermissionHandler;

/**
* IRCTransport for Bukkit.
*/
public class IRCTransport extends JavaPlugin {

public static PermissionHandler permissionHandler;
private void setupPermissions() {
if (permissionHandler != null) {
return;
}

Plugin permissionsPlugin = this.getServer().getPluginManager().getPlugin("Permissions");

if (permissionsPlugin == null) {
LOG.log(Level.INFO, "Permission system not detected, defaulting to OP");
return;
}

permissionHandler = ((Permissions) permissionsPlugin).getHandler();
LOG.log(Level.INFO, "Found and will use plugin "+((Permissions)permissionsPlugin).getDescription().getFullName());
}

/** The logging obect. Used internal to write to the console. */
private static final Logger LOG = Logger.getLogger("Minecraft");
/** MC Player to IRCAgent map. */
Expand Down Expand Up @@ -85,6 +113,7 @@ public void onDisable() {
TIntObjectProcedure<IrcAgent> shutdown = new ShutdownProcedure();
bots.forEachEntry(shutdown);
bots.clear();

LOG.log(Level.INFO, this.getDescription().getFullName()
+ " is disabled");
}
Expand All @@ -95,6 +124,8 @@ public void onDisable() {
*/
@Override
public void onEnable() {
setupPermissions();

this.playerListener = new IRCTransportPlayerListener(this);
listener = new IrcListener(this);
this.entityListener = new IRCTransportEntityListener(this);
Expand Down Expand Up @@ -144,6 +175,7 @@ public void onEnable() {
getCommand("me").setExecutor(commandExecutor);
getCommand("topic").setExecutor(commandExecutor);
getCommand("whois").setExecutor(commandExecutor);
getCommand("irc_listbots").setExecutor(commandExecutor);
LOG.log(Level.INFO, pdfFile.getFullName() + " is enabled!");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ public boolean onCommand(final CommandSender sender, final Command command, fina
return topic(bot, args);
} else if (commandName.equals("whois")) {
return whois(bot, args);
} else if (commandName.equals("irc_listbots")) {
log.info(plugin.getBots().toString());
return true;
}
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ public void onPlayerChat(final PlayerChatEvent event) {
@Override
public void onPlayerJoin(final PlayerJoinEvent event) {
Player player = event.getPlayer();

for (final int x : bots.keys())
{
IrcAgent current = bots.get(x);
if (current.getPlayer().getName().equals(player.getName()))
current.shutdown();
current.getPlayer().getName();
}

int playerID = player.getEntityId();
IrcAgent agent = new IrcAgent(plugin, player);
agent.getListenerManager().addListener(plugin.getListener());
Expand Down
51 changes: 38 additions & 13 deletions src/main/java/hef/IRCTransport/IrcAgent.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
package hef.IRCTransport;
import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;
import org.bukkit.plugin.Plugin;

import java.io.IOException;
import java.util.HashSet;
Expand Down Expand Up @@ -60,7 +63,12 @@ public IrcAgent(final IRCTransport instance, final Player bukkitPlayer) {
setSettings(new AgentSettings(player));
String prefix = plugin.getConfig().getString("default.prefix", "");
String suffix = plugin.getConfig().getString("default.suffix", "");
getSettings().setIrcNick(String.format("%s%s%s", prefix, player.getName(), suffix));
int ircnicksize = plugin.getConfig().getInt("server.nicksize", 15);
String nick = String.format("%s%s%s", prefix, player.getName(), suffix);
if (nick.length() > ircnicksize)
nick = nick.substring(0, ircnicksize);
getSettings().setIrcNick(nick);

} else {
String format = "Player '%s' using persistent IRC nick '%s'";
String name = player.getName();
Expand Down Expand Up @@ -88,12 +96,12 @@ public void connect() throws IOException, IrcException {
}

//setup WEBIRC
setWebIrcAddress(this.getPlayer().getAddress().getAddress());
setWebIrcHostname(player.getAddress().getHostName());
String webIrcPassword = getPlugin().getConfig().getString("server.webirc_password");
if (webIrcPassword != null) {
this.setWebIrcPassword(webIrcPassword);
}
//setWebIrcAddress(this.getPlayer().getAddress().getAddress());
//setWebIrcHostname(player.getAddress().getHostName());
//String webIrcPassword = getPlugin().getConfig().getString("server.webirc_password");
//if (webIrcPassword != null) {
// this.setWebIrcPassword(webIrcPassword);
//}

if (!isConnected()) {
if (getServer() == null) {
Expand All @@ -102,6 +110,7 @@ public void connect() throws IOException, IrcException {
reconnect();
}
}
this.joinChannel(plugin.getConfig().getString("autojoin"));
}

/**
Expand Down Expand Up @@ -180,8 +189,13 @@ protected void saveSettings() {
* @param action The content of the action.
*/
public void sendAction(final String action) {
sendAction(activeChannel, action);
getPlayer().sendMessage(String.format("[%s] * %s %s", activeChannel.getName(), getPlayer().getDisplayName(), action));
String actiontr = action;
String trans = plugin.getConfig().getString("translations." + action, "");
if (! trans.equals("")) {
actiontr = trans;
}
sendAction(activeChannel, actiontr);
getPlayer().sendMessage(String.format("* %s %s", /*activeChannel.getName(),*/ getPlayer().getDisplayName(), actiontr));
}

/**
Expand All @@ -191,8 +205,16 @@ public void sendAction(final String action) {
public void sendMessage(final String message) {
sendMessage(activeChannel, message);
if (isConnected()) {
String msg = String.format("[%s] %s: %s", activeChannel.getName(), getPlayer().getDisplayName(), message);
getPlayer().sendMessage(msg);
String formattedMessage = plugin.getConfig().getString("messages.chat-ingame");
String group = IRCTransport.permissionHandler.getGroup(player.getWorld().getName(), player.getName());
String prefix = IRCTransport.permissionHandler.getGroupRawPrefix(player.getWorld().getName(), group);
String suffix = IRCTransport.permissionHandler.getGroupRawSuffix(player.getWorld().getName(), group);
formattedMessage = formattedMessage.replace("${GROUP}", group);
formattedMessage = formattedMessage.replace("${PREFIX}", prefix);
formattedMessage = formattedMessage.replace("${SUFFIX}", suffix);
formattedMessage = formattedMessage.replace("${NICK}", getPlayer().getDisplayName());
formattedMessage = formattedMessage.replace("${MESSAGE}", message);
getPlayer().sendMessage(formattedMessage.replace("&", "\u00A7"));
}
}

Expand Down Expand Up @@ -234,8 +256,11 @@ protected void setTopic(final String topic) {
* Initiate agent shutdown Disconnects the agent, sets shutting down flag.
*/
public void shutdown() {
shuttingDown = true;
disconnect();
if (isConnected() && shuttingDown == false)
{
shuttingDown = true;
disconnect();
}
}

/** Request active topic. */
Expand Down
Loading