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

Как можно реализовать таяние ванильного снега в моде?

Тема в разделе "Оффтопик", создана пользователем profi, 30 ноя 2016.

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

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

    Баллы:
    88
    Нужны идеи, куски кода, или же направление в котором можно копать. Версия 1.7.10.
     
  2. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    А более детально описать результат, которого ты хочешь добиться?
     
  3. Автор темы
    profi

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

    Баллы:
    88
    Снег в майне начинает таять только от источника света в радиусе скольких-то там блоков. Моя идея же в том, чтобы при > 0 градусах в биоме весь снежный покров таял как от того же факела.
     
  4. Zetrok

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

    Баллы:
    66
    Так может сам догадаешься? Это как бЭ не трудно придумать.
     
  5. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    А с чем будет связана температура в биоме? И в биоме ли или всё-таки в конкретном чанке?
    Ты же модом хочешь реализовать, правда? Не плагином?
     
  6. Автор темы
    profi

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

    Баллы:
    88
    Модом, конечно же. Температура уже есть в мк, прописана для каждого биома отдельно, но статична. А я просто изменяю её в зависимости от своих нужд. Но как грамотно прописать таяние снега - не знаю. Поэтому и создал эту тему.
     
  7. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Просто добавь к блоку снега рандом таск таяния при определённой температуре. Профит.
     
  8. Автор темы
    profi

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

    Баллы:
    88
    Как это сделать не создав новый блок? Мне же нужно изменить уже существующий ванильный снег.
     
  9. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Лично я не знаю, как это реализовать. Мы же не можем изменить класс BlockSnow, пытаясь добавить свой кусок в updateTick... или можем?
     
  10. Автор темы
    profi

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

    Баллы:
    88
    Вот и я не совсем понимаю как оверрайдить ванильные свойства блока.
     
  11. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Можем. Ведь в fml сначала грузятся моды, а потом сам мир?
     
    Последнее редактирование: 1 дек 2016
  12. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Вообще-то нет.
     
  13. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Пардон, имел в виду что моды загружаются до мира.
    В любом случае, класс BlockSnow теоретически не должен быть в памяти. Этим можно и воспользоваться - добавить в этот класс метод onTick асмом, в котором и задать нужные действия.
     
  14. Автор темы
    profi

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

    Баллы:
    88
    Спасибо, посмотрим прокатит или нет, отпишусь здесь о результате. Иду курить доки асм'а :whistle:
     
  15. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Лучше этот способ использовать в последнюю очередь, если больше нет никаких вариантов вообще.
     
  16. Автор темы
    profi

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

    Баллы:
    88
    Конкретно у меня других идей нету. Была одна долбанутая - заменить ванильный снег на свой, кастомный. Но возникают новые проблемы, да и муторно. Хотелось бы простого и изящного решения этой проблемы.
     
  17. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Можно поиграть с класслоадером и заменять ванильный класс блока снега на свой.
    Можно просто искать по карте снежные биомы и каждый тик брать из этих биомов один - четыре чанка и случайным образом "топить" снег.
     
  18. Автор темы
    profi

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

    Баллы:
    88
    Я опытный девственник в моддинге, поэтому сомневаюсь что потяну эти методы. Нужно что-то универсальное и простое.
     
  19. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну последний то осилишь точно.
    Подписаться на событие загрузки чанков и проверяешь биом чанка. Если наш биом имеет снег - заносим его координаты (координаты, не чанк) в лист. Ну а после шедулером брать из листа несколько координат, проверять загружены ли чанки, и если верно, то удалять из этих чанков по воле рандома блоки снега, если температура биома выше нуля.
     
  20. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Это не долбанутая - это вообще отбитая. :lol:

    Если бы его еще можно было там найти безболезненно. Или ты будешь просеивать некий объем? :silence:

    А еще подписаться на событие BlockBreak и каждый раз, если это вдруг снег, проверять, является ли чанк все еще чанком, в котором есть снег. А ведь снег из чанка удаляют не только игроки...
    Пожалуй, это самый оптимальный метод, но я о нем только слышал - сам пока не научился.
    Вообще код в ванильном майне писали реально сволочи. Где-то идет проверка на соответствие классу - тогда легко добавить свой блок/предмет/моба через наследование, а где-то идет точечная проверка - и вот это уже геморрой. Например, рендеринг игрока с луком и удочкой идет через if... == Items.bow или if... == Items.fishing_rod...
     

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