Search in sources :

Example 1 with Logger

use of com.epicnicity322.epicpluginlib.bukkit.logger.Logger 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);
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Listener(org.bukkit.event.Listener) RegisteredListener(org.bukkit.plugin.RegisteredListener) EssentialsChatPlayerListenerLowest(com.earth2me.essentials.chat.EssentialsChatPlayerListenerLowest) IOException(java.io.IOException) Logger(com.epicnicity322.epicpluginlib.bukkit.logger.Logger) ConsoleLogger(com.epicnicity322.epicpluginlib.core.logger.ConsoleLogger) NotNull(org.jetbrains.annotations.NotNull) IOException(java.io.IOException) PluginManager(org.bukkit.plugin.PluginManager) Field(java.lang.reflect.Field) ChannelsHandler(com.epicnicity322.channelshandler.ChannelsHandler) RegisteredListener(org.bukkit.plugin.RegisteredListener)

Example 2 with Logger

use of com.epicnicity322.epicpluginlib.bukkit.logger.Logger in project PlayMoreSounds by Epicnicity322.

the class UltimateChatHook method onStart.

@Override
protected void onStart() {
    Logger logger = PlayMoreSounds.getConsoleLogger();
    if (!Bukkit.getPluginManager().isPluginEnabled("UltimateChat")) {
        logger.log("[UltimateChat Hook] Addon could not be started because UltimateChat plugin failed to enable.", ConsoleLogger.Level.ERROR);
        PlayMoreSounds.getAddonManager().stopAddon(this);
        return;
    }
    handler = new ChannelsHandler("UltimateChat", this, new ChannelsHandler.ChannelSoundPreventer() {

        @Override
        protected boolean preventReceivingSound(@NotNull Player receiver, @NotNull Player chatter, @NotNull String channel) {
            Set<CommandSender> receiverSet = receivers.get(chatter);
            if (receiverSet == null)
                return false;
            return !receiverSet.contains(receiver);
        }
    });
    // Appending defaults to channels.yml
    if (!ChannelsHandlerAddon.CHANNELS_CONFIG.getConfiguration().contains("UltimateChat")) {
        String data = "\n\nUltimateChat:\n" + "  Local: # This is the local channel, only people nearby can hear it.\n" + "    Enabled: true\n" + "    Cancellable: true # Other plugins might cancel the chat event.\n" + "    Sounds:\n" + "      '1':\n" + "        Options:\n" + "          Radius: 40\n" + "        Sound: ENTITY_ITEM_PICKUP\n" + "    Chat Words: # Like for VentureChat, you can assign a sound to a word as well.\n" + "      pling:\n" + "        Enabled: true\n" + "        Cancellable: true\n" + "        Sounds:\n" + "          '1':\n" + "            Options:\n" + "              Radius: 40\n" + "            Sound: BLOCK_NOTE_BLOCK_PLING\n" + "      can you hear me: # A useful sound so players can know if they are near each other.\n" + "        Enabled: true\n" + "        Cancellable: 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: 20\n" + "            Sound: ENTITY_VILLAGER_TRADE\n" + "\n" + "  Global:\n" + "    Enabled: true\n" + "    Cancellable: true\n" + "    Sounds:\n" + "      '1':\n" + "        Options:\n" + "          Radius: -1\n" + "        Sound: ENTITY_ITEM_PICKUP";
        try {
            PathUtils.write(data, ChannelsHandlerAddon.CHANNELS_CONFIG.getPath());
            logger.log("&eAdded default UltimateChat sound to channels.yml");
            Configurations.getConfigurationLoader().loadConfigurations();
        } catch (IOException e) {
            logger.log("[UltimateChat 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/30/ultimatechat-hook", ConsoleLogger.Level.WARN);
        }
    }
}
Also used : Player(org.bukkit.entity.Player) ChannelsHandler(com.epicnicity322.channelshandler.ChannelsHandler) CommandSender(org.bukkit.command.CommandSender) IOException(java.io.IOException) ConsoleLogger(com.epicnicity322.epicpluginlib.core.logger.ConsoleLogger) Logger(com.epicnicity322.epicpluginlib.bukkit.logger.Logger) NotNull(org.jetbrains.annotations.NotNull)

Example 3 with Logger

use of com.epicnicity322.epicpluginlib.bukkit.logger.Logger in project PlayMoreSounds by Epicnicity322.

the class AddonEventManager method callLoadUnloadEvent.

