- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 892
- Подписчиков на Modrinth
- 4
- версий
- 8
- Обновлён
- 19 сентября 202619 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
ibcarpet
Мод-расширение для carpet. Порт функции insane behavior из JoaCarpet на более новые версии Minecraft.
Insane behavior используется для тестирования RNG предметов-сущностей: он даёт пользователю контроль над генератором случайных чисел, чтобы принудительно получать крайне маловероятные числа, не дожидаясь этого часами.
Сейчас это расширение поддерживает управление RNG предметов-сущностей для следующих действий:
- Ломание вагонетки
- Разрушение блоков поршнем
- Ломание контейнеров (сундук, выбрасыватель, воронка)
- RNG выдачи (раздатчик, crafter, выбрасыватель)
- Снаряды
Использование
Чтобы начать использовать IBCarpet (Insane Behaviors Carpet): /carpet insaneBehaviors
true. Поставь false вместо true, если хочешь всё выключить.
По умолчанию ibcarpet использует тримодальное распределение со значением экстремальности 0.5. Распределения, предоставляемые этим модом, можно настроить через `/carpet ibDistribution `. Распределения управляют тем, как выбираются случайные числа. Читай описание распределений ниже, чтобы понять, когда что использовать.
Распределения
- Minecraft по умолчанию: Треугольное
- Равномерное
- Бимодальное
- IBCarpet по умолчанию: Тримодальное
- Дискретное
Треугольное распределение
Это генератор случайных чисел, используемый большинством стандартных RNG позиции и скорости предметов-сущностей в Minecraft. IBCarpet заменяет эти случайные числа треугольного распределения на пользовательские, которые игроки могут свободно менять под свои нужды. Некоторые из RNG, заменяемых IBCarpet, взяты из равномерного распределения, а не треугольного, но на общую цель IBCarpet это никак не влияет.
Вот текущая реализация RNG треугольного распределения в Minecraft:
default double triangle(final double mean, final double spread) {
return mean + spread * (this.nextDouble() - this.nextDouble());
}this.nextDouble() равномерно генерирует число в диапазоне [0, 1). mean и spread в большинстве случаев — константы, и для понимания того, как использовать IBCarpet, о них беспокоиться не нужно.
Именно this.nextDouble() - this.nextDouble() придаёт форму треугольному распределению. Если запустить это много раз и собрать результаты в гистограмму, где по оси Y — вероятность выпадения чисел из соответствующего диапазона по оси X, она будет выглядеть так:

Форма похожа на треугольник с пиком на 0, и частота снижается по мере того, как RNG генерирует числа ближе к -1 и 1. Именно такое поведение мы видим в ванильном Minecraft. Например, выбрасыватель разбрасывает предметы в случайных направлениях, но время от времени один или несколько предметов улетают дальше остальных. Это происходит потому, что RNG Minecraft выбирает числа из треугольного распределения; оно имитирует нормальное распределение (колоколообразную кривую), где значения дальше от центра крайне маловероятны, но рано или поздно всё же случаются.
Именно поэтому insane behaviors так полезен многим техническим игрокам. Вместо тестирования и долгого ожидания, чтобы поймать крайне маловероятные события, это расширение carpet позволяет ловить такие события гораздо быстрее.
Равномерное распределение

В этом распределении все числа выпадают с одинаковой вероятностью. Это полезно при длительном тестировании конструкции. Равномерное распределение, скорее всего, рано или поздно поймает все крайние случаи.
Биномиальное распределение

Это распределение — полная противоположность треугольному: все маловероятные события из треугольного распределения становятся вероятными в биномиальном. Полезно для проверки только самых редких крайних случаев.
Степень экстремальности этого распределения настраивается командой `/carpet ibBimodalExtremeness . valueможет быть числом от0до1, но не может быть ровно 1. 0означает равномерное распределение, а значения ближе к1— «очень крайние значения». Значение экстремальности по умолчанию —0.5`.
Тримодальное распределение

Это распределение похоже на биномиальное, но значения около -1, 0 и 1 выпадают чаще, а не только около -1 и 1. Биномиальное распределение плохо покрывает крайние значения по осям. Например, когда предмет выбрасывается из раздатчика, он получает случайный вектор скорости по осям X и Z. Биномиальное может лишь повысить вероятность того, что и X, и Z окажутся крайними, но не может повысить вероятность только одной оси за раз. Это значит, что в таком случае при высокой экстремальности биномиальное распределение полезно только для проверки предметов, выбрасываемых по диагонали, и может пропустить крайние случаи, возникающие при движении предметов параллельно осям мира.
Степень экстремальности этого распределения настраивается командой `/carpet ibTrimodalExtremeness . valueможет быть числом от 0 до 1, но не может быть 1.0означает равномерное распределение, а значения ближе к1— «очень крайние значения и центр». Значение экстремальности по умолчанию —0.5`. Учтите, что это значение влияет на распределение меньше, чем значение экстремальности биномиального распределения на своё.
Дискретное распределение

В отличие от других распределений, дискретное не является непрерывным. Оно выбирает число случайно из заранее заданного набора возможных чисел. Этот набор настраивается командой `/carpet ibDiscreteCuts `. Лучше показать закономерность, чем объяснять, как генерируются дискретные случайные числа в IBCarpet.
Вот закономерность:
- Cut = 0, возможные числа —
[0, 1] - Cut = 1, возможные числа —
[0, 0.5, 1] - Cut = 2, возможные числа —
[0, 0.333..., 0.666..., 1] - Cut = 3, возможные числа —
[0, 0.25, 0.5, 0.75, 1]
Возможные числа — это как равномерно нарезанный торт. Промежуток между каждым разрезом становится меньше с ростом числа разрезов. Из этого набора возможных чисел и выбирается сгенерированное число. По мере стремления числа разрезов к бесконечности распределение становится равномерным.
Дискретное распределение полезно для быстрой проверки большинства возможных крайних случаев. Поскольку у него ограниченный набор возможных чисел, очень легко генерировать крайние значения. Помните, что дискретное распределение помогает игрокам быстро получать множество важных и уникальных крайних значений, но оно не покрывает все возможности.
В отличие от других распределений, это имеет диапазон [-1, 1] (включительно), а не (-1, 1) (исключительно).
Число разрезов по умолчанию — 4. Дискретное распределение заменяет систематический метод генерации случайных чисел, использовавшийся в оригинальном расширении JoaCarpet.
Отличия от JoaCarpet
JoaCarpet генерирует случайные числа похоже на дискретное распределение. Однако есть два главных отличия: дискретное распределение независимо (предыдущая генерация не влияет на текущую), а JoaCarpet не является без памяти (у него есть счётчик, запоминающий, сколько раз вызывался рандом). Подход JoaCarpet — начинать с самых крайних чисел: 0 и 1. Когда счётчик достигает 1, он сбрасывается и автоматически увеличивает число разрезов, чтобы следующая итерация прошла по 0, 0.5 и 1. Одна из главных проблем этого подхода — требуется ручной ввод пользователя для сброса счётчика, и счётчик общий для всех событий рандомизации предметов. Если у вас несколько раздатчиков делают одно и то же, некоторые из них могут никогда не попасть в крайние случаи. После того как безумное поведение JoaCarpet поработает часами, можно столкнуться с тем, что раздатчик выбрасывает предметы практически в одно и то же место. Это происходит потому, что значение «разрезов» становится слишком большим, и шаг приращения между каждым выбросом предмета почти равен 0.
Частые вопросы
Как установить IBCarpet?
Установите Fabric под свою версию Minecraft, скачайте IBCarpet под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть IBCarpet?
У IBCarpet есть сборки для Minecraft 1.21.11, 26.1.2–26.3.
Нужен ли IBCarpet на сервере?
Ставится только на сервер; игрокам ставить не нужно