use of com.earth2me.essentials.chat.EssentialsChatPlayerListenerLowest in project PlayMoreSounds by Epicnicity322.
the class EssentialsChatHook method onStart.
@Override
protected void onStart() {
Logger logger = PlayMoreSounds.getConsoleLogger();
PluginManager pm = Bukkit.getPluginManager();
ess = (IEssentials) pm.getPlugin("Essentials");
if (ess == null || !pm.isPluginEnabled("EssentialsChat")) {
logger.log("[EssentialsChat Hook] Addon could not be started because EssentialsChat plugin failed to enable.", ConsoleLogger.Level.ERROR);
PlayMoreSounds.getAddonManager().stopAddon(this);
return;
}
for (RegisteredListener registeredListener : HandlerList.getRegisteredListeners(pm.getPlugin("EssentialsChat"))) {
Listener listener = registeredListener.getListener();
if (listener instanceof EssentialsChatPlayerListenerLowest) {
try {
Field chatStoreField = listener.getClass().getSuperclass().getDeclaredField("chatStorage");
chatStoreField.setAccessible(true);
chatStore = (Map<?, ?>) chatStoreField.get(listener);
} catch (Exception e) {
PlayMoreSoundsCore.getErrorHandler().report(e, "EssentialsChat Hook Addon Error - Could not get field using reflection:");
}
break;
}
}
if (chatStore == null) {
logger.log("[EssentialsChat Hook] Failed to get EssentialsChat's chatStorage map.", ConsoleLogger.Level.ERROR);
PlayMoreSounds.getAddonManager().stopAddon(this);
return;
}
handler = new ChannelsHandler("EssentialsChat", this, new ChannelsHandler.ChannelSoundPreventer() {
@Override
protected boolean preventReceivingSound(@NotNull Player receiver, @NotNull Player chatter, @NotNull String channel) {
return ess.getUser(receiver).isIgnoredPlayer(ess.getUser(chatter));
}
});
// Appending defaults to channels.yml
if (!ChannelsHandlerAddon.CHANNELS_CONFIG.getConfiguration().contains("EssentialsChat")) {
int defaultRadius = ess.getSettings().getChatRadius();
String data = "\n\nEssentialsChat:\n" + " local: # This is the default channel everyone talks.\n" + " Enabled: true\n" + " Sounds:\n" + " '1':\n" + " Options:\n" + " # If you have assigned a radius to local channel in essentials config, make sure to put\n" + " #the right radius here.\n" + " Radius: " + (defaultRadius <= 0 ? "-1" : defaultRadius) + // Essentials use radius 0 for global.
"\n" + " # Essentials makes so only players with this permission receives the message.\n" + " Permission To Listen: 'essentials.chat.receive.local'\n" + " Sound: ENTITY_ITEM_PICKUP\n" + " Chat Words: # Like for VentureChat, you can assign a sound to a word aswell.\n" + " pling:\n" + " Enabled: true\n" + " Sounds:\n" + " '1':\n" + " Sound: BLOCK_NOTE_BLOCK_PLING\n";
if (defaultRadius > 0) {
data = data + " can you hear me: # A useful sound so players can know if they are near each other.\n" + " Enabled: true\n" + " Prevent Other Sounds: # Like in VentureChat you can prevent Chat Sound and Other Chat Words sounds.\n" + " Chat Sound: true\n" + " Sounds:\n" + " '1':\n" + " Options:\n" + " Radius: " + (defaultRadius / 2.0) + "\n" + " Pitch: 1.3\n" + " Sound: ENTITY_VILLAGER_TRADE\n";
}
data = data + "\n" + " shout: # When players send messages starting with !, this channel is heard by everyone.\n" + " Enabled: true\n" + " Sounds:\n" + " '1':\n" + " Options:\n" + " Radius: -1\n" + " Permission To Listen: 'essentials.chat.receive.shout'\n" + " Sound: ENTITY_ITEM_PICKUP\n" + "\n" + " question: # When players send messages starting with ?, this channel is heard by everyone.\n" + " Enabled: true\n" + " Sounds:\n" + " '1':\n" + " Options:\n" + " Radius: -1\n" + " Permission To Listen: 'essentials.chat.receive.question'\n" + " Sound: ENTITY_VILLAGER_TRADE\n";
try {
PathUtils.write(data, ChannelsHandlerAddon.CHANNELS_CONFIG.getPath());
logger.log("&eAdded default EssentialsChat sound to channels.yml");
Configurations.getConfigurationLoader().loadConfigurations();
} catch (IOException e) {
logger.log("[EssentialsChat Hook] Failed to add defaults to channels.yml configuration. You can find a tutorial on how to set a channel sound in PlayMoreSounds's forums: https://playmoresounds.freeforums.net/thread/27/essentialschat-hook", ConsoleLogger.Level.WARN);
}
}
}
Aggregations