static void callLoadUnloadEvent(PMSAddon addon, ConsoleLogger<?> logger) {
    for (AddonLoadUnloadEvent event : registeredLoadUnloadEvents) try {
        event.onLoadUnload(addon);
    } catch (Throwable t) {
        logger.log("&eException while calling addon load unload event: " + t.getMessage());
        PlayMoreSoundsCore.getErrorHandler().report(t, "Call addon load unload event exception:");
    }
}
Also used : AddonLoadUnloadEvent(com.epicnicity322.playmoresounds.core.addons.events.AddonLoadUnloadEvent)

Example 4 with Logger

use of com.epicnicity322.epicpluginlib.bukkit.logger.Logger in project PlayMoreSounds by Epicnicity322.

the class RedProtectRegions method onStart.

@Override
protected void onStart() {
    Logger logger = PlayMoreSounds.getConsoleLogger();
    if (!Bukkit.getPluginManager().isPluginEnabled("RedProtect")) {
        logger.log("[RedProtect Regions] Addon could not be started because RedProtect plugin failed to enable.", ConsoleLogger.Level.ERROR);
        PlayMoreSounds.getAddonManager().stopAddon(this);
        return;
    }
    handler = new RegionsHandler("RedProtect", this, new RegionsHandler.InsideChecker() {

        @Override
        protected boolean isPlayerInside(@NotNull Player player, @NotNull String regionId) {
            Region region = RedProtect.get().getAPI().getRegion(player.getLocation());
            if (region == null)
                return false;
            return region.getID().equals(regionId);
        }
    });
    // Adding example to regions.yml.
    if (!Configurations.REGIONS.getConfigurationHolder().getConfiguration().contains("RedProtect")) {
        String data = "\n\n# RedProtect Regions example:\n" + "RedProtect:\n" + "  # Create a section with the ID of the regions you want to add a sound.\n" + "  # ATTENTION: RedProtect's region IDs are the region's name followed by the world's name, with a @ separating\n" + "  #them. So if you want to play a sound for the region with name 'spawn' that is in the world 'world', you\n" + "  #have to create a section like this:\n" + "  spawn@world: #<region name>@<world name>\n" + "    # Loop sound for spawn region.\n" + "    Loop:\n" + "      Enabled: true\n" + "      # The time in ticks to wait before playing the sound again in loop.\n" + "      Period: 100\n" + "      # The delay to wait before playing the FIRST sound.\n" + "      Delay: 0\n" + "      # When a plugin makes so the player can't enter the region, the sound won't play.\n" + "      Cancellable: true\n" + "      # Prevents the default Region Enter sound set in sounds.yml from playing when someone enters this region.\n" + "      Prevent Default Sound: true\n" + "      Stop On Exit:\n" + "        # If you set to play a long sound, it will stop from playing on exit.\n" + "        Enabled: true\n" + "        # The delay to wait before stopping the sound.\n" + "        Delay: 0\n" + "      Sounds:\n" + "        '1':\n" + "          # Your Sound Type or Custom Sound name here.\n" + "          # NBS Song Player addon is also supported to play nbs songs.\n" + "          Sound: BLOCK_NOTE_BLOCK_HAT\n" + "          # Make sure to set a big volume so the sound is heard in the whole region.\n" + "          # Volume 1 is heard as far as 15 blocks.\n" + "          Volume: 1000\n" + "    # Enter sound for spawn region. You can set both a welcoming sound and a looping sound to play\n" + "    #at the same time, but Enter will only play once when someone enters the region.\n" + "    Enter:\n" + "      Enabled: true\n" + "      Cancellable: true\n" + "      Prevent Default Sound: true\n" + "      Stop On Exit:\n" + "        Enabled: true\n" + "        Delay: 0\n" + "      Sounds:\n" + "        '1':\n" + "          Sound: BLOCK_NOTE_BLOCK_PLING\n" + "          Volume: 1000\n" + "    # Leave sound for spawn region.\n" + "    Leave:\n" + "      Enabled: true\n" + "      Cancellable: true\n" + "      # Prevents the default Region Enter sound set in sounds.yml from playing when someone leaves this region.\n" + "      Prevent Default Sound: true\n" + "      Stop On Exit:\n" + "        Enabled: true\n" + "        Delay: 0\n" + "      Sounds:\n" + "        '1':\n" + "          Sound: BLOCK_NOTE_BLOCK_PLING\n" + "          Volume: 1000\n" + "\n" + "  # If you want to add sounds for another region, just copy the example above and paste below, make sure to rename\n" + "  #the section to match your desired region ID. Region and world names are case sensitive, keep that in mind.\n" + "  # Another example:\n" + "  shop@TownWorld:\n" + "    Enter:\n" + "      Enabled: true\n" + "      Sounds:\n" + "        '1':\n" + "          Sound: ENTITY_PLAYER_LEVELUP\n" + "\n" + "# PlayMoreSounds has much more options for sounds, like sound categories, delays and permissions. To see how to\n" + "#use those options, visit the file sounds.yml.\n" + "# The only option I advise to not use in region sounds is Radius, because it would make so players could hear\n" + "#each others region enter/leave events.";
        try {
            PathUtils.write(data, Configurations.REGIONS.getConfigurationHolder().getPath());
            logger.log("[RedProtect Regions] &eAdded example RedProtect region sound to regions.yml. Do /pms rl if you want to use it.");
        } catch (IOException e) {
            logger.log("[RedProtect Regions] Failed to add example to regions.yml configuration. You can find a tutorial on how to set region sounds in PlayMoreSounds forum: https://playmoresounds.freeforums.net/thread/16/redprotect-regions", ConsoleLogger.Level.WARN);
        }
    }
}
Also used : Player(org.bukkit.entity.Player) RegionsHandler(com.epicnicity322.regionshandler.RegionsHandler) Region(br.net.fabiozumbi12.RedProtect.Bukkit.Region) IOException(java.io.IOException) ConsoleLogger(com.epicnicity322.epicpluginlib.core.logger.ConsoleLogger) Logger(com.epicnicity322.epicpluginlib.bukkit.logger.Logger) NotNull(org.jetbrains.annotations.NotNull)

