About Mods

Synopsis

Mods for the Mod Launcher are made up of a series of configuration files and folders.

They can be compiled and shipped as a single LMLM file. These files can be decompiled by the end user as well if the developer allows it.

Structure

Mods may contain the following:

  • Meta.ini: The central configuration file for the entire mod. This defines the meta information for the mod, what hacks it requires, who made it and more.
  • Hack Configuration Files: Some requirable hacks have or require configuration files in the root of the mod. These are either INI files or XML files depending on the hack.
  • CustomFiles folder: Most mods have a CustomFiles folder. Files in this folder will override the ones found in the game's install folder, allowing mods to modify files without touching the game install.
  • Resources folder: Some mods also have a Resources folder. This is the intended place for Lua scripts used by CustomFiles and other resources used by those scripts.

Configuration

This is an example configuration a mod with comments explaining how it works.

This configuration file goes into Meta.ini in the root of your mod.

We do not recommend copying this entire example into your mod. We recommend only using what is necessary.

Due to the amount of properties and sections in Meta.ini this documentation is broken up into sections.

[Miscellaneous] Section

This section contains a wide variety of information about the mod.

[Miscellaneous]
; Title
;	The title of the mod that displays in the launcher. 
;	Optional.
Title=Example Mod

; InternalName
;	The internal name of the mod. 
;	This is used for directory names, play history and more. 
;	Optional but strongly recommended.
InternalName=ExampleMod

; Description
;	A description of the mod. Use \n for a new line. 
;	Optional.
Description=An example mod.\nText on another line

; Version
;	Set a version for the mod. 
;	Optional.
Version=1.0

; Category
; 	A category of the mod. Optional.
;	Repeat for multiple categories.
Category=Car Mods
Category=Character Mods

; Main
;	Set whether or not the mod is a main mod. 
;	Gives the mod it's own saved games and screenshots folders. 
;	Optional, defaults to 0.
Main=1

; Framework
;	Set whether or not the mod is a framework.
;	This makes it so the mod cannot be enabled on it's own.
;	Instead, it must be required by a mod by RequiredFramework.
;	Optional, defaults to 0.
Framework=0

; Disabled
;	Set whether or not the mod is disabled.
;	This will hide the mod from the launcher entirely.
;	Optional, defaults to 0.
Disabled=0

; Unreleased
;	Set whether or not the mod is on the unreleased tab.
;	Useful to hide secret mods from your main mods list.
;	Optional, defaults to 0.
Unreleased=0

; HideFromPlayHistory
;	Hides the mod from Play History and hides the title from Discord Rich Presence.
;	Optional, defaults to 0.
HideFromPlayHistory=0

; SettingsWidth / SettingsHeight
;	Set the width and height of the mod's settings window.
SettingsWidth=200
SettingsHeight=200

; AuthorGroup
;	Define an author group.
;	Repeat for each author group.
;	Not required to use groups but this allows you to control the order.
AuthorGroup=Vehicle Designer
AuthorGroup=Character Designers
AuthorGroup=Frontend Designer

; RequiredHack
;	Require a hack.
;	Repeat for each required hack.
RequiredHack=CustomFiles
RequiredHack=CustomHeadlights

; OptionalHack
;	Require a hack if it exists, otherwise this will be ignored.
;	Repeat for each optional hack.
OptionalHack=CustomSomething

; RequiredLauncher
;	Set the minimum required Mod Launcher version for the mod to work.
;	Usually based on which hacks/features the mod requires.
;	Optional but strongly recommended.
RequiredLauncher=1.18

; SupportedMod
;	Forces compatibility between this mod and the specified mod.
;	This mod will override the supported mod. 
;	Repeat for each supported mod.
SupportedMod=3DPhoneBoothPreviews

; ConflictingMod
;	Force a specific mod to conflict with this mod.
;	Recommended only for use where absolutely nessecary.
ConflictingMod=SomeModThatBreaksThisOne

; RequiredFramework
;	Require the specified framework to be installed in any mods folder for the mod to work. 
;	Repeat for each required framework.
RequiredFramework=AdditionalCharacters2

; OptionalFramework
;	Require the specified framework if it exists in any mods folder, otherwise will be ignored. 
;	Repeat for each optional framework.
OptionalFramework=AdditionalDynaloadCarModels

; SupportsEnglish, SupportsDemo, 
; SupportsInternational, SupportsBestSellerSeries
;	Set whether or not a mod supports specific versions of the game.
;	Defaults to 1 for all versions except the demo.
SupportsEnglish=1
SupportsDemo=0
SupportsInternational=1
SupportsBestSellerSeries=1

