Skip to content
This repository has been archived by the owner on Jul 27, 2019. It is now read-only.

Commit

Permalink
Add prism support: Issue #49
Browse files Browse the repository at this point in the history
  • Loading branch information
cnaude committed Jun 16, 2014
1 parent 40d70dc commit 331e95f
Show file tree
Hide file tree
Showing 8 changed files with 224 additions and 31 deletions.
8 changes: 7 additions & 1 deletion dependency-reduced-pom.xml
Expand Up @@ -229,7 +229,7 @@
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>3.3.1</version>
<version>3.4.0</version>
<scope>compile</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -280,6 +280,12 @@
<version>1.9.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>me.botsko</groupId>
<artifactId>Prism</artifactId>
<version>2.0.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
<distributionManagement>
<repository>
Expand Down
9 changes: 8 additions & 1 deletion pom.xml
Expand Up @@ -200,7 +200,7 @@
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>3.3.1</version>
<version>3.4.0</version>
</dependency>

<dependency>
Expand Down Expand Up @@ -257,6 +257,13 @@
<artifactId>DynmapAPI</artifactId>
<version>1.9.2</version>
</dependency>

<!-- Prism -->
<dependency>
<groupId>me.botsko</groupId>
<artifactId>Prism</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>

<build>
Expand Down
@@ -0,0 +1,77 @@
package com.cnaude.purpleirc.GameListeners;

import com.cnaude.purpleirc.PurpleBot;
import com.cnaude.purpleirc.PurpleIRC;
import com.cnaude.purpleirc.TemplateName;
import me.botsko.prism.events.PrismBlocksDrainEvent;
import me.botsko.prism.events.PrismBlocksExtinguishEvent;
import me.botsko.prism.events.PrismBlocksRollbackEvent;
import me.botsko.prism.events.PrismCustomPlayerActionEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

/**
*
* @author cnaude
*/
public class PrismListener implements Listener {

private final PurpleIRC plugin;

/**
*
* @param plugin
*/
public PrismListener(PurpleIRC plugin) {
this.plugin = plugin;
}

/**
*
* @param event
*/
@EventHandler
public void onPrismBlocksRollbackEvent(PrismBlocksRollbackEvent event) {
plugin.logDebug("onPrismBlocksRollbackEvent caught");
for (PurpleBot ircBot : plugin.ircBots.values()) {
ircBot.gamePrismRollback(event.onBehalfOf(), event.getQueryParameters());
}
}

/**
*
* @param event
*/
@EventHandler
public void onPrismBlocksDrainEvent(PrismBlocksDrainEvent event) {
plugin.logDebug("onPrismBlocksDrainEvent caught");
for (PurpleBot ircBot : plugin.ircBots.values()) {
ircBot.gamePrismDrainOrExtinguish(TemplateName.PRISM_DRAIN, event.onBehalfOf(), event.getRadius(), event.getBlockStateChanges());
}
}

/**
*
* @param event
*/
@EventHandler
public void onPrismBlocksExtinguishEvent(PrismBlocksExtinguishEvent event) {
plugin.logDebug("onPrismBlocksExtinguishEvent caught");
for (PurpleBot ircBot : plugin.ircBots.values()) {
ircBot.gamePrismDrainOrExtinguish(TemplateName.PRISM_EXTINGUISH, event.onBehalfOf(), event.getRadius(), event.getBlockStateChanges());
}
}

/**
*
* @param event
*/
@EventHandler
public void onPrismCustomPlayerActionEvent(PrismCustomPlayerActionEvent event) {
plugin.logDebug("onPrismCustomPlayerActionEvent caught");
for (PurpleBot ircBot : plugin.ircBots.values()) {
ircBot.gamePrismCustom(event.getPlayer(), event.getActionTypeName(),
event.getMessage(), event.getPluginName());
}
}
}
76 changes: 67 additions & 9 deletions src/main/java/com/cnaude/purpleirc/PurpleBot.java
@@ -1,12 +1,5 @@
package com.cnaude.purpleirc;

