Анти-взрыв

Версия Minecraft
1.7.10
API
Forge
7,099
324
1,510
Создаешь свою реализацию ItemEntity, в обработчике события EntityJoinWorldEvent заменяешь ванильную реализацию на свою, если это нужный предмет.
В своем ItemEntity переопредели attackEntityFrom, чтобы он игнорировал урон, если его тип - взрыв.

Ванильная звезда незера не взрывается, можно посмотреть в ней
 

Icosider

Kotliner
Администратор
3,603
99
664
В своем ItemEntity переопредели attackEntityFrom, чтобы он игнорировал урон, если его тип - взрыв.
А не проще ли отслеживать DamageSource? Я так делал для фикса уничтожения предметов молнией. И да, был один модик, в котором была такая же замена, только вот автор не особо постарался и получился халявный спавнер))0)
 
7,099
324
1,510
А не проще ли отслеживать DamageSource?
По эвенту урона сущности? Этот эвент по идее срабатыват только для LivingEntity
И да, был один модик, в котором была такая же замена, только вот автор не особо постарался и получился халявный спавнер))0)
Расскажи о косяках, которые могут сопутствовать кастомной сущности-предмету
 

Icosider

Kotliner
Администратор
3,603
99
664
По эвенту урона сущности? Этот эвент по идее срабатыват только для LivingEntity
А точно, у молнии же своё событие :rolleyes:
Расскажи о косяках, которые могут сопутствовать кастомной сущности-предмету
Ну я делал расширенные сущности-предметы. Из косяков, если стак был больше 127, то рендер тупо пропадал, во всех остальных случаях было всё очень хорошо(это если что, к тому какие были у меня проблемы с кастомным итемЭнтити). А теперь о проблемах, во время спавна, есть вероятность через кликер заполучить ещё одну сущность или же увеличенный дроп. Если же это предмет, то есть вероятность дюпа, через тот же кликер. Вариантов не так много было на практике, но всё же
 
7,099
324
1,510
А как это работает? Почему предметы с ванильной сущностью также легко кликером не дюпаются? А если переопределить метод createEntity у своего Item-а? Чтобы, типо, не заменять сущность в мире, а сразу спаунить свою
 

Icosider

Kotliner
Администратор
3,603
99
664
Всё просто, зачастую не проверяют на то, что сущность мертва. С грибной коровой было тоже самое, но там косяк вроде как форджиков. Да, переопределить можно, но для каждого итема не сделаешь. Хотя лично я, когда делал расширенные стаки, делал именно переопределение метода createEntity ибо были какие-то траблы с событием.
Почему предметы с ванильной сущностью также легко кликером не дюпаются
Проверка на то, что сущность мертва. Вон, можно взять практический любой паблик мод с сущностями, которые как-нибудь могут держать предмет в руке и в большинстве случаев при убийстве с активным кликером, мы получим heldStack в увеличенном количестве
 
7,099
324
1,510

Icosider

Kotliner
Администратор
3,603
99
664
Кликер + убийство
Кликер + ПКМ по какому-нибудь хранилищу(аля рамки)
И даже далеко ходить не нужно, берём паблик мод и просто проверяем) Фиксы довольно простые, но почему-то дюпов с кликером меньше не становится, а со временем всё больше)) И это не говоря уже про контейнеры, пакет хаки с тайлами, дюп через двух игроков(привет тинкеру)

Т.е. событие EntityJoinWorldEvent может вызываться для сущности которая уже мертва? Это похоже на баг форжи
Не совсем. Предположим, у тебя есть сущность "А", она у тебя должна замениться на сущность "Б". Когда спавнится сущность "А", если успеть, кликером можно её убить и получить дроп сущности "А" и в тоже время заспавниться сущность "Б". Я уже подобные дюпы в витчери фиксил и ещё в каких-то модах, уже и не припомню.
 
7,099
324
1,510
Так ведь перед тем, как сущность войдет в мир, вызывается событие EntityJoinWorldEvent и если его отменить, то сущность не войдет в мир. Как можно получить дроп с сущности, которая еще не вошла в мир?
 

Icosider

Kotliner
Администратор
3,603
99
664
Это лучше спрашивать не у меня, а у авторов модов, которые вместо отмены вызывают убийство для сущности. А ещё бывают приколы, когда при убийстве сущности, в onDeath методе вызывается спавн сущности

Мы можем ещё долго мусолить эту тему, но лучше тогда в оффтоп или дс уйти
 
Сверху