<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://delta-v.kodera.pl/index.php?action=history&amp;feed=atom&amp;title=Using_the_Godot_Editor</id>
	<title>Using the Godot Editor - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://delta-v.kodera.pl/index.php?action=history&amp;feed=atom&amp;title=Using_the_Godot_Editor"/>
	<link rel="alternate" type="text/html" href="https://delta-v.kodera.pl/index.php?title=Using_the_Godot_Editor&amp;action=history"/>
	<updated>2026-05-24T15:49:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://delta-v.kodera.pl/index.php?title=Using_the_Godot_Editor&amp;diff=41154&amp;oldid=prev</id>
		<title>Hev: reduced number of example mods to clear clutter</title>
		<link rel="alternate" type="text/html" href="https://delta-v.kodera.pl/index.php?title=Using_the_Godot_Editor&amp;diff=41154&amp;oldid=prev"/>
		<updated>2025-05-02T22:15:24Z</updated>

		<summary type="html">&lt;p&gt;reduced number of example mods to clear clutter&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:15, 2 May 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l19&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #		&amp;quot;res://NTCED Parts Pack/ModMain.gd&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #		&amp;quot;res://NTCED Parts Pack/ModMain.gd&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #		&amp;quot;res://Remove Ring Restrictions/ModMain.gd&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #		&amp;quot;res://Remove Ring Restrictions/ModMain.gd&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://SaveEdit/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://WikiEventTest/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://AutoTurret/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://RingActivity/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://LumaEdge/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://NDCI-mk2/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://Dwarf Crew/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://Controlling/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://EventDriver/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://MoreMinerals/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://PilotZoom/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://No Crew Portraits/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://Nothing Slider/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; #		&quot;res://DeKanban/ModMain.gd&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff::1.12:old-41153:rev-41154 --&gt;