Example 5 with Logger

use of com.epicnicity322.epicpluginlib.bukkit.logger.Logger in project PlayMoreSounds by Epicnicity322.

the class WorldGuardRegions method onStart.

@Override
protected void onStart() {
    Logger logger = PlayMoreSounds.getConsoleLogger();
    if (!Bukkit.getPluginManager().isPluginEnabled("WorldGuard")) {
        logger.log("[WorldGuard Regions] Addon could not be started because WorldGuard plugin failed to enable.", ConsoleLogger.Level.ERROR);
        PlayMoreSounds.getAddonManager().stopAddon(this);
        return;
    }
    container = WorldGuard.getInstance().getPlatform().getRegionContainer();
    handler = new RegionsHandler("WorldGuard", this, new RegionsHandler.InsideChecker() {

        @Override
        protected boolean isPlayerInside(@NotNull Player player, @NotNull String regionId) {
            RegionManager manager = getManager(player.getWorld());
            if (manager == null)
                return false;
            ProtectedRegion region = manager.getRegion(regionId);
            if (region == null)
                return false;
            Location loc = player.getLocation();
            return region.contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
        }
    });
    // Adding example to regions.yml.
    if (!Configurations.REGIONS.getConfigurationHolder().getConfiguration().contains("WorldGuard")) {
        String data = "\n\n# WorldGuard Regions example:\n" + "WorldGuard:\n" + "  # Create a section with the region name, in this example we're using spawn.\n" + "  spawn:\n" + "    # Loop sound for spawn region.\n" + "    Loop:\n" + "      Enabled: true\n" + "      # The time in ticks to wait before playing the sound again in loop.\n" + "      Period: 100\n" + "      # The delay to wait before playing the FIRST sound.\n" + "      Delay: 0\n" + "      # When a plugin makes so the player can't enter the region, the sound won't play.\n" + "      Cancellable: true\n" + "      # Prevents the default Region Enter sound set in sounds.yml from playing when someone enters this region.\n" + "      Prevent Default Sound: true\n" + "      Stop On Exit:\n" + "        # If you set to play a long sound, it will stop from playing on exit.\n" + "        Enabled: true\n" + "        # The delay to wait before stopping the sound.\n" + "        Delay: 0\n" + "      Sounds:\n" + "        '1':\n" + "          # Your Sound Type or Custom Sound name here.\n" + "          # NBS Song Player addon is also supported to play nbs songs.\n" + "          Sound: BLOCK_NOTE_BLOCK_HAT\n" + "          # Make sure to set a big volume so the sound is heard in the whole region.\n" + "          # Volume 1 is heard as far as 15 blocks.\n" + "          Volume: 1000\n" + "    # Enter sound for spawn region. You can set both a welcoming sound and a looping sound to play\n" + "    #at the same time, but Enter will only play once when someone enters the region.\n" + "    Enter:\n" + "      Enabled: true\n" + "      Cancellable: true\n" + "      Prevent Default Sound: true\n" + "      Stop On Exit:\n" + "        Enabled: true\n" + "        Delay: 0\n" + "      Sounds:\n" + "        '1':\n" + "          Sound: BLOCK_NOTE_BLOCK_PLING\n" + "          Volume: 1000\n" + "    # Leave sound for spawn region.\n" + "    Leave:\n" + "      Enabled: true\n" + "      Cancellable: true\n" + "      # Prevents the default Region Enter sound set in sounds.yml from playing when someone leaves this region.\n" + "      Prevent Default Sound: true\n" + "      Stop On Exit:\n" + "        Enabled: true\n" + "        Delay: 0\n" + "      Sounds:\n" + "        '1':\n" + "          Sound: BLOCK_NOTE_BLOCK_PLING\n" + "          Volume: 1000\n" + "\n" + "  # If you want to add sounds for another region, just copy the example above and paste below, make sure to rename\n" + "  #the section to match your desired region name. Names are case sensitive, keep that in mind.\n" + "  # Another example:\n" + "  shop:\n" + "    Enter:\n" + "      Enabled: true\n" + "      Sounds:\n" + "        '1':\n" + "          Sound: ENTITY_PLAYER_LEVELUP\n" + "\n" + "# PlayMoreSounds has much more options for sounds, like sound categories, delays and permissions. To see how to\n" + "#use those options, visit the file sounds.yml.\n" + "# The only option I advise to not use in region sounds is Radius, because it would make so players could hear\n" + "#each others region enter/leave events.";
        try {
            PathUtils.write(data, Configurations.REGIONS.getConfigurationHolder().getPath());
            logger.log("[WorldGuard Regions] &eAdded example WorldGuard region sound to regions.yml. Do /pms rl if you want to use it.");
        } catch (IOException e) {
            logger.log("[WorldGuard Regions] Failed to add example to regions.yml configuration. You can find a tutorial on how to set region sounds in PlayMoreSounds forum: https://playmoresounds.freeforums.net/thread/15/worldguard-regions", ConsoleLogger.Level.WARN);
        }
    }
}
Also used : Player(org.bukkit.entity.Player) RegionsHandler(com.epicnicity322.regionshandler.RegionsHandler) ProtectedRegion(com.sk89q.worldguard.protection.regions.ProtectedRegion) RegionManager(com.sk89q.worldguard.protection.managers.RegionManager) IOException(java.io.IOException) Logger(com.epicnicity322.epicpluginlib.bukkit.logger.Logger) ConsoleLogger(com.epicnicity322.epicpluginlib.core.logger.ConsoleLogger) NotNull(org.jetbrains.annotations.NotNull) Location(org.bukkit.Location)