import com.dthielke.herochat.Chatter;
import java.io.File;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import com.cnaude.purpleirc.IRCListeners.ActionListener;
import com.cnaude.purpleirc.IRCListeners.ConnectListener;
import com.cnaude.purpleirc.IRCListeners.DisconnectListener;
Expand All @@ -25,19 +18,26 @@
import com.cnaude.purpleirc.IRCListeners.VersionListener;
import com.cnaude.purpleirc.IRCListeners.WhoisListener;
import com.cnaude.purpleirc.Utilities.CaseInsensitiveMap;
import com.dthielke.herochat.Chatter;
import com.dthielke.herochat.Herochat;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableSortedSet;
import com.massivecraft.factions.entity.Faction;
import com.massivecraft.factions.entity.UPlayer;
import com.nyancraft.reportrts.data.HelpRequest;
import com.titankingdoms.dev.titanchat.core.participant.Participant;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import me.botsko.prism.actionlibs.QueryParameters;
import me.botsko.prism.events.BlockStateChange;
import org.bukkit.Achievement;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
Expand Down Expand Up @@ -2607,4 +2607,62 @@ public void setConnected(boolean connected) {
public String getFileName() {
return fileName;
}

public void gamePrismRollback(Player player, QueryParameters queryParams) {
if (!this.isConnected()) {
return;
}
for (String channelName : botChannels) {
if (isMessageEnabled(channelName, TemplateName.PRISM_ROLLBACK)) {
asyncIRCMessage(channelName, plugin.tokenizer
.playerTokenizer(player, plugin.getMsgTemplate(botNick, TemplateName.PRISM_ROLLBACK))
.replace("%COMMAND%", queryParams.getOriginalCommand())
.replace("%KEYWORD%", queryParams.getKeyword())
.replace("%SORTDIRECTION%", queryParams.getSortDirection())
.replace("%PARAMWORLD%", queryParams.getWorld())
.replace("%ID%", String.valueOf(queryParams.getId()))
.replace("%RADIUS%", String.valueOf(queryParams.getRadius()))
.replace("%X%", String.valueOf(queryParams.getSpecificBlockLocations().get(0).getX()))
.replace("%Y%", String.valueOf(queryParams.getSpecificBlockLocations().get(0).getY()))
.replace("%Z%", String.valueOf(queryParams.getSpecificBlockLocations().get(0).getZ()))
);
}
}
}

public void gamePrismDrainOrExtinguish(String template, Player player, int radius, ArrayList<BlockStateChange> blockStateChange) {
if (!this.isConnected()) {
return;
}
for (String channelName : botChannels) {
if (isMessageEnabled(channelName, template)) {
asyncIRCMessage(channelName, plugin.tokenizer
.playerTokenizer(player, plugin.getMsgTemplate(botNick, template))
.replace("%RADIUS%", String.valueOf(radius))
.replace("%ORIGINALBLOCK%", String.valueOf(blockStateChange.get(0).getOriginalBlock().getType().name()))
.replace("%NEWBLOCK%", String.valueOf(blockStateChange.get(0).getNewBlock().getType().name()))
.replace("%X%", String.valueOf(blockStateChange.get(0).getNewBlock().getX()))
.replace("%Y%", String.valueOf(blockStateChange.get(0).getNewBlock().getY()))
.replace("%Z%", String.valueOf(blockStateChange.get(0).getNewBlock().getZ()))
.replace("%BLOCKWORLD%", String.valueOf(blockStateChange.get(0).getNewBlock().getWorld().getName()))
);
}
}
}

public void gamePrismCustom(Player player, String actionName, String message, String pluginName) {
if (!this.isConnected()) {
return;
}
for (String channelName : botChannels) {
if (isMessageEnabled(channelName, TemplateName.PRISM_CUSTOM)) {
asyncIRCMessage(channelName, plugin.tokenizer
.playerTokenizer(player, plugin.getMsgTemplate(botNick, TemplateName.PRISM_CUSTOM))
.replace("%ACTION%", actionName)
.replace("%MESSAGE%", message)
.replace("%PLUGIN%", pluginName)
);
}
}
}
}
45 changes: 26 additions & 19 deletions src/main/java/com/cnaude/purpleirc/PurpleIRC.java
Expand Up @@ -16,44 +16,45 @@
import com.cnaude.purpleirc.GameListeners.HeroChatListener;
import com.cnaude.purpleirc.GameListeners.McMMOChatListener;
import com.cnaude.purpleirc.GameListeners.OreBroadcastListener;
import com.cnaude.purpleirc.GameListeners.PrismListener;
import com.cnaude.purpleirc.GameListeners.ReportRTSListener;
import com.cnaude.purpleirc.GameListeners.TitanChatListener;
import com.cnaude.purpleirc.GameListeners.TownyChatListener;
import com.cnaude.purpleirc.Hooks.DynmapHook;
import com.cnaude.purpleirc.Hooks.VaultHook;
import com.cnaude.purpleirc.Utilities.ColorConverter;
import com.cnaude.purpleirc.Utilities.RegexGlobber;
import com.google.common.base.Joiner;
import com.onarandombox.MultiverseCore.api.MVPlugin;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.management.ManagementFactory;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.cnaude.purpleirc.Hooks.FactionChatHook;
import com.cnaude.purpleirc.Hooks.JobsHook;
import com.cnaude.purpleirc.Hooks.ShortifyHook;
import com.cnaude.purpleirc.Hooks.TownyChatHook;
import com.cnaude.purpleirc.Hooks.VanishHook;
import com.cnaude.purpleirc.Hooks.VaultHook;
import com.cnaude.purpleirc.Utilities.CaseInsensitiveMap;
import com.cnaude.purpleirc.Utilities.ChatTokenizer;
import com.cnaude.purpleirc.Utilities.ColorConverter;
import com.cnaude.purpleirc.Utilities.IRCMessageHandler;
import com.cnaude.purpleirc.Utilities.NetPackets;
import com.cnaude.purpleirc.Utilities.Query;
import com.cnaude.purpleirc.Utilities.RegexGlobber;
import com.google.common.base.Joiner;
import com.onarandombox.MultiverseCore.api.MVPlugin;
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.management.ManagementFactory;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.InvalidConfigurationException;
Expand Down Expand Up @@ -146,7 +147,7 @@ public class PurpleIRC extends JavaPlugin {
public VaultHook vaultHelpers;
public VanishHook vanishHook;
private YamlConfiguration heroConfig;
private File cacheFile;
private final File cacheFile;

public PurpleIRC() {
this.MAINCONFIG = "MAIN-CONFIG";
Expand Down Expand Up @@ -194,7 +195,7 @@ public void onEnable() {
getServer().getPluginManager().registerEvents(new GamePlayerJoinListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerKickListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerQuitListener(this), this);
getServer().getPluginManager().registerEvents(new GameServerCommandListener(this), this);
getServer().getPluginManager().registerEvents(new GameServerCommandListener(this), this);
if (isPluginEnabled("Herochat")) {
logInfo("Enabling HeroChat support.");
getServer().getPluginManager().registerEvents(new HeroChatListener(this), this);
Expand All @@ -216,6 +217,12 @@ public void onEnable() {
} else {
logInfo("TitanChat not detected.");
}
if (isPluginEnabled("Prism")) {
logInfo("Enabling Prism support.");
getServer().getPluginManager().registerEvents(new PrismListener(this), this);
} else {
logInfo("Prism not detected.");
}
if (isPluginEnabled("TownyChat")) {
logInfo("Enabling TownyChat support.");
getServer().getPluginManager().registerEvents(new TownyChatListener(this), this);
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/cnaude/purpleirc/TemplateName.java
Expand Up @@ -96,5 +96,10 @@ public class TemplateName {
public final static String DEATH_MESSAGES = "death-messages";

public final static String ORE_BROADCAST = "ore-broadcast";

public final static String PRISM_ROLLBACK = "prism-rollback";
public final static String PRISM_DRAIN = "prism-drain";
public final static String PRISM_EXTINGUISH = "prism-extinguish";
public final static String PRISM_CUSTOM = "prism-custom";

}
7 changes: 6 additions & 1 deletion src/main/resources/SampleBot.yml
Expand Up @@ -98,6 +98,11 @@ channels:
- game-mode
# Essentials helpop messages (/helpop /amsg /ac)
- ess-helpop
# Prism
#- prism-rollback
#- prism-drain
#- prism-extinguish
#- prism-custom
# The game-afk message type is not functional yet.
#- game-afk
# These messages are sent from IRC to game (see permissions)
Expand Down Expand Up @@ -163,7 +168,7 @@ channels:
hero-channel: admin
# Towny channel destination for IRC messages
towny-channel: irc
# Log all messages from IRC to HeroChat
# Log all messages from IRC to HeroChat
log-irc-to-hero-chat: false
# ops - IRC hostname mask styled ops list
ops:
Expand Down
28 changes: 28 additions & 0 deletions src/main/resources/config.yml
Expand Up @@ -39,6 +39,29 @@ channel-check-interval: 100
# %TOWNYMSGCOLOR% - Towny message color
# %JOBS% - Player jobs
# %JOBS% - Player jobs shortened
# Prism custom tokens:
# prism-rollback:
# %COMMAND%
# %KEYWORD%
# %SORTDIRECTION%
# %PARAMWORLD%
# %ID%
# %RADIUS%
# %X%
# %Y%
# %Z%
# prism-drain and prism-extinguish:
# %RADIUS%
# %ORIGINALBLOCK%
# %NEWBLOCK%
# %X%
# %Y%
# %Z%
# %BLOCKWORLD%
# prism-custom:
# %ACTION%
# %MESSAGE%
# %PLUGIN%
message-format:
# Message templates for game to IRC messages
console-chat: '[&dServer&r] %MESSAGE%'
Expand Down Expand Up @@ -141,6 +164,11 @@ message-format:
irc: '[IRC]%PLAYERPREFIX%%NAME% %MESSAGE%'
broadcast-message: '[Broadcast] <%NAME%> %MESSAGE%'
broadcast-console-message: '[Broadcast] <Console> %MESSAGE%'
# Prism templates. See above for token names.
prism-rollback: '[PrismRollback] [Player: %NAME%] [Radius: %RADIUS%] [Command: %COMMAND%] [Keyword: %KEYWORD%] [X,Y,Z: %X%,%Y%,%Z%] [World: %PARAMWORLD%]'
prism-drain: '[PrismDrain] [Player: %NAME%] [Radius: %RADIUS%] [OrigBlock: %ORIGINALBLOCK%] [NewBlock: %NEWBLOCK%] [X,Y,Z: %X%,%Y%,%Z%] [World: %BLOCKWORLD%]'
prism-extinguish: '[PrismExtinguish] [Player: %NAME%] [Radius%: %RADIUS] [OrigBlock: %ORIGINALBLOCK%] [NewBlock: %NEWBLOCK%] [X,Y,Z: %X%,%Y%,%Z%] [World: %BLOCKWORLD%]'
prism-custom: '[PrismCustom] [Player: %NAME%] [Action: %ACTION%] [Message: %MESSAGE%] [Plugin: %PLUGIN%]'
# Defaults below take effect when user joins IRC and matching player is offline
default-player-suffix: ''
default-player-prefix: ''
Expand Down

0 comments on commit 331e95f

Please sign in to comment.