Модификации: различия между версиями

Материал из PetruCHIO - Mindustry server
Перейти к навигации Перейти к поиску
[досмотренная версия][непроверенная версия]
(Первое упоминание о существовании java модов)
Строка 1: Строка 1:
 
{{Шаблон:Дополнить}}
 
{{Шаблон:Дополнить}}
Модификации — это неотъемлемая часть игры. С помощью них можно добавлять новые жидкости, блоки, руды. Модификации в Mindustry состоят из папки или zip-файла, и с файлом mod.json, а также набора спрайтов и файлов .json, определяющих новый контент.
+
Модификации — это неотъемлемая часть игры. С помощью них можно добавлять новые жидкости, блоки, руды. Модификации в Mindustry состоят из папки или zip-файла, и с файлом mod.json, а также набора спрайтов и файлов .json ''(для плагинов)'' или скомпилированных java-исходников в виде файлов .class ''(для модов)'', определяющих новый контент. Режим java-модов (с возможностью написания собственной логики для игры) на момент сборки 99 поддерживается только в пользовательских сборках.
  
 
'''ANDROID-ВЕРСИЯ ТЕПЕРЬ ПОДДЕРЖИВАЕТ МОДИФИКАЦИИ
 
'''ANDROID-ВЕРСИЯ ТЕПЕРЬ ПОДДЕРЖИВАЕТ МОДИФИКАЦИИ

Версия 09:30, 6 ноября 2019

Write it.pngТут маловато информации
Если есть ещё - принесите её нам в жертву. Нам она нужна. Если по теме, конечно :3

Модификации — это неотъемлемая часть игры. С помощью них можно добавлять новые жидкости, блоки, руды. Модификации в Mindustry состоят из папки или zip-файла, и с файлом mod.json, а также набора спрайтов и файлов .json (для плагинов) или скомпилированных java-исходников в виде файлов .class (для модов), определяющих новый контент. Режим java-модов (с возможностью написания собственной логики для игры) на момент сборки 99 поддерживается только в пользовательских сборках.

ANDROID-ВЕРСИЯ ТЕПЕРЬ ПОДДЕРЖИВАЕТ МОДИФИКАЦИИ

Скачивание специальной версии

Вообще этот пункт на данный момент не обязателен, но если вы хотите самые свежие фиксы загрузчика модов, то можете скачать специальную версию bleeding edge

  1. Тыкаем сюда.

Также есть полуавтоматическое скачивание.

  1. Тыкаем опять сюда.
  2. Ищем и скачиваем Mindustry-BE-Desktop-xxxx.jar, где xxxx — идентификатор версии.

Импорт модификации

Есть три способа импортировать модификацию. И все они простые

1. (только PC-версия) Скопируйте и вставьте папку/файл мода в папку mods Mindustry В Steam это находится в установочном каталоге Mindustry:

steam/steamapps/common/Mindustry/save/mods

Если у вас нет Steam-версии, то путь должен быть следующим:

%appdata%/Mindustry/mods

2. Заархивируйте папку с модификацией (не в отдельную папку, а лишь содержимое)(можете пропустить этот пункт, если мод уже находится в архиве).
2.1. Импортируйте через встроенный файловый менеджер игры: Главное меню→Модификации→Импортировать модификацию. Это не рекомендуется для мододелов, т.к. вам нужно постоянно архивировать в мод.
3.Узнайте адрес к модификации на github и скопируйте имя пользователя+название репозитория.
3.1.Импортируйте через игру:
Главное меню→Модификации→Импортировать GitHub модификацию.

Создание модификации

Hard it.pngПеред созданием НАСТОЯТЕЛЬНО рекомендуем почитать эту статью >>> JSON
Hard it.pngИ ещё эту >>> Git
  1. Переходим в директорию
  • Для Steam:
    steam/steamapps/common/Mindustry/mods
  • Для остальных настольных:
    %appdata%/Mindustry/mods

%appdata%/Mindustry/mods

  1. Создаём папку с любым названием. Желательно латиницей. Пусть название модификации будет Modik.
  2. Создаём папки и файлы так же, как и в древе снизу. Если лень создавать, то можете скачать отсюда.
└── Modik
   ├── content
   │   └── blocks
   │       └── magma.json
   │   └── liquids
   │       └── lava.json
   │   │──items
   ├── mod.json
   ├── sounds
   │   ├── pewpew.mp3
   │   └── pewpew.ogg
   └── sprites
   │   └── blocks
   │   └── liquids

