more fixes, style tweaks, beginning of prism pack generator
This commit is contained in:
parent
b7bce1d2c7
commit
03262dfbdc
|
@ -137,3 +137,32 @@
|
||||||
--docsearch-primary-color: var(--vp-c-brand-1) !important;
|
--docsearch-primary-color: var(--vp-c-brand-1) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom styling
|
||||||
|
* -------------------------------------------------------------------------- */
|
||||||
|
button {
|
||||||
|
background-color: var(--vp-button-brand-bg);
|
||||||
|
color: var(--vp-button-brand-text);
|
||||||
|
border-color: var(--vp-button-brand-border);
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 14px;
|
||||||
|
}
|
||||||
|
button:hover {
|
||||||
|
background-color: var(--vp-button-brand-hover-bg);
|
||||||
|
color: var(--vp-button-brand-hover-text);
|
||||||
|
border-color: var(--vp-button-brand-hover-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
select, input {
|
||||||
|
margin-left: 15px;
|
||||||
|
margin-right: 15px;
|
||||||
|
padding: 1px 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
border: 4px solid var(--vp-c-brand-soft);
|
||||||
|
}
|
||||||
|
|
|
@ -11,9 +11,123 @@ Insert section about the installer here
|
||||||
|
|
||||||
### PrismLauncher/MultiMC
|
### PrismLauncher/MultiMC
|
||||||
|
|
||||||
*put an instance generator here*
|
<script setup>
|
||||||
|
import JSZip from 'jszip'
|
||||||
|
import { ref, onMounted } from 'vue'
|
||||||
|
import { saveAs } from 'file-saver'
|
||||||
|
|
||||||
|
const assetBaseUrl = "/resources/prism"
|
||||||
|
const instanceNameRef = ref()
|
||||||
|
const showSnapshots = ref()
|
||||||
|
const versionSelector = ref()
|
||||||
|
let releases = []
|
||||||
|
let snapshots = []
|
||||||
|
let versions = []
|
||||||
|
|
||||||
|
async function getGameVersions() {
|
||||||
|
const response = await fetch("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json")
|
||||||
|
return await response.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVersions() {
|
||||||
|
versionSelector.value.innerHTML = ""
|
||||||
|
|
||||||
|
for (let version of releases) {
|
||||||
|
versionSelector.value.innerHTML += "<option value=\""+version.id+"\">"+version.id+"</option>"
|
||||||
|
}
|
||||||
|
if (showSnapshots.value) {
|
||||||
|
for (let version of snapshots) {
|
||||||
|
versionSelector.value.innerHTML += "<option value=\""+version.id+"\">"+version.id+"</option>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getGameVersions().then((v) => {
|
||||||
|
versions = v.versions
|
||||||
|
for (let version of versions){
|
||||||
|
if (version.type === "snapshot"){
|
||||||
|
snapshots.push(version)
|
||||||
|
} else {
|
||||||
|
releases.push(version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getVersions()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
function download(){
|
||||||
|
let missing = []
|
||||||
|
|
||||||
|
if (instanceNameRef.value === undefined){
|
||||||
|
missing.push("Instance Name")
|
||||||
|
}
|
||||||
|
|
||||||
|
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 promises = []
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Promise.all(promises).then((values) => {
|
||||||
|
zip.generateAsync({type:"blob"}).then(function (blob) {
|
||||||
|
saveAs(blob, instanceNameRef.value+".zip")
|
||||||
|
}, function (err) {
|
||||||
|
alert("Failed to download generated zip file, please report this!")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async function readAsset(path){
|
||||||
|
const response = await fetch(assetBaseUrl+path)
|
||||||
|
return await response.text().then((data) => {
|
||||||
|
data = data.replaceAll("$instance_name", instanceNameRef.value)
|
||||||
|
return data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function inputsChanged() {
|
||||||
|
document.getElementById("missingBox").innerHTML = ""
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
::: warning Dependencies for a generator here
|
||||||
|
- loader libraries in meta
|
||||||
|
:::
|
||||||
|
|
||||||
Add an instance generator to the installer and describe it here\
|
Add an instance generator to the installer and describe it here\
|
||||||
**or**\
|
**or**\
|
||||||
PR direct support to Prism
|
PR direct support to Prism
|
||||||
|
|
||||||
|
<div id="inputs">
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Instance Name</td>
|
||||||
|
<td><input v-model="instanceNameRef" @input="inputsChanged" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Minecraft Version</td>
|
||||||
|
<td>
|
||||||
|
<select ref="versionSelector">
|
||||||
|
<option value="loading">Loading Versions...</option>
|
||||||
|
</select>
|
||||||
|
<input type="checkbox" v-model="showSnapshots" @change="getVersions">Show Snapshots</input>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div id="missingBox"></div>
|
||||||
|
<button @click="download">Download</button>
|
||||||
|
</div>
|
||||||
|
|
82
public/resources/prism/patches/dev.frogmc.frogloader.json
Normal file
82
public/resources/prism/patches/dev.frogmc.frogloader.json
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
{
|
||||||
|
"formatVersion": 1,
|
||||||
|
"name": "FrogLoader",
|
||||||
|
"uid": "dev.frogmc.frogloader",
|
||||||
|
"version": "0.0.1-SNAPSHOT",
|
||||||
|
"libraries": [
|
||||||
|
{
|
||||||
|
"downloads": {
|
||||||
|
"artifact": {
|
||||||
|
"size": 120676,
|
||||||
|
"sha1": "9bf1d861a97bdd799ba1ae614a5a1b4f4f86d1d1",
|
||||||
|
"url": "https://maven.frogmc.dev/snapshots/dev/frogmc/frogloader/0.0.1-SNAPSHOT/frogloader-0.0.1-20240608.093414-3.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "dev.frogmc:frogloader:0.0.1-SNAPSHOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dev.frogmc:thyroxine:1.0.0-SNAPSHOT",
|
||||||
|
"downloads": {
|
||||||
|
"artifact": {
|
||||||
|
"size": 36102,
|
||||||
|
"sha1": "9fd87f91ccaf70f818b1f564101feb75306f99a9",
|
||||||
|
"url": "https://maven.frogmc.dev/snapshots/dev/frogmc/thyroxine/1.0.0-SNAPSHOT/thyroxine-1.0.0-20240607.131732-1.jar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "net.fabricmc:sponge-mixin:0.14.0+mixin.0.8.6",
|
||||||
|
"url": "https://maven.fabricmc.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "io.github.llamalad7:mixinextras-common:0.3.6",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "com.electronwill.night-config:toml:3.7.2",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "com.electronwill.night-config:core:3.7.2",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.ow2.asm:asm:9.7",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.ow2.asm:asm-commons:9.7",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.ow2.asm:asm-tree:9.7",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.ow2.asm:asm-util:9.7",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.ow2.asm:asm-analysis:9.7",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.slf4j:slf4j-api:2.0.13",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.apache.logging.log4j:log4j-slf4j2-impl:2.23.1",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.apache.logging.log4j:log4j-api:2.23.1",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "org.apache.logging.log4j:log4j-core:2.23.1",
|
||||||
|
"url": "https://repo.maven.apache.org/maven2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mainClass": "dev.frogmc.frogloader.impl.launch.client.FrogClient",
|
||||||
|
"type": "snapshot"
|
||||||
|
}
|
72
template.md
72
template.md
|
@ -13,7 +13,7 @@ outline: false
|
||||||
import JSZip from 'jszip'
|
import JSZip from 'jszip'
|
||||||
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/template"
|
||||||
const showSnapshots = ref()
|
const showSnapshots = ref()
|
||||||
const versionSelector = ref()
|
const versionSelector = ref()
|
||||||
const modIdRef = ref()
|
const modIdRef = ref()
|
||||||
|
@ -123,47 +123,47 @@ outline: false
|
||||||
let promises = []
|
let promises = []
|
||||||
|
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/gradle/libs.versions.toml").then((data) => {
|
readAsset("/gradle/libs.versions.toml").then((data) => {
|
||||||
gradle.file("libs.versions.toml", data)
|
gradle.file("libs.versions.toml", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAssetBinary("/template/gradle/wrapper/gradle-wrapper.properties").then((data) => {
|
readAssetBinary("/gradle/wrapper/gradle-wrapper.properties").then((data) => {
|
||||||
wrapper.file("gradle-wrapper.properties", data)
|
wrapper.file("gradle-wrapper.properties", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAssetBinary("/template/gradle/wrapper/gradle-wrapper.jar").then((data) => {
|
readAssetBinary("/gradle/wrapper/gradle-wrapper.jar").then((data) => {
|
||||||
wrapper.file("gradle-wrapper.jar", data)
|
wrapper.file("gradle-wrapper.jar", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/.gitignore").then((data) => {
|
readAsset("/.gitignore").then((data) => {
|
||||||
zip.file(".gitignore", data)
|
zip.file(".gitignore", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/build.gradle.kts").then((data) => {
|
readAsset("/build.gradle.kts").then((data) => {
|
||||||
zip.file("build.gradle.kts", data)
|
zip.file("build.gradle.kts", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAssetBinary("/template/gradlew.sh").then((data) => {
|
readAssetBinary("/gradlew.sh").then((data) => {
|
||||||
zip.file("gradlew", data)
|
zip.file("gradlew", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAssetBinary("/template/gradlew.bat").then((data) => {
|
readAssetBinary("/gradlew.bat").then((data) => {
|
||||||
zip.file("gradlew.bat", data)
|
zip.file("gradlew.bat", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/build.gradle.kts").then((data) => {
|
readAsset("/build.gradle.kts").then((data) => {
|
||||||
zip.file("build.gradle.kts", data)
|
zip.file("build.gradle.kts", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/settings.gradle.kts").then((data) => {
|
readAsset("/settings.gradle.kts").then((data) => {
|
||||||
zip.file("settings.gradle.kts", data)
|
zip.file("settings.gradle.kts", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
@ -177,17 +177,17 @@ outline: false
|
||||||
}
|
}
|
||||||
const classFileName = modNameRef.value.replaceAll(" ", "")
|
const classFileName = modNameRef.value.replaceAll(" ", "")
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/src/main/java/Main.java").then((data) => {
|
readAsset("/src/main/java/Main.java").then((data) => {
|
||||||
classes.file(classFileName+"Main", data)
|
classes.file(classFileName+"Main", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/src/main/resources/frog.mod.toml").then((data) => {
|
readAsset("/src/main/resources/frog.mod.toml").then((data) => {
|
||||||
resources.file("frog.mod.toml", data)
|
resources.file("frog.mod.toml", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
promises.push(
|
promises.push(
|
||||||
readAsset("/template/src/main/resources/example_mod.mixins.json").then((data) => {
|
readAsset("/src/main/resources/example_mod.mixins.json").then((data) => {
|
||||||
resources.file(modIdRef.value+".mixins.json", data)
|
resources.file(modIdRef.value+".mixins.json", data)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
@ -215,40 +215,16 @@ outline: false
|
||||||
data = data.replaceAll("$maven_group", mavenGroupRef.value)
|
data = data.replaceAll("$maven_group", mavenGroupRef.value)
|
||||||
data = data.replaceAll("$license", licenseRef.value)
|
data = data.replaceAll("$license", licenseRef.value)
|
||||||
data = data.replaceAll("$loader_version", useSnapshots.value ? latestLoaderSnapshot : latestLoader)
|
data = data.replaceAll("$loader_version", useSnapshots.value ? latestLoaderSnapshot : latestLoader)
|
||||||
data = data.replaceAll("$phytotelma_version", latestPhytotelma)
|
data = data.replaceAll("$phytotelma_version", useSnapshots.value ? latestPhytotelmaSnapshot : latestPhytotelma)
|
||||||
data = data.replaceAll("$game_version", versionSelector.value.value)
|
data = data.replaceAll("$game_version", versionSelector.value.value)
|
||||||
return data
|
return data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function inputsChanged() {
|
||||||
|
document.getElementById("missingBox").innerHTML = ""
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style>
|
|
||||||
select, input {
|
|
||||||
margin-left: 15px;
|
|
||||||
margin-right: 15px;
|
|
||||||
padding: 1px 8px;
|
|
||||||
border-radius: 12px;
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
border: 4px solid var(--vp-c-brand-soft);
|
|
||||||
}
|
|
||||||
button {
|
|
||||||
background-color: var(--vp-button-brand-bg);
|
|
||||||
color: var(--vp-button-brand-text);
|
|
||||||
border-color: var(--vp-button-brand-border);
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
background-color: var(--vp-button-brand-hover-bg);
|
|
||||||
color: var(--vp-button-brand-hover-text);
|
|
||||||
border-color: var(--vp-button-brand-hover-border);
|
|
||||||
}
|
|
||||||
.generate {
|
|
||||||
padding: 4px;
|
|
||||||
border-radius: 14px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
# {{ $frontmatter.title }}
|
# {{ $frontmatter.title }}
|
||||||
|
|
||||||
|
@ -258,20 +234,20 @@ outline: false
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Mod Id</td>
|
<td>Mod ID</td>
|
||||||
<td><input v-model="modIdRef" /></td>
|
<td><input v-model="modIdRef" @input="inputsChanged" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Mod Name</td>
|
<td>Mod Name</td>
|
||||||
<td><input v-model="modNameRef" /></td>
|
<td><input v-model="modNameRef" @input="inputsChanged" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Maven Group</td>
|
<td>Maven Group</td>
|
||||||
<td><input v-model="mavenGroupRef" /></td>
|
<td><input v-model="mavenGroupRef" @input="inputsChanged" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>License (SPDX)</td>
|
<td>License (SPDX)</td>
|
||||||
<td><input v-model="licenseRef" /></td>
|
<td><input v-model="licenseRef" @input="inputsChanged" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Minecraft Version</td>
|
<td>Minecraft Version</td>
|
||||||
|
@ -291,7 +267,7 @@ outline: false
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div id="missingBox"></div>
|
<div id="missingBox"></div>
|
||||||
<button class="generate" @click="generate">Download</button>
|
<button @click="generate">Download</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Latest Versions
|
## Latest Versions
|
||||||
|
|
Loading…
Reference in a new issue