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

Помогите Безвайповый переход 1.8.8->1.10.2 (нид хелп)

Тема в разделе "Помощь", создана пользователем Serrrgio, 18 авг 2016.

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

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    Есть сервер, Spigot 1.8.8.
    WorldEdit, HealthBar, PvPTime, Essentials, LogBlock, ClearLag, PlugMan, AutoMessage, AutoGroup, FullBright, MonsterFix, WorldGuard, ProtocolLib, InfoBoardReborn, AutoSaveWorld, AAC, SkinsRestorer, HeadDrops, RandomPort, PermissionsEx, WGExtender, Vault, HideStream, AnBot, SalvageSmelter, EssentialsSpawn, CustomEnchantments, AuthMe, GlobalMarket, ChatEx, ChatGuard
    Планирую перевести на 1.10.2 без вайпа основного мира, ад и энд вайпнуть, ибо новые блоки и т.д., при этом чтобы у игрока ничего не пропало в инвентаре и в основном мире.

    WG и AuthMe привязаны к MySQL.
    приваты WG в энде и аду удалю руками.
    1. в AuthMe
    Код:
    SaveQuitLocation: true
    teleportUnAuthedToSpawn: true
    ForceSpawnLocOnJoinEnabled: false
    Не совсем понятно, при заходе на сервер, AuthMe ТП игрока на спавн для авторизации, после успешной авторизации ТП туда, где игрок был когда вышел с сервера.
    Вопрос, откуда берутся координаты из базы AuthMe или из профиля игрока?
    Если из базы AuthMe, то это поправимо парой SQL запросов.

    2. Essentials, тут все сложнее, в профиле игрока прописаны точки домов. На каждого игрока отдельный файл в формате yaml.
    Как удалить все точки домов в аду и в энде?

    Хлепл ми плиз.

    ЗЫ
    Код:
    $ ls -f ./Essentials/userdata | wc -l
    23340
     
    Последнее редактирование: 18 авг 2016
  2. Хостинг MineCraft
    <
  3. Автор темы
    Serrrgio

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    понял, помощи не дождешься :)
    думал ктонить на коленке напишет класс, который пройдется по всем профилям в essentials userdata, удалит все дома в энде и аду, заодно заменит lastlocation и logoutlocation если они не world на спавн...
    ладно, с этим вопросом закрыли, поставил php yaml экстеншн, написал на чем умею скрипт замены.

    еще вопрос, тема поднималась, но не помню до чего договорились
    смысл запретить игрокам в аду выходить за бедрок (который сверху, юзат жемчуг и ТП за границу мира и строят там фермы золота)
    может обойдется парой строк кода, типа слушать какой-то ивент, проверять мир, проверять высоту игрока, если она выше уровня бедрока - ТП его на спавн...
    ктонить черкнет пару строк?

    или может какие другие варианты, без дополнительных плагинов?
     
  4. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    В аутчме должны бытть координаты я думаю. Дома есс -юзай grep.[DOUBLEPOST=1471531569,1471531476][/DOUBLEPOST]Высоту и мир проверить на изи, мове ивент.[DOUBLEPOST=1471531612][/DOUBLEPOST]отменять ендер перл так же на изи.[DOUBLEPOST=1471531742][/DOUBLEPOST]хотя ворлдбордер никто не отменял, ставь границу по барьеру и все.
     
  5. Автор темы
    Serrrgio

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    я тоже склоняюсь к этому, но эти же координаты есть еще в профиле игрока и в профиле essentials, нужно проверить опытным путем
    grep'ом то я найду, как в файле в yaml структуре вырезать имеено этот дом, и потом сохранить изменения в файл? вот пример профиля essentials
    Код:
    lastAccountName: EnderPro_Elite
    timestamps:
    login: 1471525579633
    logout: 1471525581784
    lastteleport: 1471524134700
    ipAddress: 80.245.118.226
    logoutlocation:
    world: world
    x: -222.47455399682823
    y: 64.0
    z: -160.57768836100652
    yaw: -133.8251
    pitch: -0.8055889
    socialspy: false
    lastlocation:
    world: world
    x: -53792.680988475
    y: 65.0
    z: 61057.4407548283
    yaw: -73.04946
    pitch: 13.350047
    homes:
    u:
    world: world
    x: -20507.413268547352
    y: 64.0
    z: 44074.04417989716
    yaw: -70.62281
    pitch: 11.249867
    d:
    world: world
    x: -4996.265460940499
    y: 64.0
    z: 68013.9100703125
    yaw: -60.566895
    pitch: 30.25758
    o:
    world: world_nether
    x: -2592.4316852198226
    y: 214.0
    z: 5545.596367423523
    yaw: 25.495575
    pitch: 32.850006
    b:
    world: world
    x: -53791.433725305586
    y: 65.0
    z: 61055.94938427696
    yaw: -233.24945
    pitch: 23.250046
    l:
    world: world_the_end
    x: -20.582243940663883
    y: 2.5
    z: 1058.8242694323856
    yaw: -141.99225
    pitch: -9.29871
    a:
    world: world
    x: -68124.5391932468
    y: 79.0
    z: -36292.50589700899
    yaw: -309.65295
    pitch: 23.399975
    money: '166631.0'
    ignore:
    - mega
    - mrsmilezhenia
    - ronnie
    - codor__
    - lololowhka21
    - killer2607
    воспользуюсь советом, наверно так и сделаю.
    отменять перл нужно кучу параметров проверить, куда игрок его бросает и т.д.
    может есть какой-то ивент телепорта, посмотреть куда игрока ТП и отменить если это ад и координаты выше чем бедрок, все же меньше код будет работать чем при мове ивенте...
    про границу не понял, WB у меня плагин не стоит, да и мир без ограничений...
     
  6. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Так он и срабатывает, тот самый телепорт ивент. PlayerTeleportEvent.TeleportCause.ENDER_PEARL[DOUBLEPOST=1471534530,1471534188][/DOUBLEPOST]Как удалишь? Через тот же yaml configuration ведра.
     
  7. Dymeth

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

    Баллы:
    76
    Я, вот, думаю, зачем вообще мир такой высоты, если игрока ограничивают бедроком? Подразумевается же, что он не сможет вылезти. Ну или почему, собственно, бедрок находится так низко по отношению к реальной верхней границе?
    Короче говоря, почему это так странно сделано?
    Что касается блокировки этого дела, то нужно отменять телепортацию в том случае, если материал на новой координате - бедрок, потому что эндерпёрл ну никак не может телепортировать тебя на самый верхний слой. Игрокам по-любому приходится выпрыгивать прямо из блока - т.е. после телепортации оказываются на 1 уровень ниже воздушного.
    Вообще, на самом деле, способов выбираться наверх несколько. Помимо пёрлов знаю следующие. Возможно тоже придётся исправлять.
    1) С корнями тёмного дуба - прорастают на уровень ниже почвы
    2) С каким-то адским забагованным механизмом:
     
  8. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Просто кому то лень было переписывать генератор в аду. Типичный моджанг. Что касается фикса, все тот же мове и телепорт ивент. Изи фикс.
     
  9. Автор темы
    Serrrgio

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    всем спасибо, попробую сделать, отпишусь о результатах
     
  10. Dymeth

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

    Баллы:
    76
    Не кошерно слушать передвижения. Хотя, впрочем, если других решений нет, то выбирать не приходится.
     
  11. Автор темы
    Serrrgio

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    а какие еще есть варианты?
     
  12. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Зависит от реализации.
     
  13. Автор темы
    Serrrgio

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    вот такая реализация получилась, не знаю правильно или нет, я не кодер
    Код:
        public void onPlayerMove(PlayerMoveEvent e){
             if (e.isCancelled() || e.getPlayer() == null) {
               return;
             }
             Player p = e.getPlayer();
             if (p.getWorld().equals(Bukkit.getWorlds().get(1))) {
                 if (e.getTo().getBlockY()>127) {
                     Location spawn = new Location(Bukkit.getWorlds().get(0), -222, 64, -160);
                     p.teleport(spawn);
                 }
             }
     
  14. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Интересно как ты получишь гет плайер нулл в ивенте игрока :D.[DOUBLEPOST=1472327845,1472327749][/DOUBLEPOST]А так в целом норм.
     
  15. Автор темы
    Serrrgio

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    хз, копипаст откуда-то :)
     

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