Код

Подсказки!

  • В большинстве случаев используется английский для создания модификаций. Если вы не знаете какой-то блок, то можно нажать сюда
  • Прочитайте руководство по синтаксису JSON.
  • Лучше используйте английский.
  • Всему нужно тип. Всегда.
  • Все блоки, предметы, мехи и т.д. имеют два одинаковых типа. Это name(имя) и description(описание).

Пример:

"name": "Zoloto"
"description":"Золото (для тех, кто не знает английский)"

Блоки

Специальная категория:
blocks Было перемещено сюда для уменьшения высоты страницы.

Предметы

Специальная категория:
item

Переменные Значения Описание
type material Тип предмета, если ему не присвоить значение material, то предмет нельзя загрузить в ядро и использовать его для строительства
name Произвольная cтрока Название предмета, будет отображено в игре.
description Произвольная cтрока Описание предмета, будет отображено в игре.
cost Вещественное число > 0 Цена расчёта стоимости предмета при копировании блоков содержащих его.
color От #000000 до #FFFFFF Цвет предмета, в 16 битном диапазоне цветов. Используйте только HEX цвета.
hardness Натуральное число Жесткость, используется для материалов, добываемых бурами. Чем больше число, тем труднее добыть предмет
alwaysUnlocked false или true При значении true предмет открыт в базе данных
explosiveness Вещественное число > 0 Взрывоопасность предмета
flammability Вещественное число > 0 Возгораемость предмета
radioactivity Вещественное число > 0 Радиоактивность предмета

Жидкости

Специальная категория:
Директория:

   ├── Modik
   ├── content
   │   └── liquids
   │       └── lava.json

liquid

Свойство Описание Примечание
temperature Температура.
0.5 — это комнатная;
0 — очень холодная;
1 — знойная жара.
flammability Воспламеняемость.
Доступные значения: [0;1]
0 — полностью воспламеняется;
Всё, что выше, может загореться при воздействии тепла
0.5+ — очень легко воспламеняется.
viscosity Вязкость (Густота)
1 - Вязкая , желеобразная (При проливании жидкости ,она никогда не пропадёт)
0.5 - Вода (Пропадает через время)
0 - Маскимально жидкая (Моментально пропадает)
heatCapacity Теплоёмкость
количества тепла сохраняемого этой жидкостью.
0.4 — вода (прилично)
Всё, что ниже, вероятно, менее плотно и хуже охлаждает.
explosiveness Сила взрыва жидкости при перенагревании.
0 — никак
1 — ядерная бомба
flameColor Цвет при взрыве жидкости. Используйте только HEX цвета.
color Цвет жидкости. Используйте только HEX цвета.
effect Эффект. Эффекты

Единицы (юниты)

Переменные Значения Описание Примечание
type flyingUnit, groundUnit Тип юнита -
name Произвольная строка Название юнита -
description Произвольная строка Описание юнита -
maxVelocity От 0 до ∞ Оганичение скорости для юнита -
speed От 0 до ∞ Скорость передвижения юнита -
flying true \ false Сможет ли не летающий юнит летать -
health От 0 до ∞ Здоровье юнита 1 = 1
drag От 0 до ∞ Величина отклонения юнита -
engineOffset От 0 до ∞ Направление отклонения юнита -
weaponOffsetY От 0 до ∞ место появления снарядов при выстреле -
engineSize От 0 до ∞ - -
rotatespeed От 0 до ∞ Скорость поворота юнита -
baseRotateSpeed От 0 до ∞ Скорость поворота ног юнита (есле наземный) -
range или attackLength От 0 до ∞ Дальность обнаружения юнитом врагов -
hitsize От 0 до ∞ - -
hitsizeTile От 0 до ∞ - -
shootCone От 0 до ∞ Разброс оружия юнита -
mass От 0 до ∞ Влияет на силу отталкивания юнита или от юнита 1 = 1
targetAir true \ false Сможет ли юнит стрелять по воздушным целям -
rotateWeapon true \ false Будет ли у юнита поварачиватся оружие -
retreatPercent От 0 до ∞ - -
itemCapacity От 0 до ∞ Размер внутреннего хранилища юнита -
toMine "1-ore, 2-ore" Фильтр предметов для добычи Есле 1 руда то указывается сразу за переменной, От 2 до ∞ в массиве
buildPower От 0 до ∞ Скорость постройки блоков юнитом -
Weapon weapon Оружие юнита -
immunities - Имунитеты -
deathSound "1.ogg" Звук смерти -

