Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our Discord.

Getting Started

IntelliJ IDEA

This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

  1. Clone or download this repository to your computer.
  2. Configure the project by setting the properties in the gradle.properties file. You will also need to change the rootProject.name property in settings.gradle, this should match the folder name of your project, or else IDEA may complain.
  3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
  4. If your default JVM/JDK is not Java 25 you will encounter an error when opening the project. This error is fixed by going to File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM and changing the value to a valid Java 25 JVM. You will also need to set the Project SDK to Java 25. This can be done by going to File > Project Structure > Project SDK. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
  5. Open your Run/Debug Configurations. Under the Application category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
  6. Assuming you were able to run the game in step 5 your workspace should now be set up.

Eclipse

While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

Development Guide

When using this template the majority of your mod should be developed in the common project. The common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the fabric or neoforge projects.

Loader specific projects such as the fabric and neoforge project are used to load the common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the common project. It is important to remember that the common project can not access code from loader specific projects.

Removing Platforms and Loaders

While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the include("projectname") line from the settings.gradle file. For example if you wanted to remove support for forge you would follow the following steps:

  1. Delete the subproject folder. For example, delete MultiLoader-Template/forge.
  2. Remove the project from settings.gradle. For example, remove include("forge").

About

Active probing always comes at a cost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages