fix some bugs, add main entrypoint in template

This commit is contained in:
moehreag 2024-06-09 13:08:01 +02:00
parent c033a05d8c
commit fe222d7e7a
4 changed files with 99 additions and 28 deletions

View file

@ -8,7 +8,11 @@ Insert section about the installer here
## Third-Party Launchers ## Third-Party Launchers
### PrismLauncher
### PrismLauncher/MultiMC
*put an instance generator here*
Add an instance generator to the installer and describe it here\ Add an instance generator to the installer and describe it here\
**or**\ **or**\

View file

@ -0,0 +1,17 @@
package $maven_group.$mod_id;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import dev.frogmc.froglib.entrypoints.MainExtension;
import dev.frogmc.frogloader.api.mod.ModProperties;
public class $mod_name_pascalMain implements MainExtension {
private static final Logger LOGGER = LoggerFactory.getLogger("$mod_name");
@Override
public void onInit(ModProperties self){
LOGGER.info("Hello World!");
}
}

View file

@ -11,10 +11,11 @@ credits = [
] ]
[frog.dependencies] [frog.dependencies]
depends = { depends = [
{ "id" = "minecraft", versions = "~$game_version", name = "Minecraft", link = "https://minecraft.net" } { "id" = "minecraft", versions = "~$game_version", name = "Minecraft", link = "https://minecraft.net" },
{ "id" = "frogloader", versions = ">=$loader_version", name = "Frog Loader", link = "https://frogmc.dev" } { "id" = "frogloader", versions = ">=$loader_version", name = "Frog Loader", link = "https://frogmc.dev" }
} ]
[frog.extensions] [frog.extensions]
mixin_config = "$mod_id.mixins.json" mixin_config = "$mod_id.mixins.json"
main = "$maven_group.$mod_name_pascalMain"

View file