пример кода со всеми переменными(не советую так делать)

{
	"type": "flyingUnit",
	"name": "Chrome Wraith",
	"description": "Generally annoying and flashy.",
	"maxVelocity": 10,
	"speed": 0.5,
	"drag": 10,                                     // заставляет юнита лететь боком
	"flying": true,
	"health": 90,
	"engineOffset": 5.5,
	"range": 160,
	"weaponOffsetY": 7,                             // отдалило орудия вперёд от юнита
	"engineSize": 5,                                // увеличивает размер огонька с зади
	"rotateSpeed": 16,
	"baseRotateSpeed": 16,
	"shootCone": 16,
	"mass": 1500,
	"targetAir": true,
	"rotateWeapon": true,
	"retreatPercent": 100,
	"itemCapacity": 100,
	"tomine": "copper-ore"
	"buildPower": 80,
	"deathSound": "swings.ogg",
	"weapon": {
		"name": "chrome-blaster",
		"length": 1.5,
		"damage":45,
		"reload": 10,
		"alternate": true,
		"bullet": "lightning"
	}
}

Патроны

Используется в Туррелях

Свойство Описание Примечания
speed Скорость снаряда Вещественное число
damage Урон Вещественное число
bulletWidth Ширина снаряда Вещественное число
bulletHeight Длина снаряда Вещественное число
shootEffect Эффект выстрела Название эффекта
smokeEffect Эффект после выстрела Название эффекта
ammoMultiplier Кол-во снарядов Вещественное число
splashDamageRadius Радиус Взрыва Вещественное число
splashDamage Урон От взрыва Вещественное число

Пример

"Патрон": {			 
       "speed": 3.5,			 
       "damage": 19,			 
       "bulletWidth": 7,			 
       "bulletHeight": 9,			 
       "shootEffect": "shootSmall",
       "smokeEffect": "shootSmallSmoke",
       "ammoMultiplier": 1.0,
       "splashDamageRadius": 20,
       "splashDamage":10
}

Турели

Специальная категория:turret.

Свойство Описание Примечание
name Имя турели.
description Описание турели.
targetAir Турель стреляет по воздушным юнитам. True или False.
targetGround Турель стреляет по наземным юнитам. True или False.
size Размер турели. В блоках.
inaccuracy Разброс.
reload Перезарядка.
shootCone Используется для взрывателя,конусность выстрела.
rotateSpeed Скорость поворота турели.
shoots Выстрелов за раз.
range Дальность полёта пули.

Вот пример:

{
	"type": "burstTurret",
	"name": "minigun",
	"description": "Shoots faster!",
	"targetAir": true,
	"targetGround": true,
	"size": 2,
	"inaccuracy": 2,
	"reload": 10,
	"shootCone": 1,
	"rotateSpeed": 22,
	"shots": 1,
	"range": 110,
	"burstSpacing": 2,
	"ammo": {
		"titanium": {
			"speed": 9,
			"damage": 10,
			"bulletWidth": 2,
			"bulletHeight": 5,
			"shootEffect": "shootSmall",
			"smokeEffect": "shootSmallSmoke",
			"ammoMultiplier": 12
		},
		"silicon": {
			"speed": 8,
			"damage": 12,
			"bulletWidth": 3,
			"bulletHeight": 6,
			"shootEffect": "shootSmall",
			"smokeEffect": "shootSmallSmoke",
			"ammoMultiplier": 10
		},
		"thorium": {
			"speed": 8,
			"damage": 20,
			"bulletWidth": 4,
			"bulletHeight": 7,
			"shootEffect": "shootSmall",
			"smokeEffect": "shootSmallSmoke",
			"ammoMultiplier": 8
		}
	},
	"requirements": [
		{ "item": "lead", "amount": 60 },
		{ "item": "titanium", "amount": 40 },
		{ "item": "copper", "amount": 60 }
	],
	"category": "turret",
	"research": "scatter"
}

Мехи

Чтобы добавить новый мех, надо в папке content создать папку mechs, в ней у нас будет лежать JSON файл.

Свойство Описание Примечание
name Имя меха. -
description Описание меха. -
speed Скорость меха по земле. 1 = 60
boostSpeed Скорость меха по воздуху. 1 = 60
buildPower Скорость строительства. 1 = 60
engineColor Цвет двигателя меха. Используйте только HEX цвета.
flying Летает или нет. Используйте true или false.
health Здоровье меха. 1 = 60 HP
weaponOffsetX Смещение оружия у меха по X. В пикселях.
weaponOffsetY Смещение оружия у меха по Y. В пикселях.
weapon Оружие меха Пишите название текстурки оружия.

