From 09eabbfeb1744f4a9fb216e43059a11c77501ab2 Mon Sep 17 00:00:00 2001 From: cnaude Date: Tue, 23 May 2017 18:57:26 -0700 Subject: [PATCH] Update for 1.12 --- pom.xml | 4 +- ...mePlayerPlayerAdvancementDoneListener.java | 53 +++++++++++++++++++ .../cnaude/purpleirc/IRCCommandSender.java | 6 +++ .../purpleirc/IRCConsoleCommandSender.java | 6 +++ .../java/com/cnaude/purpleirc/PurpleBot.java | 21 ++++++++ .../java/com/cnaude/purpleirc/PurpleIRC.java | 11 ++-- .../com/cnaude/purpleirc/TemplateName.java | 1 + .../purpleirc/Utilities/NetPackets.java | 2 +- src/main/resources/config.yml | 1 + 9 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerPlayerAdvancementDoneListener.java diff --git a/pom.xml b/pom.xml index b35ce64..a4be628 100644 --- a/pom.xml +++ b/pom.xml @@ -6,13 +6,13 @@ UTF-8 - 1.11.2 + 1.12 SNAPSHOT com.cnaude PurpleIRC - 1.0-SNAPSHOT + 1.0-${build.number} PurpleIRC-spigot Minecraft IRC integration for CraftBukkit/Spigot servers. http://www.spigotmc.org/resources/purpleirc.2836/ diff --git a/src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerPlayerAdvancementDoneListener.java b/src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerPlayerAdvancementDoneListener.java new file mode 100644 index 0000000..d6a7669 --- /dev/null +++ b/src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerPlayerAdvancementDoneListener.java @@ -0,0 +1,53 @@ +/* + * 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 . + */ +package com.cnaude.purpleirc.GameListeners; + +import com.cnaude.purpleirc.PurpleBot; +import com.cnaude.purpleirc.PurpleIRC; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerAdvancementDoneEvent; + +/** + * + * @author Chris Naude + */ +public class GamePlayerPlayerAdvancementDoneListener implements Listener { + + private final PurpleIRC plugin; + + /** + * + * @param plugin the PurpleIRC plugin + */ + public GamePlayerPlayerAdvancementDoneListener(PurpleIRC plugin) { + this.plugin = plugin; + } + + /** + * + * @param event + */ + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerAchievementAwardedEvent(PlayerAdvancementDoneEvent event) { + plugin.logDebug("ACHIEVEMENT: " + event.getPlayer().getName() + " => " + event.getAdvancement()); + for (PurpleBot ircBot : plugin.ircBots.values()) { + ircBot.gameAdvancement(event.getPlayer(), event.getAdvancement()); + } + } +} diff --git a/src/main/java/com/cnaude/purpleirc/IRCCommandSender.java b/src/main/java/com/cnaude/purpleirc/IRCCommandSender.java index 984f16f..edf978d 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCCommandSender.java +++ b/src/main/java/com/cnaude/purpleirc/IRCCommandSender.java @@ -235,4 +235,10 @@ public class IRCCommandSender implements CommandSender { return null; } + @Override + public Spigot spigot() { + plugin.logDebug("Spigot?"); + return null; + } + } diff --git a/src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java b/src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java index 7a87184..c167070 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java +++ b/src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java @@ -226,4 +226,10 @@ public class IRCConsoleCommandSender implements ConsoleCommandSender { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + @Override + public Spigot spigot() { + plugin.logDebug("Spigot?"); + return null; + } + } diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java index 72d9e43..4d1f481 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java @@ -70,6 +70,7 @@ import org.bukkit.Achievement; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.Location; +import org.bukkit.advancement.Advancement; import org.bukkit.block.Block; import org.bukkit.command.CommandSender; import org.bukkit.configuration.InvalidConfigurationException; @@ -1889,6 +1890,26 @@ public final class PurpleBot { } } + /** + * + * @param player + * @param advancement + */ + public void gameAdvancement(Player player, Advancement advancement) { + if (!this.isConnected() || advancement == null || player == null) { + return; + } + String message = advancement.toString(); + for (String channelName : botChannels) { + if (isMessageEnabled(channelName, TemplateName.GAME_ADVANCEMENT) + && isPlayerInValidWorld(player, channelName)) { + asyncIRCMessage(channelName, plugin.tokenizer + .gameChatToIRCTokenizer(player, plugin + .getMessageTemplate(botNick, channelName, TemplateName.GAME_ADVANCEMENT), message)); + } + } + } + /** * * @param player diff --git a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java index 24864cb..2cc9fc2 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java @@ -30,6 +30,7 @@ import com.cnaude.purpleirc.GameListeners.GamePlayerGameModeChangeListener; import com.cnaude.purpleirc.GameListeners.GamePlayerJoinListener; import com.cnaude.purpleirc.GameListeners.GamePlayerKickListener; import com.cnaude.purpleirc.GameListeners.GamePlayerPlayerAchievementAwardedListener; +import com.cnaude.purpleirc.GameListeners.GamePlayerPlayerAdvancementDoneListener; import com.cnaude.purpleirc.GameListeners.GamePlayerQuitListener; import com.cnaude.purpleirc.GameListeners.GameServerCommandListener; import com.cnaude.purpleirc.GameListeners.HeroChatListener; @@ -314,7 +315,11 @@ public class PurpleIRC extends JavaPlugin { } } getServer().getPluginManager().registerEvents(new IRCMessageListener(this), this); - getServer().getPluginManager().registerEvents(new GamePlayerPlayerAchievementAwardedListener(this), this); + if (getServer().getVersion().contains("MC: 1.12")) { + getServer().getPluginManager().registerEvents(new GamePlayerPlayerAdvancementDoneListener(this), this); + } else { + getServer().getPluginManager().registerEvents(new GamePlayerPlayerAchievementAwardedListener(this), this); + } getServer().getPluginManager().registerEvents(new GamePlayerGameModeChangeListener(this), this); getServer().getPluginManager().registerEvents(new GamePlayerChatListener(this), this); getServer().getPluginManager().registerEvents(new GamePlayerCommandPreprocessingListener(this), this); @@ -1009,7 +1014,7 @@ public class PurpleIRC extends JavaPlugin { m = "Players on " + host + "(" + players.length + "): " + Joiner.on(", ") - .join(players); + .join(players); } return m; } else { @@ -1792,7 +1797,7 @@ public class PurpleIRC extends JavaPlugin { sender.sendMessage(header); } else { sender.sendMessage(ChatColor.stripColor(header)); - } + } for (String s : hookList) { if (colors) { sender.sendMessage(s); diff --git a/src/main/java/com/cnaude/purpleirc/TemplateName.java b/src/main/java/com/cnaude/purpleirc/TemplateName.java index 9ccc4ba..b4f6046 100644 --- a/src/main/java/com/cnaude/purpleirc/TemplateName.java +++ b/src/main/java/com/cnaude/purpleirc/TemplateName.java @@ -23,6 +23,7 @@ package com.cnaude.purpleirc; public class TemplateName { public final static String GAME_ACHIEVEMENT = "game-achievement"; + public final static String GAME_ADVANCEMENT = "game-advancement"; public final static String GAME_ACTION = "game-action"; public final static String GAME_AFK = "game-afk"; public final static String GAME_CHAT = "game-chat"; diff --git a/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java b/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java index 8680ffd..4797207 100644 --- a/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java +++ b/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java @@ -121,7 +121,7 @@ public class NetPackets { packet.getIntegers().write(1, 0); packet.getIntegers().write(2, 0); packet.getStrings().write(0, displayName); - } catch (Exception ex) { + } catch (FieldAccessException ex) { plugin.logError("tabPacket: " + ex.getMessage()); } } else if (version.contains("MC: 1.8.3")) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 52ce62f..382b199 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -103,6 +103,7 @@ message-format: # Command sent notification. Blank this to disable this message. command-sent: 'Command sent: %COMMAND%' game-achievement: '[&2%WORLD%&r] %NAME% has just earned the achievement [%MESSAGE%]' + game-advancement: '[&2%WORLD%&r] %NAME% has just earned the advancement [%MESSAGE%]' game-mode: '[&2%WORLD%&r] %NAME% has changed game mode: [%MESSAGE%]' game-action: '[&2%WORLD%&r]***%NAME% %MESSAGE%' game-pchat: '[&2%WORLD%] <%NAME%> %MESSAGE%'