Исходный код uSkyBlock

Тема в разделе "Полезная информация / Гайды", создана пользователем Empathy, фев 18, 2019.

Статус темы:
Закрыта.
  1. Empathy

    Игрок

    Регистрация:
    май 21, 2018
    Сообщения:
    109
    Симпатии:
    39
    Привет всем! Сегодня хочу научить всех, как добраться до исходного кода uSkyBlock - плагина, отвечающего за структуру островов на SkyTech. Некоторым игрокам это, по идее, будет весьма полезно - ну а другие, возможно, просто хотят посмотреть, как там всё устроено. В любом случае, гайд довольно простой - давайте приступим!

    Шаг 1. Google
    Заходим на следующий сайт: www.google.com
    Посередине будет большое текстовое поле. Этот сайт позволяет нам найти любую строку текста в большинстве интернета - "поисковик", так его называют. Так как нам нужен исходный код uSkyBlock, а плагин написан англоязычными программистами, то в поле забьём "uSkyBlock source code" ("uSkyBlock исходный код").
    [​IMG]
    Далее, нажимаем Enter (кнопка на клавиатуре справа от букв, большая такая - иногда на ней нарисована стрелка вниз и влево), либо на "Google Search" ("Поиск в Google" если у вас Русский язык).

    Шаг 2. GitHub
    После того, как Google выдаст нам результаты, видим следующее окно:
    [​IMG]
    Первый результат - страница плагина в GitHub. Нажимаем на него.
    [​IMG]
    Этот сайт создан для того, чтобы разработчики различных программ хранили там исходный код своих проектов ("репозитории"). Например, исходный код uSkyBlock хранится в репозитории "rlf/uSkyBlock". Но, одна из особенностей этого сайта заключается в том, что можно хранить несколько разных версий проекта одновременно в одном репозиторие - это называется "ветки". Основная ветка по умолчанию стоит на новую версию (для версии Minecraft 1.9), но, так как на нашем любимом SkyTech версия 1.7.10, то нам нужно именно её и выбрать (а точнее, 1.7.9, т.к. отдельной версии для 1.7.10 в репозитории нет).
    Для этого, кликаем на списке веток:
    [​IMG]
    И нас переносит на версию 1.7.9:
    [​IMG]
    Теперь, можно запросто скачать исходный код! Для этого, кликаем на зелёной кнопке, и выбираем формат ZIP:
    [​IMG]
    После этого, скачанный файл-архив можно будет открыть любым архиватором, чтобы достать оттуда сам код. Я советую использовать WinRAR или 7-Zip, ну, а если у вас Windows 10 - то этот файл можно открыть простым проводником! Там и будет лежать исходный код.

    На этом гайд закончен. Спасибо за внимание!
     
  2. Empathy

    Игрок

    Регистрация:
    май 21, 2018
    Сообщения:
    109
    Симпатии:
    39
  3. Empathy

    Игрок

    Регистрация:
    май 21, 2018
    Сообщения:
    109
    Симпатии:
    39
    Как бонус, сразу напишу что надо изменить чтобы пофиксить надписи на предметах.

    В src/main/java/us/talabrek/ultimateskyblock/event/ItemDropEvents.java, в функции addDropInfo, неплохо было бы добавить проверку того, есть ли уже надпись на предмете. Что-то вроде
    Код:
    if (lore.contains(tr("Owner: {0}", player.getName())) {lore.add(tr("Owner: {0}", player.getName()));}
    на линии 72.
    Также, неплохо было бы полностью удалить линию 61, либо хотя бы добавить проверку того, есть ли у игрока статус - из-за того, что предметы сохраняются, надписи на предметы добавляются несмотря на то что они не выпадают в мир. При первом варианте, если кто-то без сохранения инвентаря умрёт на чужом острове, то его предметы сможет поднять кто угодно. Второй вариант будет посложнее сделать, но я в вас верю) (сам бы подсказал что именно поменять, но, насколько я знаю, сохранение инвентаря добавлено собственным плагином МВ, который написал Ник - кода у меня нет)


    Либо можно вообще полностью удалить ItemDropEvents.java, что позволит кому угодно выкидывать и поднимать что угодно на любом острове. Тогда будет полная анархия, но лично я не против.
     
  4. Ansl

    Игрок

    Регистрация:
    янв 5, 2020
    Сообщения:
    5
    Симпатии:
    0
    а не проще через intellij idea декомпильнуть и посмотреть код или через Luyten или через Jd-gui?
     
  5. Specter

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

    Регистрация:
    май 21, 2018
    Сообщения:
    47
    Симпатии:
    63
    Уважаемый Empathy! Всей командой разработчиков проекта с огромным интересом прочитали твой гайд.

    Возникли споры относительно 1 пункта: многие из нас предпочитают вводить текст в строку ввода браузера. Однако, после бурного обсуждения сошлись на том, что для неподготовленного пользователя твой вариант предпочтительнее. Тем более что в нём предусмотрены такие передовые решения как возможное нажатие Enter вместо клика мышкой по кнопке поиска.
    Пункт 2 нам показался недостаточно раскрытым - почему не рассмотрены остальные ссылки из поисковой выдачи? Их стоило рассмотреть хотя бы ради примера. А взаимодействие непосредственно с GitHub стоило вынести в отдельный пункт. Определенные сомнения вызвало высказывание "одновременно в одном репозиторие". Для прояснения этого вопроса нам пришлось обратиться к лингвистам. По их словам, правильнее было бы сказать "репозитории". Впрочем, вольности допускаются.
    А вот отсутствие поясняющих стрелочек на скриншотах нас возмутило - каким образом неподготовленный пользователь поймёт, куда нажимать? Общими усилиями (и не без помощи лингвистов) было выяснено, что так называемые "ветки" соответствуют полю "Branch: master" в левом верхнем углу. Отсутствие пояснения может ввести неподготовленного пользователя в заблуждение - к примеру, он может начать искать ветки в ближайшем лесу и заблудиться. А ответственность за это будет целиком и полностью на твоей совести! Этот момент определённо требует доработки.
    Разочаровало отсутствие отдельного пункта гайда, поясняющего как именно найти и открыть скачанный с GitHub файл. Эта задача была нами блестяще решена без помощи квалифицированных сыщиков, однако вызвала определённые затруднения и потребовала привлечения кадров из аналитического отдела. Неподготовленный же пользователь в своих поисках может зайти слишком далеко и, к примеру, повредить системные файлы. Как ты понимаешь, такой исход тоже крайне нежелателен. Стоит это поправить. Как бонус, можно рассказать про особенности скачки файлов в различных браузерах - всплывающие окна порой вводят пользователей в ступор.
    Бонусная часть у нас вызвала недоумение. Почему-то файл с отредактированным твоим способом кодом не вносит никаких изменений в работу плагина. Было испробовано несколько вариантов: залить файл на сервер (в различные папки, включая папку плагина), залить на сервер корневую папку, скачанную с сайта (это было крайне нелегко - пришлось воспроизводить структуру папок прямо на сервере и вручную раскидывать файлы, очень обидно, что это не дало результата), залить на сервер пересобранный архив с отредактированным файлом (также в различные папки). Один из самых одиозных наших программистов даже смог открыть .jar-файл плагина и засунуть туда отредактированный файл - к сожалению, тоже не сработало. В расстроенных чувствах, мы решили приостановить работу над технической частью проекта до получения разъяснений этого момента.
    Надеемся на скорый ответ и дополнение гайда, спасибо!
     
    daniel1385, stepmaster, Christmas и ещё 1-му нравится это.
  6. Specter

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

    Регистрация:
    май 21, 2018
    Сообщения:
    47
    Симпатии:
    63
    А теперь серьёзно. Есть аж целых 4 причины, по которым это до сих пор не сделано:
    1. uSkyBlock - большой плагин, к тому же версия под 1.7.10 сильно устарела и давно не поддерживается автором плагина. Сборка его даже с готовых исходников скорее всего даст кучу проблем. Это явно не стоит фикса одного незначительного визуального бага, который фиксится если выкинуть и подобрать предмет, не находишь?
    2. Игроки в целом благосклонно к этому относятся, некоторым это даже нравится - лишний способ подчеркнуть, что предмет твой.
    3. У нас стоит модифицированная версия uSkyBlock, которой (а тем более её исходников) нет в открытом доступе. Делать полный рекомпил такого плагина - практически самоубийство, хоть мне и приходилось подобным заниматься. Можно модифицировать конкретный класс плагина, но оно всё равно не стоит настолько мелкого бага (особенно учитывая пункт 2).
    4. Изменение нативной механики работы плагина (а дописывание лора - как раз такая механика) всегда может привести к куче серьёзых последствий - никто никогда не узнает, что и по какой причине сделал его автор и какие механики на это завязаны. Плагин большой и сбои могут вылезти где угодно - оно снова того не стоит.
    Но мб как-нибудь на досуге я это поправлю, посмотрим (в любом случае не собирая для этого полный проект).

    В любом случае спасибо автору за проделанную поисковую работу (на уровне профессионального сыщика, я бы сказал), а также за подход к делу с юмором - немного скрасил трудовые будни)

    Закрыто.

    P.S.
    Рекомпилить плагин уровня uSkyBlock с помощью JDCore? Удачи, чё)
    Тут даже ферн вряд ли справится.
     
    #6 Specter, янв 10, 2020
    Последнее редактирование: янв 10, 2020
    daniel1385, Ansl и Zeldor нравится это.
Статус темы:
Закрыта.