diff --git a/app/assets/css/launcher.css b/app/assets/css/launcher.css
index eeb0d9a..1c7d4c9 100644
--- a/app/assets/css/launcher.css
+++ b/app/assets/css/launcher.css
@@ -1368,103 +1368,7 @@ input:checked + .toggleSwitchSlider:before {
* Settings View (Mods Tab)
* * */
-#settingsReqModsContent,
-#settingsOptModsContent,
-#settingsDropinModsContent {
- font-size: 12px;
- background: rgba(0, 0, 0, 0.25);
- border-radius: 3px;
- color: white;
-}
-
-#settingsModsContainer {
- width: 75%;
-}
-
-.settingsModsHeader {
- padding-bottom: 10px;
- border-bottom: 1px solid rgba(255, 255, 255, 0.5);
- margin-bottom: 10px;
-}
-
-#settingsReqModsContainer,
-#settingsOptModsContainer,
-#settingsDropinModsContainer {
- padding-bottom: 25px;
-}
-
-.settingsMod,
-.settingsDropinMod {
- padding: 10px;
-}
-
-.settingsSubMod {
- padding: 10px 0px 10px 15px;
- margin-left: 20px;
- border-left: 1px solid rgba(255, 255, 255, 0.5);
-}
-
-.settingsModStatus {
- width: 7px;
- height: 7px;
- border-radius: 50%;
- background-color: #c32625;
- margin-right: 15px;
- transition: 0.25s ease;
-}
-
-.settingsModContent {
- display: flex;
- align-items: center;
- justify-content: space-between;
- transition: opacity 0.25s ease;
-}
-
-.settingsModMainWrapper {
- display: flex;
- align-items: center;
-}
-
-.settingsModVersion {
- color: grey;
- font-size: 10px;
-}
-
-.settingsModDetails {
- display: flex;
- flex-direction: column;
-}
-
-.toggleSwitch[reqmod] {
- filter: grayscale(49%) brightness(60%);
- pointer-events: none;
-}
-
-.settingsBaseMod[enabled] > .settingsModContent > .settingsModMainWrapper > .settingsModStatus {
- background-color: rgb(165, 195, 37);
-}
-
-.settingsBaseMod:not([enabled]) > .settingsSubModContainer .settingsModContent {
- opacity: 0.5;
-}
-
-.settingsSubModContainer > .settingsSubMod:first-child {
- border-top-left-radius: 10px;
-}
-
-.settingsSubModContainer > .settingsSubMod:last-child {
- border-bottom-left-radius: 10px;
-}
-
-settingsSubModContainer > .settingsSubMod:only-child {
- border-top-left-radius: 10px;
- border-bottom-left-radius: 10px;
-}
-
-.settingsSubModContainer {
- margin-top: 10px;
-}
-
+/* Selected server content container */
#settingsSelServContainer {
background: rgba(0, 0, 0, 0.25);
width: 75%;
@@ -1474,6 +1378,7 @@ settingsSubModContainer > .settingsSubMod:only-child {
margin: 15px 0px;
}
+/* Div which will be populated with the selected server's information. */
#settingsSelServContent {
display: flex;
align-items: center;
@@ -1481,12 +1386,14 @@ settingsSubModContainer > .settingsSubMod:only-child {
padding: 5px 0px;
}
+/* Wrapper container for the switch server button. */
#settingsSwitchServerContainer {
display: flex;
align-items: center;
padding: 15px;
}
+/* Button to switch server configurations on the mods tab. */
#settingsSwitchServerButton {
opacity: 0;
border: 1px solid rgb(255, 255, 255);
@@ -1514,6 +1421,140 @@ settingsSubModContainer > .settingsSubMod:only-child {
opacity: 1;
}
+/* Main content container for the mod elements. */
+#settingsModsContainer {
+ width: 75%;
+}
+
+/* Mod sub-container header text. */
+.settingsModsHeader {
+ padding-bottom: 10px;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.5);
+ margin-bottom: 10px;
+}
+
+/* Mod elements sub-containers. */
+#settingsReqModsContainer,
+#settingsOptModsContainer,
+#settingsDropinModsContainer {
+ padding-bottom: 25px;
+}
+
+/* Main content containers for mod elements. */
+#settingsReqModsContent,
+#settingsOptModsContent,
+#settingsDropinModsContent {
+ font-size: 12px;
+ background: rgba(0, 0, 0, 0.25);
+ border-radius: 3px;
+ color: white;
+}
+
+/* Mod elements. */
+.settingsMod,
+.settingsDropinMod {
+ padding: 10px;
+}
+.settingsSubMod {
+ padding: 10px 0px 10px 15px;
+ margin-left: 20px;
+ border-left: 1px solid rgba(255, 255, 255, 0.5);
+}
+
+/* Main content container for mod element information. */
+.settingsModContent {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ transition: opacity 0.25s ease;
+}
+
+/* Wrapper container for the left side of a mod element. */
+.settingsModMainWrapper {
+ display: flex;
+ align-items: center;
+}
+
+/* Mod enabled/disabled status. */
+.settingsModStatus {
+ width: 7px;
+ height: 7px;
+ border-radius: 50%;
+ background-color: #c32625;
+ margin-right: 15px;
+ transition: 0.25s ease;
+}
+
+/* Mod details container. */
+.settingsModDetails {
+ display: flex;
+ flex-direction: column;
+}
+
+/* The version of the mod. */
+.settingsModVersion {
+ color: grey;
+ font-size: 10px;
+}
+
+/* Disabled toggleswitch for required mods. */
+.toggleSwitch[reqmod] {
+ filter: grayscale(49%) brightness(60%);
+ pointer-events: none;
+}
+
+/* Set the status color of an enabled mod. */
+.settingsBaseMod[enabled] > .settingsModContent > .settingsModMainWrapper > .settingsModStatus {
+ background-color: rgb(165, 195, 37);
+}
+
+/* Add opacity to submods of a disabled mod. */
+.settingsBaseMod:not([enabled]) > .settingsSubModContainer .settingsModContent {
+ opacity: 0.5;
+}
+
+/* Curve the left border for submods. */
+.settingsSubModContainer > .settingsSubMod:first-child {
+ border-top-left-radius: 10px;
+}
+.settingsSubModContainer > .settingsSubMod:last-child {
+ border-bottom-left-radius: 10px;
+}
+.settingsSubModContainer > .settingsSubMod:only-child {
+ border-top-left-radius: 10px;
+ border-bottom-left-radius: 10px;
+}
+
+/* Wrapper container for all submods. */
+.settingsSubModContainer {
+ margin-top: 10px;
+}
+
+/* Button to open the mods folder for drop-in mods. */
+#settingsDropinFileSystemButton {
+ background: rgba(0, 0, 0, 0.25);
+ border: 1px solid rgba(126, 126, 126, 0.57);
+ border-radius: 3px;
+ height: 50px;
+ width: 100%;
+ text-align: left;
+ padding: 0px 50px;
+ cursor: pointer;
+ outline: none;
+ transition: 0.25s ease;
+ margin-bottom: 10px;
+}
+#settingsDropinFileSystemButton:hover,
+#settingsDropinFileSystemButton:focus {
+ background: rgba(54, 54, 54, 0.25);
+ text-shadow: 0px 0px 20px white;
+}
+/* Refresh instructions on the file system button. */
+#settingsDropinRefreshNote {
+ font-size: 10px;
+}
+
+/* Button to remove drop-in mods. */
.settingsDropinRemoveButton {
background: none;
border: none;
@@ -1535,29 +1576,6 @@ settingsSubModContainer > .settingsSubMod:only-child {
text-shadow: 0px 0px 20px #9b1f1f, 0px 0px 20px #9b1f1f, 0px 0px 20px #9b1f1f;
}
-#settingsDropinFileSystemButton {
- background: rgba(0, 0, 0, 0.25);
- border: 1px solid rgba(126, 126, 126, 0.57);
- border-radius: 3px;
- height: 50px;
- width: 100%;
- text-align: left;
- padding: 0px 50px;
- cursor: pointer;
- outline: none;
- transition: 0.25s ease;
- margin-bottom: 10px;
-}
-#settingsDropinFileSystemButton:hover,
-#settingsDropinFileSystemButton:focus {
- background: rgba(54, 54, 54, 0.25);
- text-shadow: 0px 0px 20px white;
-}
-
-#settingsDropinRefreshNote {
- font-size: 10px;
-}
-
/* * *
* Settings View (Java Tab)
* * */
diff --git a/app/assets/js/dropinmodutil.js b/app/assets/js/dropinmodutil.js
index d2ab1f2..fa74203 100644
--- a/app/assets/js/dropinmodutil.js
+++ b/app/assets/js/dropinmodutil.js
@@ -27,7 +27,7 @@ exports.scanForDropinMods = function(modsDir, version) {
if(fs.existsSync(versionDir)){
verCandidates = fs.readdirSync(versionDir)
}
- for(file of modCandidates){
+ for(let file of modCandidates){
const match = MOD_REGEX.exec(file)
if(match != null){
modsDiscovered.push({
@@ -38,7 +38,7 @@ exports.scanForDropinMods = function(modsDir, version) {
})
}
}
- for(file of verCandidates){
+ for(let file of verCandidates){
const match = MOD_REGEX.exec(file)
if(match != null){
modsDiscovered.push({
@@ -62,15 +62,6 @@ exports.scanForDropinMods = function(modsDir, version) {
* @returns {boolean} True if the mod was deleted, otherwise false.
*/
exports.deleteDropinMod = function(modsDir, fullName){
- /*return new Promise((resolve, reject) => {
- fs.unlink(path.join(modsDir, fullName), (err) => {
- if(err){
- reject(err)
- } else {
- resolve()
- }
- })
- })*/
const res = shell.moveItemToTrash(path.join(modsDir, fullName))
if(!res){
shell.beep()
@@ -104,6 +95,12 @@ exports.toggleDropinMod = function(modsDir, fullName, enable){
})
}
+/**
+ * Check if a drop-in mod is enabled.
+ *
+ * @param {string} fullName The fullName of the discovered mod to toggle.
+ * @returns {boolean} True if the mod is enabled, otherwise false.
+ */
exports.isDropinModEnabled = function(fullName){
return !fullName.endsWith(DISABLED_EXT)
}
\ No newline at end of file
diff --git a/app/assets/js/scripts/overlay.js b/app/assets/js/scripts/overlay.js
index 8702872..6e8151e 100644
--- a/app/assets/js/scripts/overlay.js
+++ b/app/assets/js/scripts/overlay.js
@@ -10,7 +10,7 @@
* @returns {boolean} Whether or not the overlay is visible.
*/
function isOverlayVisible(){
- return document.getElementById('main').hasAttribute('overlay');
+ return document.getElementById('main').hasAttribute('overlay')
}
/**
diff --git a/app/assets/js/scripts/settings.js b/app/assets/js/scripts/settings.js
index 7c4ed91..ac5d8d9 100644
--- a/app/assets/js/scripts/settings.js
+++ b/app/assets/js/scripts/settings.js
@@ -428,6 +428,9 @@ document.getElementById('settingsGameHeight').addEventListener('keydown', (e) =>
const settingsModsContainer = document.getElementById('settingsModsContainer')
+/**
+ * Resolve and update the mods on the UI.
+ */
function resolveModsForUI(){
const serv = ConfigManager.getSelectedServer()
@@ -438,9 +441,15 @@ function resolveModsForUI(){
document.getElementById('settingsReqModsContent').innerHTML = modStr.reqMods
document.getElementById('settingsOptModsContent').innerHTML = modStr.optMods
-
}
+/**
+ * Recursively build the mod UI elements.
+ *
+ * @param {Object[]} mdls An array of modules to parse.
+ * @param {boolean} submodules Whether or not we are parsing submodules.
+ * @param {Object} servConf The server configuration object for this module level.
+ */
function parseModulesForUI(mdls, submodules, servConf){
let reqMods = ''
@@ -496,9 +505,7 @@ function parseModulesForUI(mdls, submodules, servConf){
`
}
-
}
-
}
return {
@@ -560,35 +567,15 @@ function _saveModConfiguration(modConf){
return modConf
}
-function loadSelectedServerOnModsTab(){
- const serv = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer())
-
- document.getElementById('settingsSelServContent').innerHTML = `
-
-