1 = 60 означает то, что вместо вашего значения надо написать ваше значение , умноженное на 60, например чтобы у меха было здоровье 120, туда надо написать 2.

Вот пример:

{
	"name": "Имя меха",
	"description": "Описание меха.",
	"speed": 0.6,
	"boostSpeed": 1.5,
	"buildPower": 2.0,
	"engineColor": "666495",
	"flying": false,
	"health": 300,
	"weaponOffsetX": 4,
	"weapon": {
		"name": "Имя оружия",
		"length": 1.5,
		"reload": 4,
		"alternate": false,
		"bullet": "lightning"
	}
}

Оружие

Используется в юнитах и мехах. Указывается как переменная weapon . Возможные свойства:

Свойства Значения Описание примечание
name произвольная строка Название оружия
length От 0 до ∞ -
width От 0 до ∞ -
reload От 0 до ∞ Скорость перезарядки
range От 0 до ∞ Дальность выстрела
alternate True \ False Присутствие или отсутствие альтернативного огня
bullet См. Пули Эффект создаваемый когда происходит выстрел может иметь дополнительные параметры
shots От 1 до ∞ Определяет сколько будет выпущено пулей за выстрел может быть указан второй раз после след. параметра
shotDelay От 0 до ∞ Время перерыва между выстрелами
shotCone От 0 до ∞ Разброс
recoil От 0 до ∞ Отдача от выстрела
ejectEffect См. Эффекты Эффект от выстрела
spacing От 0 до ∞ -
inaccuracy От 0 до ∞ Неаккуратность выстрела
velocityRnd От 0 до ∞ -
shootSound "1.ogg" Звук выстрела
ignoreRotation True \ False -
shake От 0 до ∞ -
Пули

используется в оружии для юнитов\мехов

Эффекты

Эффект Описание
none отсутствует
placeblock Эффект блока
breakblock Эффект уничтожения блока
smoke Эффект дыма
spawn Эффект спавна
tapblock эффект нажатия на блок
vtolhover Эффект вертикального взлёта
unitdrop Эффект падения юнита
unitpickup Эффект взлёта юнита
unitland Эффект посадки юнита
pickup Эффект поднятия
healwave Эффект регенириющий волны
heal Эффект регенерации
landshock -
reactorsmoke Эффект дыма реактора
nuclearsmoke Эффект ядерного дыма
redgeneratespark Эффект красной сгенериваной искры
fuelburn Эффект горения топлива
plasticburn Эффект горения пластика
pulverize Эффект измельчения
pulverizeRed Разновидность эффекта измельчения
pulverizeRedder Разновидность эффекта измельчения
pulverizeSmall Разновидность эффекта измельчения
pulverizeMedium Разновидность эффекта измельчения
purify Эффект очищения
purifyoil Эффект очищения нефти
purifystone Эффект очищения камня
generate -
mine Эффект бурения
mineBig Эффект бурения среднего бура
mineHuge Эффект бурения большого бура
smelt Эффект плавки
teleportActivate Эффект активного телепорта
teleport Эффект телепортации
teleportOut Эффект телепортирования
ripple Эффект ряби, пульсации
bubble Эффект пузыря
launch Эффект запуска
healBlock Эффект лечебного блока
healBlockFull -
healWaveMend Эффект лечебной волны c починкой (?)
overdriveWave Эффект ускоряющей волны
overdriveBlockFull -
shieldBreak Эффект уничтожения щита
hitBulletSmall Эффект попадания маленький
hitFuse Эффект загорания выстрелом
hitBulletBig Эффект попадение большой пулей
hitFlameSmall Эффект попадения маленьким огнём
hitLiquid Эффект выстрела жыдкостью
hitLaser Эффект выстрела лазером
hitLancer Эффект выстрела лансером
hitMeltdown Эффект выстрела испепелителем
despawn -
flakExplosion Эффект взрыва зенитного огня
blastExplosion -
plasticExplosion Эффект взрыва пластика
artilleryTrail Эффект артилерийского хвоста (?)
incendTrail Эффект хвоста зажигательного снаряда
missileTrail Хвост ракеты
absorb Эффект впитывания
flakExplosionBig Взрыв большого зенитного огня
plasticExplosionFlak -
burning Эффект горения
fire Эффект огня
fireSmoke Эффект дыма от огня
steam Эффект тумана или пара
fireballsmoke Эффект дыма огненого шара
ballfire Эффект шара огня
freezing Эффект заморозки
melting Эффект плавления
wet Эффект намокания
oily Эффект нефти
overdriven -
dropItem Эффект выбрасывания предмета
shockwave Эффект ударной волны
bigShockwave Эффект большой ударной волны
nuclearShockwave Эффект взрывной волны от ядерного взрыва
explosion Эффект взрыва
blockExplosion Эффект взрыва блока
blockExplosionSmoke Эффект дыма после взрыва блока
shootSmall Эффект маленького выстрела
shootHeal Эффект регенерирующего взрыва
shootSmallSmoke -
shootBig -
shootBig2 -
shootBigSmoke -
shootBigSmoke2 -
shootSmallFlame -
shootPyraFlame -
shootLiquid -
shellEjectSmall -
shellEjectMedium -
shellEjectBig -
lancerLaserShoot -
lancerLaserShootSmoke -
lancerLaserCharge -
lancerLaserChargeBegin -
lightningCharge -
lightningShoot Эффект выстрела молнией
unitSpawn Эффект спавна юнита
spawnShockwave -
magmasmoke -
impactShockwave -
impactcloud -
impactcloud -
impactsmoke -
dynamicExplosion -
padlaunch -
commandSend -
coreLand Эффект падения ядра

