Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Работа с конфигом

Studenikin

Старожил
Пользователь
Баллы
123
Имя в Minecraft
stuvanya
Пишу (а вернее полностью переписываю) плагин для bungeecord, который перебрасывает игрока на другой сервер при кике, не знаю как реализовать правильно чтение из конфига
Java:
        if(ev.getPlayer().getServer().getInfo() == this.plugin.getProxy().getServerInfo(this.plugin.getConfig().getString("/*параметр from*/")){
            ServerInfo kickTo = this.plugin.getProxy().getServerInfo(this.plugin.getConfig().getString("/*параметр to*/"));
              if(kickedFrom == null || !kickedFrom.equals(kickTo)) {
                     ev.setCancelled(true);
                     ev.setCancelServer(kickTo);
                     }
        }else{
            ServerInfo kickTo = this.plugin.getProxy().getServerInfo(this.plugin.getConfig().getString("defaultserver"));
              if(kickedFrom == null || !kickedFrom.equals(kickTo)) {
                     ev.setCancelled(true);
                     ev.setCancelServer(kickTo);
                     }
        }
конфиг:
YAML:
defaultserver: "hub"
servers:
   1:
      from: "sg"
      to: "sghub"
   2:
      from: "sg2"
      to: "sghub"
   3:
      from: "sg3"
      to: "sghub"
#может повторяться несколько раз
 
Последнее редактирование:
то есть, если игрока кикает с сервера sg или sg2 его перебрасывает на сервер sghub, если с любого другого сервера, то его перебрасывает на сервер hub
 
Возьми все секции из конфига и перебирай.
 
я просто не знаю, как сделать так, чтобы можно было добавлять неограниченное количество параметров
 
Из старого плагина вытащил
Java:
        for(int i = 0; config.isSet("anomalies."+i); i++)
        {
            String name;
            int x,y,z;
            World world = getServer().getWorld(
               config.getString("anomalies."+i+".world"));
            name = config.getString("anomalies."+i+".name");
            x = config.getInt("anomalies."+i+".x");
            y = config.getInt("anomalies."+i+".y");
            z = config.getInt("anomalies."+i+".z");
               
            Location loc = new Location(world, x, y, z);
           
            Anomaly anom = Anomaly.valueOf(name);
             
            anomalies.put(loc, anom);
        }
Думаю, разберёшься.
Есть ещё один способ, но я не помню его.
 
@Plasticable у тебя только "anomalies.N", где N = любое число. А если нужно именные?
@Studenikin см. сорцы TPPoint.
EventHandlers->PlayerMove
В подписи.
 
Из старого плагина вытащил
Java:
        for(int i = 0; config.isSet("anomalies."+i); i++)
        {
            String name;
            int x,y,z;
            World world = getServer().getWorld(
               config.getString("anomalies."+i+".world"));
            name = config.getString("anomalies."+i+".name");
            x = config.getInt("anomalies."+i+".x");
            y = config.getInt("anomalies."+i+".y");
            z = config.getInt("anomalies."+i+".z");
              
            Location loc = new Location(world, x, y, z);
          
            Anomaly anom = Anomaly.valueOf(name);
            
            anomalies.put(loc, anom);
        }
Думаю, разберёшься.
Есть ещё один способ, но я не помню его.
спасибо за помощь, а можете прикрепить конфиг, с которым он работает?
 
спасибо за помощь, а можете прикрепить конфиг, с которым он работает?
YAML:
anomalies:
  '0':
    world: world
    x: 210.0
    y: 76.0
    z: 284.0
    name: TRAMPLINE
  '1':
    world: world
    x: 208.0
    y: 76.0
    z: 282.0
    name: TRAMPLINE
  '2':
    world: world
    x: 216.00285747487138
    y: 76.0
    z: 283.2510255972929
    name: FIRE
  '3':
    world: world
    x: 213.0
    y: 76.0
    z: 278.0
    name: FIRE
  '4':
    world: world
    x: 213.0
    y: 76.0
    z: 272.0
    name: FIRE
 
YAML:
anomalies:
  '0':
    world: world
    x: 210.0
    y: 76.0
    z: 284.0
    name: TRAMPLINE
  '1':
    world: world
    x: 208.0
    y: 76.0
    z: 282.0
    name: TRAMPLINE
  '2':
    world: world
    x: 216.00285747487138
    y: 76.0
    z: 283.2510255972929
    name: FIRE
  '3':
    world: world
    x: 213.0
    y: 76.0
    z: 278.0
    name: FIRE
  '4':
    world: world
    x: 213.0
    y: 76.0
    z: 272.0
    name: FIRE
В общем, вот что у меня получилось, ошибка с isSet - "This metod is undefined"
Java:
         for(int i = 0; this.plugin.getProxy().getServerInfo(this.plugin.getConfig().isSet("servers."+i)); i++){
           if(ev.getPlayer().getServer().getInfo() == this.plugin.getProxy().getServerInfo(this.plugin.getConfig().getString("servers."+i+".from"))){
               ServerInfo kickTo = this.plugin.getProxy().getServerInfo(this.plugin.getConfig().getString("servers."+i+".to"));
               if(kickedFrom == null || !kickedFrom.equals(kickTo)) {
                   ev.setCancelled(true);
                   ev.setCancelServer(kickTo);
               }
           }
         }

ап
 

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

Назад
Верх