Aggregations

Logger (com.epicnicity322.epicpluginlib.bukkit.logger.Logger)4 ConsoleLogger (com.epicnicity322.epicpluginlib.core.logger.ConsoleLogger)4 IOException (java.io.IOException)4 Player (org.bukkit.entity.Player)4 NotNull (org.jetbrains.annotations.NotNull)4 ChannelsHandler (com.epicnicity322.channelshandler.ChannelsHandler)2 RegionsHandler (com.epicnicity322.regionshandler.RegionsHandler)2 Region (br.net.fabiozumbi12.RedProtect.Bukkit.Region)1 EssentialsChatPlayerListenerLowest (com.earth2me.essentials.chat.EssentialsChatPlayerListenerLowest)1 AddonLoadUnloadEvent (com.epicnicity322.playmoresounds.core.addons.events.AddonLoadUnloadEvent)1 RegionManager (com.sk89q.worldguard.protection.managers.RegionManager)1 ProtectedRegion (com.sk89q.worldguard.protection.regions.ProtectedRegion)1 Field (java.lang.reflect.Field)1 Location (org.bukkit.Location)1 CommandSender (org.bukkit.command.CommandSender)1 Listener (org.bukkit.event.Listener)1 PluginManager (org.bukkit.plugin.PluginManager)1 RegisteredListener (org.bukkit.plugin.RegisteredListener)1