Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Не заменяется & на цвета и не только

Тема в разделе "Разработка плагинов для новичков", создана пользователем _MasterCapeXD_, 28 мар 2017.

Статус темы:
Закрыта.
  1. Автор темы
    _MasterCapeXD_

    _MasterCapeXD_ Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    _MasterCapeXD_
    Проблема в том, что в моем коде все вроде верно, но не заменяет & на цвета.Кроме того %playername% тоже не заменяется.Просто все не заменяется.Не могу понять, в чем проблема.В другом классе этот код работает, а в этом нет.
    КОД:
    Код:
            Player p = e.getPlayer();
      
            //PermissionsEx
            PermissionUser user = PermissionsEx.getUser(p);
      
            String msg = plugin.getConfig().getString("options.joinmessage");
      
            msg.replaceAll("%playername%" , e.getPlayer().getName());
            msg.replaceAll("%pexprefix%", user.getPrefix());
            msg.replaceAll("%pexsuffix%", user.getSuffix());
            msg.replaceAll("&", "\u00a7");
      
            plugin.getConfig().set("options.joinmessage", msg);
            plugin.saveConfig();
    Пробовал и msg.replace и msg.replaceAll.

    Ну и да, хотел бы спросить, каким макаром можно проверить, указана ли локация в конфиге.Так как при заходе игрока его надо туда телепортировать, а секция пустая, пока он не установит через команду точку.И выводит ошибку, если локация в конфиге не установлена. Этот код не работает:
    Код:
            if((plugin.getConfig().getString("options.LobbyLocation.world").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.x").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.y").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.z").isEmpty())) return;
           
            Location tploc = plugin.ConfigToLocation();
            p.teleport(tploc);
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    некая начальная локация Location loc = e.getPlayer().getWorld().getSpawnLocation();
    записываем ее если нет, или получаем из конфига если есть this.plugin.getConfig().getString("options.LobbyLocation.world",тут формат твоей локации);[DOUBLEPOST=1490702724,1490702433][/DOUBLEPOST]Что по первому, вообще не понял зачем и почему. Сотри строчки
    plugin.getConfig().set("options.joinmessage", msg);
    plugin.saveConfig();
     
    Последнее редактирование: 28 мар 2017
  4. Автор темы
    _MasterCapeXD_

    _MasterCapeXD_ Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    _MasterCapeXD_
    Был, как вариант, но я бы не хотел вообще телепортировать, если в конфиге в координатах пусто. Только что идея появилась, может получить локацию игрока, и если пусто, то телепортировать на ту же локацию где он и есть.Но тогда, через getString().isEmpty() сработает как проверка на пустоту в конфиге?[DOUBLEPOST=1490703570,1490703455][/DOUBLEPOST]
    Ну, можно попробовать, но в другом классе такой код спокойно работает и не машает замене цвета:
    Код:
            Player p = (Player) sender;
     
            if(sender instanceof Player)
            {
                if(cmd.getName().equalsIgnoreCase("setlobby"))
                {
                    if(p.hasPermission("clobby.setlobby"))
                    {
                 
                        LocationToConfig(p.getLocation());
                 
                        String set = getConfig().getString("options.LobbyLocation.lobbySet");
                        set = set.replace("&", "\u00a7");
                        getConfig().set("options.leavemessage", set);
                        saveConfig();
                 
                        p.sendMessage(set);
                 
                    }
                }
            }
     
    Последнее редактирование: 28 мар 2017
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    А ты открой конфиг после этого действия, сам все поймешь.
     
  6. Автор темы
    _MasterCapeXD_

    _MasterCapeXD_ Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    _MasterCapeXD_
    Окей, сейчас времени нет, потом попробую
     
  7. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    msg = msg.replace(...), ибо строки -- иммутабельны.
     
  8. Автор темы
    _MasterCapeXD_

    _MasterCapeXD_ Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    _MasterCapeXD_
    Ааааай, какой я слепой...Точно, спасибо![DOUBLEPOST=1490878252,1490795544][/DOUBLEPOST]Посоветуйте пожалуйста, как корректно сделать проверку на отсутствие локации в конфиге. Данный код не прокатывает.Мне нужно, чтобы игрока телепортировало, только если строка в конфиге не пуста:
    Код:
            if((plugin.getConfig().getString("options.LobbyLocation.world").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.x").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.y").isEmpty()) || (plugin.getConfig().getString("options.LobbyLocation.z").isEmpty())) return;
          
            Location tploc = plugin.ConfigToLocation();
            p.teleport(tploc);
    Часть конфига, отвечающего за сохранение координат:

    Код:
    options:
      LobbyLocation:
        world:
        x:
        y:
        z:
        lobbySet: '&aLobby location set!'
     
  9. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Код:
    if (plugin.getConfig().getConfigurationSection("options.LobbyLocation").isSet("world")){
    //  todo
    }
    + твоя проверка на пустоту

    должно работать
     
  10. Автор темы
    _MasterCapeXD_

    _MasterCapeXD_ Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    _MasterCapeXD_
    Все заработало! Спасибо большое! Тема закрыта
     
Статус темы:
Закрыта.

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