Everything Burns
Активный0.0
Установок
Последнее обновление
Версии
Everything Burns
Бойтесь огненного апокалипсиса! Эта модификация превращает ваш Minecraft в кошмар выживания, где практически все окружающие блоки способны воспламеняться от малейшей искры.
Как это работает
Модификация кардинально меняет поведение огня в игре. Все стандартные блоки, которые ранее были полностью пожаробезопасными, теперь обретают способность гореть. Прочность зданий и подземных укрытий перестаёт иметь значение - пламя безжалостно пожирает всё на своём пути.
Исключениями остаются только жидкости, блоки подводного типа и непосредственно воздух. Всё остальное становится потенциальным топливом для огненной стихии.
Техническая реализация
Модификация достигается путём прямого воздействия на механику огня через системе миксинов:
@Mixin(FireBlock.class)
public class FireBlockMixin {
public static final TagKey<Block> BURNING_NOT_MODIFIED = TagKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(MOD_ID, "burning_not_modified"));
@ModifyReturnValue(at = @At("RETURN"), method = "getBurnOdds(Lnet/minecraft/world/level/block/state/BlockState;)I")
private int modifyBurnOdds(int original, @Local(argsOnly = true) BlockState state) {
return original <= 0 && !state.is(BURNING_NOT_MODIFIED) && state.getFluidState().isEmpty() && !state.isAir() ? 30 : original;
}
@ModifyReturnValue(at = @At("RETURN"), method = "getIgniteOdds(Lnet/minecraft/world/level/block/state/BlockState;)I")
private int modifyIgniteOdds(int original, @Local(argsOnly = true) BlockState state) {
return original <= 0 && !state.is(BURNING_NOT_MODIFIED) && state.getFluidState().isEmpty() && !state.isAir() ? 60 : original;
}
}
Этот код гарантирует, что любой блок, не имеющий изначальной устойчивости к огню и не являющийся жидкостью или воздухом, получает шансы на возгорание и поддержание горения.