; DefaultLanguage, DefaultLanguageFrench,
; DefaultLanguageGerman, DefaultLanguageSpanish
;	Set the default language for the CustomText hack for each localization of the game.
;	This is only used if a mod has a CustomText folder with multiple CustomText INI files inside it.
;	Optional.
DefaultLanguage=English
DefaultLanguageFrench=French
DefaultLanguageGerman=German
DefaultLanguageSpanish=Spanish

[Author] Section

This section adds information about the author of the mod.
Repeat this section if there are multiple authors.

[Author]
; Name
;	The name of the author.
Name=Loren "Duck" Goodwin

; Website
;	The author's website. Must begin with http:// or https://. 
;	Optional.
Website=https://donutteam.com/

; Notes
;	Extra notes about the author. 
;	Optional.
Notes=A guy who made some things.

; Group
;	The name of the group(s) the author will be listed in.
;	Repeat for each group.
;	Optional.
Group=Vehicle Designers

; Credits
;	Set whether or not the author should be on the Credits tab instead of the About tab. 
;	Optional, defaults to 0.
Credits=0

[Setting] Section

This section can be used to add a setting to the mod that can be used in CustomFiles Lua Scripts.
Repeat this section to add multiple settings.

General
[Setting]
; UncompiledOnly
;	Set if the setting will be hidden and disabled when the mod is compiled. 
;	Optional, defaults to 0.
UncompiledOnly=0

; Type: 
;	Specify the type of setting.
; 		MultipleChoice
; 		TickBox
; 		Number
; 		Text
; 		Label
; 		Colour
Type=MultipleChoice

; Page 
;	Specify what page the setting is on. 
;	This allows you to organize your settings by pages.
;	Optional.
Page=Gameplay

; Group
;	Specify what group the setting should be in.
;	This allows you to categorize settings further by having groups on pages.
;	Optional.
Group=Car Settings