&lt;/table&gt;</summary>
		<author><name>Hev</name></author>
	</entry>
	<entry>
		<id>https://delta-v.kodera.pl/index.php?title=Using_the_Godot_Editor&amp;diff=41153&amp;oldid=prev</id>
		<title>Hev: created page for patching the modloader to run mods from the editor</title>
		<link rel="alternate" type="text/html" href="https://delta-v.kodera.pl/index.php?title=Using_the_Godot_Editor&amp;diff=41153&amp;oldid=prev"/>
		<updated>2025-05-02T22:09:17Z</updated>

		<summary type="html">&lt;p&gt;created page for patching the modloader to run mods from the editor&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ever since [https://github.com/GDRETools/gdsdecomp/releases/tag/v0.9.1 GDRE 0.9], it has been economical to use the Godot Editor to run the game to test mods instead of packaging them and launching the standalone game to test.&lt;br /&gt;
&lt;br /&gt;
Mods can currently be run through two methods: placing a mod&amp;#039;s zip in a mods folder next to the Godot executable, or manually patching the modloader to load mods from the filesystem. The latter is preferred, as it lets you more effectively modify code without repackaging it as a zip, as a mod loaded from Zip will always override code in the filesystem.&lt;br /&gt;
&lt;br /&gt;
Enabling mods is as simple as setting the &amp;lt;code&amp;gt;areModsEnabled&amp;lt;/code&amp;gt; variable to true in the &amp;lt;code&amp;gt;ModLoader.gd&amp;lt;/code&amp;gt; file. This lets mods be loaded from a mods folder just fine, however loading mods directly from the editor requires additional patching. &lt;br /&gt;
&lt;br /&gt;
A complete mod loader replacement can be found from a Github page here: https://github.com/rwqfsfasxc100/Delta-V-Useful-Files/blob/main/ModLoader.gd. Alternatively, you can copy-paste the following code to replace the &amp;lt;code&amp;gt;ModLoader.gd&amp;lt;/code&amp;gt; file. The array &amp;lt;code&amp;gt;addedMods&amp;lt;/code&amp;gt; lists all &amp;lt;code&amp;gt;res://&amp;lt;/code&amp;gt; paths to mods that you want to load. Anything commented out will not be registered. The mods in the file are used purely as an example.&lt;br /&gt;
 extends Node&lt;br /&gt;
 &lt;br /&gt;
 var areModsEnabled = true&lt;br /&gt;
 &lt;br /&gt;
 var addedMods = [&lt;br /&gt;
 #		&amp;quot;res://ModMenu/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://HevLib/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://No Simulation Hex/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://DerelictDelights/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://IndustriesOfEnceladusRevamp/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://Better Recon Drones/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://NTCED Parts Pack/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://Remove Ring Restrictions/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://SaveEdit/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://WikiEventTest/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://AutoTurret/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://RingActivity/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://LumaEdge/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://NDCI-mk2/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://Dwarf Crew/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://Controlling/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://EventDriver/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://MoreMinerals/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://PilotZoom/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://No Crew Portraits/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://Nothing Slider/ModMain.gd&amp;quot;,&lt;br /&gt;
 #		&amp;quot;res://DeKanban/ModMain.gd&amp;quot;,&lt;br /&gt;
 	]&lt;br /&gt;
 &lt;br /&gt;
 const is_debugged = true&lt;br /&gt;
 &lt;br /&gt;
 func _init():&lt;br /&gt;
 	for arg in OS.get_cmdline_args():&lt;br /&gt;
 		if arg == &amp;quot;--enable-mods&amp;quot;:&lt;br /&gt;
 			areModsEnabled = true&lt;br /&gt;
 &lt;br /&gt;
 	if not areModsEnabled:&lt;br /&gt;
 		return &lt;br /&gt;
 &lt;br /&gt;
 	Debug.l(&amp;quot;ModLoader: Loading mods...&amp;quot;)&lt;br /&gt;
 	_loadMods()&lt;br /&gt;
 	Debug.l(&amp;quot;ModLoader: Done loading mods.&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 	Debug.l(&amp;quot;ModLoader: Initializing mods...&amp;quot;)&lt;br /&gt;
 	_initMods()&lt;br /&gt;
 	Debug.l(&amp;quot;ModLoader: Done initializing mods.&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 var _modZipFiles = []&lt;br /&gt;
 &lt;br /&gt;
 func _loadMods():&lt;br /&gt;
 	var gameInstallDirectory = OS.get_executable_path().get_base_dir()&lt;br /&gt;
 	if OS.get_name() == &amp;quot;OSX&amp;quot;:&lt;br /&gt;
 		gameInstallDirectory = gameInstallDirectory.get_base_dir().get_base_dir().get_base_dir()&lt;br /&gt;
 	var modPathPrefix = gameInstallDirectory.plus_file(&amp;quot;mods&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 	var dir = Directory.new()&lt;br /&gt;
 	if dir.open(modPathPrefix) != OK:&lt;br /&gt;
 		Debug.l(&amp;quot;ModLoader: Can&amp;#039;t open mod folder %s.&amp;quot; % modPathPrefix)&lt;br /&gt;
 		return &lt;br /&gt;
 	if dir.list_dir_begin() != OK:&lt;br /&gt;
 		Debug.l(&amp;quot;ModLoader: Can&amp;#039;t read mod folder %s.&amp;quot; % modPathPrefix)&lt;br /&gt;
 		return &lt;br /&gt;
 &lt;br /&gt;
 	while true:&lt;br /&gt;
 		var fileName = dir.get_next()&lt;br /&gt;
 		if fileName == &amp;quot;&amp;quot;:&lt;br /&gt;
 			break&lt;br /&gt;
 		if dir.current_is_dir():&lt;br /&gt;
 			continue&lt;br /&gt;
 		var modFSPath = modPathPrefix.plus_file(fileName)&lt;br /&gt;
 		var modGlobalPath = ProjectSettings.globalize_path(modFSPath)&lt;br /&gt;
 		if not ProjectSettings.load_resource_pack(modGlobalPath, true):&lt;br /&gt;
 			Debug.l(&amp;quot;ModLoader: %s failed to load.&amp;quot; % fileName)&lt;br /&gt;
 			continue&lt;br /&gt;
 		_modZipFiles.append(modFSPath)&lt;br /&gt;
 		Debug.l(&amp;quot;ModLoader: %s loaded.&amp;quot; % fileName)&lt;br /&gt;
 	dir.list_dir_end()&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 func _initMods():&lt;br /&gt;
 	var initScripts = []&lt;br /&gt;
 	for modFSPath in _modZipFiles:&lt;br /&gt;
 		var gdunzip = load(&amp;quot;res://vendor/gdunzip.gd&amp;quot;).new()&lt;br /&gt;
 		gdunzip.load(modFSPath)&lt;br /&gt;
 		for modEntryPath in gdunzip.files:&lt;br /&gt;
 			var modEntryName = modEntryPath.get_file().to_lower()&lt;br /&gt;
 			if modEntryName.begins_with(&amp;quot;modmain&amp;quot;) and modEntryName.ends_with(&amp;quot;.gd&amp;quot;):&lt;br /&gt;
 				var modGlobalPath = &amp;quot;res://&amp;quot; + modEntryPath&lt;br /&gt;
 				Debug.l(&amp;quot;ModLoader: Loading %s&amp;quot; % modGlobalPath)&lt;br /&gt;
 				var packedScript = ResourceLoader.load(modGlobalPath)&lt;br /&gt;
 				initScripts.append(packedScript)&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	for m in addedMods:&lt;br /&gt;
 		var packedScript = ResourceLoader.load(m)&lt;br /&gt;
 		initScripts.append(packedScript)&lt;br /&gt;
 &lt;br /&gt;
 	initScripts.sort_custom(self, &amp;quot;_compareScriptPriority&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 	for packedScript in initScripts:&lt;br /&gt;
 		Debug.l(&amp;quot;ModLoader: Running %s&amp;quot; % packedScript.resource_path)&lt;br /&gt;
 		var scriptInstance = packedScript.new(self)&lt;br /&gt;
 		add_child(scriptInstance)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 func _compareScriptPriority(a, b):&lt;br /&gt;
 	var aPrio = a.get_script_constant_map().get(&amp;quot;MOD_PRIORITY&amp;quot;, 0)&lt;br /&gt;
 	var bPrio = b.get_script_constant_map().get(&amp;quot;MOD_PRIORITY&amp;quot;, 0)&lt;br /&gt;
 	if aPrio != bPrio:&lt;br /&gt;
 		return aPrio &amp;lt; bPrio&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	var aPath = a.resource_path&lt;br /&gt;
 	var bPath = b.resource_path&lt;br /&gt;
 	if aPath != bPath:&lt;br /&gt;
 		return aPath &amp;lt; bPath&lt;br /&gt;
 &lt;br /&gt;
 	return false&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 func installScriptExtension(childScriptPath:String):&lt;br /&gt;
 	var childScript = ResourceLoader.load(childScriptPath)&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	&lt;br /&gt;
 	&lt;br /&gt;
 	&lt;br /&gt;
 	&lt;br /&gt;
 	&lt;br /&gt;
 	&lt;br /&gt;
 	childScript.new()&lt;br /&gt;
 &lt;br /&gt;
 	var parentScript = childScript.get_base_script()&lt;br /&gt;
 	var parentScriptPath = parentScript.resource_path&lt;br /&gt;
 	Debug.l(&amp;quot;ModLoader: Installing script extension: %s &amp;lt;- %s&amp;quot; % [parentScriptPath, childScriptPath])&lt;br /&gt;
 	childScript.take_over_path(parentScriptPath)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 func addTranslationsFromCSV(csvPath:String):&lt;br /&gt;
 	var translationCsv = File.new()&lt;br /&gt;
 	translationCsv.open(csvPath, File.READ)&lt;br /&gt;
 	var TranslationParsedCsv = {}&lt;br /&gt;
 &lt;br /&gt;
 	var translations = []&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	var csvLine = translationCsv.get_csv_line()&lt;br /&gt;
 	for i in range(1, csvLine.size()):&lt;br /&gt;
 		var translationObject = Translation.new()&lt;br /&gt;
 		translationObject.locale = csvLine[i]&lt;br /&gt;
 		translations.append(translationObject)&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	while not translationCsv.eof_reached():&lt;br /&gt;
 		csvLine = translationCsv.get_csv_line()&lt;br /&gt;
 		if csvLine.size() == 1 and csvLine[0] == &amp;quot;&amp;quot;:&lt;br /&gt;
 			break&lt;br /&gt;
 		var translationID = csvLine[0]&lt;br /&gt;
 		for i in range(1, csvLine.size()):&lt;br /&gt;
 			translations[i - 1].add_message(translationID, csvLine[i])&lt;br /&gt;
 &lt;br /&gt;
 	translationCsv.close()&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	for translationObject in translations:&lt;br /&gt;
 		TranslationServer.add_translation(translationObject)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 func appendNodeInScene(modifiedScene, nodeName:String = &amp;quot;&amp;quot;, nodeParent = null, instancePath:String = &amp;quot;&amp;quot;, isVisible:bool = true):&lt;br /&gt;
 	var newNode&lt;br /&gt;
 	if instancePath != &amp;quot;&amp;quot;:&lt;br /&gt;
 		newNode = load(instancePath).instance()&lt;br /&gt;
 	else :&lt;br /&gt;
 		newNode = Node.instance()&lt;br /&gt;
 	if nodeName != &amp;quot;&amp;quot;:&lt;br /&gt;
 		newNode.name = nodeName&lt;br /&gt;
 	if isVisible == false:&lt;br /&gt;
 		newNode.visible = false&lt;br /&gt;
 	if nodeParent != null:&lt;br /&gt;
 		var tmpNode = modifiedScene.get_node(nodeParent)&lt;br /&gt;
 		tmpNode.add_child(newNode)&lt;br /&gt;
 		newNode.set_owner(modifiedScene)&lt;br /&gt;
 	else :&lt;br /&gt;
 		modifiedScene.add_child(newNode)&lt;br /&gt;
 		newNode.set_owner(modifiedScene)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 var _savedObjects = []&lt;br /&gt;
 &lt;br /&gt;
 func saveScene(modifiedScene, scenePath:String):&lt;br /&gt;
 	var packed_scene = PackedScene.new()&lt;br /&gt;
 	packed_scene.pack(modifiedScene)&lt;br /&gt;
 	packed_scene.take_over_path(scenePath)&lt;br /&gt;
 	_savedObjects.append(packed_scene)&lt;/div&gt;</summary>
		<author><name>Hev</name></author>
	</entry>
</feed>