@ -6,10 +6,6 @@ next: false
editLink: false editLink: false
lastUpdated: false lastUpdated: false
outline: false outline: false
head:
- - meta
- property: Access-Control-Allow-Origin
content: https://git.frogmc.dev/
--- ---
<!-- This is a mess! Someone improve this please. --> <!-- This is a mess! Someone improve this please. -->
@ -18,18 +14,20 @@ head:
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { saveAs } from 'file-saver' import { saveAs } from 'file-saver'
const assetBaseUrl = "/resources" const assetBaseUrl = "/resources"
const gameVersion = ref()
const showSnapshots = ref() const showSnapshots = ref()
const versionSelector = ref() const versionSelector = ref()
const modIdRef = ref() const modIdRef = ref()
const modNameRef = ref() const modNameRef = ref()
const mavenGroupRef = ref() const mavenGroupRef = ref()
const licenseRef = ref() const licenseRef = ref()
const useSnapshots = ref()
let releases = [] let releases = []
let snapshots = [] let snapshots = []
let versions = [] let versions = []
let latestLoader let latestLoader
let latestPhytotelma let latestPhytotelma
let latestLoaderSnapshot
let latestPhytotelmaSnapshot
async function getGameVersions() { async function getGameVersions() {
const response = await fetch("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json") const response = await fetch("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json")
@ -40,7 +38,7 @@ head:
versionSelector.value.innerHTML = "" versionSelector.value.innerHTML = ""
for (let version of releases) { for (let version of releases) {
versionSelector.value.innerHTML += "<option value=\""+version.id+"\">"+version.id+"</option>" versionSelector.value.innerHTML += "<option value=\""+version.id+"\">"+version.id+"</option>"
} }
if (showSnapshots.value) { if (showSnapshots.value) {
for (let version of snapshots) { for (let version of snapshots) {
@ -65,13 +63,25 @@ head:
}) })
function getLatestProjectVersions() { function getLatestProjectVersions() {
fetchVersionFromMaven("snapshots", "frogloader").then((v) => { fetchVersionFromMaven("releases", "frogloader").then((v) => {
latestLoader = v latestLoader = v
document.getElementById("frogLoaderVersionBadge").innerHTML = v document.getElementById("frogLoaderVersionReleaseBadge").innerHTML = v
}).catch((err) => {
document.getElementById("frogLoaderVersionReleaseBadge").innerHTML = "No version found!"
})
fetchVersionFromMaven("releases", "phytotelma").then((v) => {
latestPhytotelma = v
document.getElementById("phytotelmaVersionReleaseBadge").innerHTML = v
}).catch((err) => {
document.getElementById("phytotelmaVersionReleaseBadge").innerHTML = "No version found!"
})
fetchVersionFromMaven("snapshots", "frogloader").then((v) => {
latestLoaderSnapshot = v
document.getElementById("frogLoaderVersionSnapshotBadge").innerHTML = v
}) })
fetchVersionFromMaven("snapshots", "phytotelma").then((v) => { fetchVersionFromMaven("snapshots", "phytotelma").then((v) => {
latestPhytotelma = v latestPhytotelmaSnapshot = v
document.getElementById("phytotelmaVersionBadge").innerHTML = v document.getElementById("phytotelmaVersionSnapshotBadge").innerHTML = v
}) })
} }
@ -84,6 +94,28 @@ head:
} }
function generate() { function generate() {
let missing = []
if (modIdRef.value === undefined) {
missing.push("Mod ID")
}
if (modNameRef.value === undefined) {
missing.push("Mod Name")
}
if (mavenGroupRef.value === undefined) {
missing.push("Maven Group")
}
if (licenseRef.value === undefined) {
missing.push("License")
}
if (missing.length > 0) {
let html = "<div class=\"danger custom-block\"><p class=\"custom-block-title\">Missing Inputs</p><p>"
html += missing.join("</p><p>")
html += "</p></div>"
document.getElementById("missingBox").innerHTML = html
return
}
let zip = JSZip() let zip = JSZip()
let gradle = zip.folder("gradle") let gradle = zip.folder("gradle")
@ -139,6 +171,16 @@ head:
let main = src.folder("main") let main = src.folder("main")
let java = main.folder("java") let java = main.folder("java")
let resources = main.folder("resources") let resources = main.folder("resources")
let classes = java
for (let part of mavenGroupRef.value.split(/\\./g)) {
classes = classes.folder(part)
}
const classFileName = modNameRef.value.replaceAll(" ", "")
promises.push(
readAsset("/template/src/main/java/Main.java").then((data) => {
classes.file(classFileName+"Main", data)
})
)
promises.push( promises.push(
readAsset("/template/src/main/resources/frog.mod.toml").then((data) => { readAsset("/template/src/main/resources/frog.mod.toml").then((data) => {
resources.file("frog.mod.toml", data) resources.file("frog.mod.toml", data)
@ -167,13 +209,14 @@ head:
async function readAsset(path){ async function readAsset(path){
const response = await fetch(assetBaseUrl+path) const response = await fetch(assetBaseUrl+path)
return await response.text().then((data) => { return await response.text().then((data) => {
data = data.replace(/\\$mod_id/g, modIdRef.value) data = data.replaceAll("$mod_id", modIdRef.value)
data = data.replace(/\\$mod_name/g, modNameRef.value) data = data.replaceAll("$mod_name_pascal", modNameRef.value.replaceAll(" ", "")
data = data.replace(/\\$maven_group/g, mavenGroupRef.value) data = data.replaceAll("$mod_name", modNameRef.value)
data = data.replace(/\\$license/g, licenseRef.value) data = data.replaceAll("$maven_group", mavenGroupRef.value)
data = data.replace(/\\$loader_version/g, latestLoader) data = data.replaceAll("$license", licenseRef.value)
data = data.replace(/\\$phytotelma_version/g, latestPhytotelma) data = data.replaceAll("$loader_version", useSnapshots.value ? latestLoaderSnapshot : latestLoader)
data = data.replace(/\\$game_version/g, versionSelector.value.selected) data = data.replaceAll("$phytotelma_version", latestPhytotelma)
data = data.replaceAll("$game_version", versionSelector.value.value)
return data return data
}) })
} }
@ -203,7 +246,6 @@ head:
} }
.generate { .generate {
padding: 4px; padding: 4px;
//border: 4px solid var(--vp-c-brand-soft);
border-radius: 14px; border-radius: 14px;
} }
</style> </style>
@ -232,22 +274,29 @@ head:
<td><input v-model="licenseRef" /></td> <td><input v-model="licenseRef" /></td>
</tr> </tr>
<tr> <tr>
<td>Version</td> <td>Minecraft Version</td>
<td> <td>
<select v-model="gameVersion" ref="versionSelector"> <select ref="versionSelector">
<option value="loading">Loading Versions...</option> <option value="loading">Loading Versions...</option>
</select> </select>
<input type="checkbox" v-model="showSnapshots" @change="getVersions">Show snapshots</input> <input type="checkbox" v-model="showSnapshots" @change="getVersions">Show Snapshots</input>
</td>
</tr>
<tr>
<td>Library Versions</td>
<td>
<input type="checkbox" v-model="useSnapshots">Use Snapshots (Beta Versions)</input>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<button class="generate" @click="generate">Generate</button> <div id="missingBox"></div>
<button class="generate" @click="generate">Download</button>
</div> </div>
## Latest Versions ## Latest Versions
[FrogLoader](/contributing/tools.md#frogloader) <Badge type="tip" id="frogLoaderVersionBadge">Loading...</Badge> [FrogLoader](/contributing/tools.md#frogloader) <Badge type="tip" id="frogLoaderVersionReleaseBadge">Loading Release...</Badge> <Badge type="warning" id="frogLoaderVersionSnapshotBadge">Loading Snapshot...</Badge>
[Phytotelma](/contributing/tools.md#phytotelma) <Badge type="tip" id="phytotelmaVersionBadge">Loading...</Badge> [Phytotelma](/contributing/tools.md#phytotelma) <Badge type="tip" id="phytotelmaVersionReleaseBadge">Loading Release...</Badge> <Badge type="warning" id="phytotelmaVersionSnapshotBadge">Loading Snapshot...</Badge>