; Title
;	The display name of the setting. 
;	Defaults to the Name of the setting (unless it's a Label setting where the Title is required).
Title=Default Car

; Tooltip
;	The tooltip to display when hovering over the setting.
Tooltip=This setting allows you select a default car.

; NoReset
;	Specify if the value of the setting will reset when the user resets their settings to the defaults.
;	Optional, defaults to 0.
NoReset=0
MultipleChoice Settings

These properties are specific to a MultipleChoice setting.

; Name
;	The internal Name of the setting.
;	Used when using GetSetting in CustomFiles Lua scripts.
Name=DefaultCar

; Option
;	Specify an option for the the MultipleChoice setting.
;	Requires atleast one Option.
Option=Family Sedan
Option=Ferrini - Red

; Text
;	Specify if the value of the setting should be returned as text when requested by CustomFiles.
;	Optional, defaults to 0.
Text=0

; Default
;	The default value of the setting.
;	Optional, defaults to the first Option.
Default=0
TickBox Setting

These properties are specific to a TickBox setting.

; Name
;	The internal Name of the setting.
;	Used when using GetSetting in CustomFiles Lua scripts.
Name=EnableSomething

; Default
;	The default value of the setting. 0 or 1.
;	Optional, defaults to 0.
Default=0
Number Setting

These properties are specific to a Number setting.

; Name
;	The internal Name of the setting.
;	Used when using GetSetting in CustomFiles Lua scripts.
Name=HitAndRunDecay

; Integer
;	Specify whether or not the setting's value has to be an integer.
;	Optional, defaults to 0.
Integer=0

; Min
;	The minimum value of the setting.
;	Optional.
Min=-10.0

; Max
;	The maximum value of the setting.
;	Optional.
Max=10.0

; Default
;	The default value of the setting.
;	Optional, defaults to 0.
Default=0
Text Setting

These properties are specific to a Text setting.

; Name
;	The internal Name of the setting.
;	Used when using GetSetting in CustomFiles Lua scripts.
Name=Character

; Password
;	Specify if the textfield should be a password box.
;	Optional, defaults to 0.
Password=0

; Option
;	Specify specific options for the textfield.
;	Optional.
Option=homer
Option=bart
Option=lisa
Option=marge
Option=apu

; Default
;	The default text in the setting.
;	Optional.
Default=homer

 

Label "Setting"

These properties are specific to a Label "setting".

; Title
;	The text in the Label.
Label=These settings affect some stuff.

; URL
;	Specify a URL to link to from the label text.
;	Must start with http:// or https://.
;	Optional.
URL=https://donutteam.com/
Colour Setting

These properties are specific to a Colour setting.

; Name
;	The internal Name of the setting.
;	Used when using GetSetting in CustomFiles Lua scripts.
Name=ProbablyUselessColourSetting

; Default
;	The default color.
;	Must start with 0x followed by hexadecimal R,G,B,A values.
Default=0XFFFFFFFF

[SettingCondition] Section

This section can be used to add a condition for a setting being enabled in the Mod Settings window. The condition must be true for the setting to be enabled.
Repeat this section to add multiple setting conditions.

[SettingCondition]
; Type
;	Set the type of condition that must be met for this setting to be enabled.
;		Setting: The condition is based on the value of another setting.
Type=Setting

; Setting
;	The Name of the setting that is affected by this condition.
Setting=AddSkullsToBartsCar

; ConditionSetting
;	The Name of the setting whose value is checked by this condition.
ConditionSetting=EnableMemes

; Operator
;	The operator used to compare the value of the ConditionSetting to the Value inside this SettingCondition.
;		EqualTo
;			You must use this operator when adding a SettingCondition for a TickBox or Text setting.
;		NotEqualTo
;		GreaterThanOrEqualTo
;		LessThanOrEqualTo
;		GreaterThan
;		LessThan
Operator=EqualTo

; Value
;	The value to compare to the value of the Setting.
Value=1

[SettingWarning] Section

This section is used to add a warning when a setting is set to a certain value.
Repeat this section for multiple warnings.

[SettingWarning]
; Setting
;	The Name of the setting that the warning checks the value of.
Setting=AddSkullsToBartsCar

; Operator
;	The operator used to compare the value of the Setting to the Value inside this SettingWarning.
;		EqualTo
;			You must use this operator when adding a SettingWarning for a TickBox or Text setting.
;		NotEqualTo
;		GreaterThanOrEqualTo
;		LessThanOrEqualTo
;		GreaterThan
;		LessThan
Operator=EqualTo

; Value
;	The value to compare to the value of the Setting.
Value=1

; Message
;	The message to show when the conditions for the warning are met.
Message=Woah dog, this settings looks like a dank meme. Are you sure you want to enable it?

[LegacyResource] Section

This section is used to specify that the mod supersedes an old Legacy mod.
This is useful for new versions of frameworks that change the InternalName but otherwise maintain compatibility with mods that require it under the old name.

[LegacyResource]
; InternalName
;	The InternalName of the legacy mod this one is superseding. 
InternalName=AdditionalCharacters

; Title
;	The Title of the legacy mod this one is superseding. Optional.
;	This isn't currently used anywhere but it might be in the future.
Title=Additional Characters

[Compile] Section

This section is used to define rules for how to compile the mod.
This section is optional and is not required to compile a mod. It is only needed if you want to customize the process.

[Compile]
; OutputPath
;	The path to output the LMLM file to. Optional, if not specified the Launcher will ask when clicking "Compile...".
OutputPath=MyMod.lmlm

; Decompilable
;	Set whether or not the mod is able to be decompiled in the Mods List. Optional, defaults to 0.
Decompilable=0

; ExcludedFileName
;	Files with this name will be excluded when the mod is compiled. 
;	Supports * and ? wildcards.
ExcludedFileName=*.bak

; IncludedFileName: 
;	Files with this name will be included when the mod is compiled. 
;	This can be used to include file types that would normally be excluded.
;	Supports * and ? wildcards.
IncludedFileName=Something.txt

; ExcludedFolderName
;	Folders with this name will be excluded when the mod is compiled. 
;	Supports * and ? wildcards.
ExcludedFolderName=_Assets

; IncludedFolderName: 
;	Folders with this name will be included when the mod is compiled.
;	This can be used to include folders that would normally be excluded,
;		such as ones in the root that are not "AdditionalFiles", "CustomFiles" or "Resources"
;	Supports * and ? wildcards.
IncludedFolderName=Resources2OrSomething

; MinifyArt
;	Set whether or not to minify .p3d files (removes history chunks) when the mod is compiled. 
;	Defaults to 1 unless the mod is Decompilable.
MinifyArt=1

; MinifyPNGs
;	Set whether or not to minify .png files (removes unrequired data such as Adobe Fireworks data) when the mod is compiled.
;	Defaults to 1 unless the mod is Decompilable.
MinifyPNGs=1

; IncludeHidden
;	Set whether or not to include hidden files and folders. 
;	Defaults to 0 unless the mod is Decompilable.
IncludeHidden=0

; IncludeModifiedDates: 
;	Set whether or not to preserve modified dates on files and folders. 
;	Defaults to 0 unless the mod is Decompilable.
IncludeModifiedDates=0

; IncludeEmptyFolders: 
;	Set whether or not to include empty folders. 
;	Defaults to 0 unless the mod is Decompilable.
IncludeEmptyFolders=0

; RewriteMetaINI
;	Set whether or not to rewrite Meta.ini when compiling the mod.
;	Defaults to 0 unless the mod is Decompilable.
RewriteMetaINI=1
Back to top