1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Идея Плагин на отключение чата в мирах.

Тема в разделе "Запросы на разработку плагинов", создана пользователем TheChris, 28 дек 2013.

  1. Автор темы
    TheChris

    TheChris Активный участник

    Баллы:
    48
    Имя в Minecraft:
    ChrisDM
    Всем доброго времени суток!Я бы хотел предложить разработать такой плагин,что бы в указанных мирах отключался чат.Ну он должен поддерживать плагин MultiWorld.
    Надеюсь что какой-то хороший человек рассмотрит моё предложение.
     
    iProger нравится это.
  2. iProger

    iProger Старожил Пользователь

    Баллы:
    103
    Интересная идея
     
  3. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Как-то так: https://www.dropbox.com/s/2fn64mg925cn3u8/SilentWorlds.jar

    Пример конфига.
    Код:
    worlds:
      no-chat:
      - world_nether
    player-name-mask: '&6%player>%&e'
    
    Пара моментов.
    1. Полностью отключить сообщения в чате нельзя. Буду сообщения от плагинов и т.п.
    2. Игроки с пермишеном "silentworlds.chat" могут писать где угодно. И их сообщения видны везде
    3. Поскольку, рассылка происходит "нестандартным" способом, то для вывода имени игрока используется предопределенная маска. Поскольку никогда до этого не писал плагины для чата, то не знаю будет ли Player.getDisplayName возвращать всякие уникальные префиксы в имени, цвета и т.п.

    Код:
    package me.fromgate.silentworlds;
    
    import java.util.ArrayList;
    import java.util.List;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class SilentWorlds extends JavaPlugin implements Listener{
        String playerMask;
        List<String> worldsWithoutChat = new ArrayList<String>();
        @Override
        public void onEnable(){
            loadCfg();
            saveCfg();
        }
        private void loadCfg(){
            playerMask = getConfig().getString("player-name-mask","&6%player>%&e");
            worldsWithoutChat = getConfig().getStringList("worlds.no-chat");
        }
        private void saveCfg(){
            getConfig().set("player-name-mask",playerMask);
            getServer().getPluginManager().registerEvents(this, this);
            getConfig().set("worlds.no-chat", worldsWithoutChat);
            saveConfig();
        }
        private void sendMessageInWorld (Player sender, String msg){
            if (worldsWithoutChat.contains(sender.getWorld().getName())||(!sender.hasPermission("silentworlds.chat"))) return;
            for (Player player : Bukkit.getOnlinePlayers()){
                if (worldsWithoutChat.contains(player.getWorld().getName())||(!sender.hasPermission("silentworlds.chat"))) continue;
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', playerMask.replace("%player%", sender.getDisplayName()))+" "+msg);
            }
        }
        @EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled = true)
        public void onChat(AsyncPlayerChatEvent event){
            sendMessageInWorld(event.getPlayer(),event.getMessage());
            event.setCancelled(true);
        }
    }
     
  4. Автор темы
    TheChris

    TheChris Активный участник

    Баллы:
    48
    Имя в Minecraft:
    ChrisDM
    Ну спасибо :)
    По скольку я только начинаю учить Java, то мне может это пригодиться.
     
  5. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    fromgate, отличная работа! Но действительно существует нюанс: префиксы не будут поддерживаться с других плагинов
     
    Последнее редактирование: 28 дек 2013
  6. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    JustBlender, если плагин знает о существовании метода Player.setDisplayName, то всё должно быть ок ;)
     
    Сникерсни нравится это.
  7. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Значит ок;)
     

Поделиться этой страницей