Статус эффекты

Статус эффекты накладываются на некоторый объект на определенное время

Свойство Описание Примечание
none Нет эффекта. -
burning Эффект горения. Наносит урон в течение времени
freezing Эффект заморозки. Замедляет объект и уменьшает его броню
wet Эффект промокания. Делает объект уязвимым к электрическому урону
melting Эффект плавления. Наносит урон в течение времени и замедляет объект
tarred Эффект дегтя. Замедляет объект и делает его уязвимым к огненному урону
overdrived Эффект ускорения. Увеличивает скорость объекта и наносимый им урон
shielded Эффект защиты. Увеличивает броню объекта в 3 раза
boss Эффект босса. Увеличивает броню объекта и его урон в 3 раза
shocked Эффект шока. -
corroded Эффект коррозии. Наносит небольшой урон

Спрайты

При добавлении название согласовывается с .json файлом.

Игра поддерживает только спрайты с разрешением .png .

Таблица размеров спрайта относительно размера блока.

Спрайт Блок
32 х 32 1 х 1
64 х 64 2 х 2
96 х 96 3 х 3
128 х 128 4 х 4

При рисовке юнитов и мехов допускается свободный размер изображения, который будет определять его размер

Расположение спрайтов в моде

   Modik
   └── content
       ├── sprites
       │   ├──blocks   - Спрайты блоков, все текстуры для которых нет подпапок складываюстся сюда.
       |   |  ├──conveyors    -Подпапка для конвееров.
       |   |  ├──drills       -Подпапка для буров.
       |   |  ├──environment  -Подпапка для текстур пола.
       |   |  ├──turrets      -Подпапка для туррелей.
       |   |  └──units        -Подпапка для заводов юнитов.
       │   ├──items    - Спрайты предметов.
       │   ├──mechs    - Спрайты мехов.
       │   ├──units    - Спрайты юнитов.
       │   └──zones    - Спрайты карт.

Мультиязычность

Наверное, самое простое для добавления.

  1. Узнаём специальную категорию созданной вами вещью. Специальная категорию можно узнать в разделе Код. Ниже приведено обрезанное древо.
└── Modik
    ├── bundles
    │   └── bundle.properties
    │   └── bundle_ru.properties
  1. Создаём в папке Modik/bundles файл(если вы не создали ранее).
  • Если хотите добавить строки для английского, то выберите файл bundle.properties
  • Если хотите добавить строки для русского, то выберите файл bundle_ru.properties
  1. Добавляем строку:

СпециальнаяКатегория.НазваниеВещи.name(имя)/description(описание)= <Вставить текст>
Пример. Например, я хочу добавить для жидкости lava название и описание другое на русском.

  1. Переходии в файл bundle_ru.properties
  2. Пишем следующее:
  • liquid.lava.name = Лава
  • Нажимаю Enter
  • liquid.lava.description = Очень горячая жидкость.

Звуки

Учим английский

Было перемещено сюда для уменьшения высоты страницы.