primitive mmc/prism pack generation (hardcoded libs)
This commit is contained in:
parent
03262dfbdc
commit
d7eeb492a7
|
@ -147,7 +147,10 @@ button {
|
|||
padding: 4px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
button:hover {
|
||||
button:disabled {
|
||||
background-color: var(--vp-c-default-soft);
|
||||
}
|
||||
button:hover:not(:disabled) {
|
||||
background-color: var(--vp-button-brand-hover-bg);
|
||||
color: var(--vp-button-brand-hover-text);
|
||||
border-color: var(--vp-button-brand-hover-border);
|
||||
|
@ -161,8 +164,12 @@ select, input {
|
|||
border-radius: 12px;
|
||||
}
|
||||
select {
|
||||
background-color: var(--vp-c-brand-soft);
|
||||
text-align: center;
|
||||
}
|
||||
select:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
input {
|
||||
border: 4px solid var(--vp-c-brand-soft);
|
||||
}
|
||||
|
|
|
@ -20,9 +20,18 @@ Insert section about the installer here
|
|||
const instanceNameRef = ref()
|
||||
const showSnapshots = ref()
|
||||
const versionSelector = ref()
|
||||
const useSnapshots = ref()
|
||||
let releases = []
|
||||
let snapshots = []
|
||||
let versions = []
|
||||
let latestThyroxine
|
||||
let latestThyroxineUrl
|
||||
let latestThyroxineSnapshot
|
||||
let latestThyroxineSnapshotUrl
|
||||
let latestLoader
|
||||
let latestLoaderUrl
|
||||
let latestLoaderSnapshot
|
||||
let latestLoaderSnapshotUrl
|
||||
|
||||
async function getGameVersions() {
|
||||
const response = await fetch("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json")
|
||||
|
@ -42,7 +51,60 @@ Insert section about the installer here
|
|||
}
|
||||
}
|
||||
|
||||
function getLatestProjectVersions() {
|
||||
return Promise.all([
|
||||
fetchVersionFromMaven("releases", "frogloader").then((v) => {
|
||||
latestLoader = v
|
||||
fetchVersionUrlFromMaven("releases", "frogloader", v).then((v) => {
|
||||
latestLoader = v
|
||||
})
|
||||
}),
|
||||
fetchVersionFromMaven("snapshots", "frogloader").then((v) => {
|
||||
latestLoaderSnapshot = v
|
||||
fetchVersionUrlFromMaven("snapshots", "frogloader", v).then((v) => {
|
||||
latestLoaderSnapshotUrl = v
|
||||
})
|
||||
}),
|
||||
fetchVersionFromMaven("releases", "thyroxine").then((v) => {
|
||||
latestThyroxine = v
|
||||
fetchVersionUrlFromMaven("releases", "thyroxine", v).then((v) => {
|
||||
latestThyroxineUrl = v
|
||||
})
|
||||
}),
|
||||
fetchVersionFromMaven("snapshots", "thyroxine").then((v) => {
|
||||
latestThyroxineSnapshot = v
|
||||
fetchVersionUrlFromMaven("snapshots", "thyroxine", v).then((v) => {
|
||||
latestThyroxineSnapshotUrl = v
|
||||
})
|
||||
})
|
||||
]),
|
||||
}
|
||||
|
||||
async function fetchVersionFromMaven(repository, name) {
|
||||
const response = await fetch("https://maven.frogmc.dev/"+repository+"/dev/frogmc/"+name+"/maven-metadata.xml")
|
||||
if (!response.ok){
|
||||
return Promise.reject("No Version found for artifact "+name+" in repository "+repository)
|
||||
}
|
||||
const text = await response.text()
|
||||
const parser = new DOMParser()
|
||||
const doc = parser.parseFromString(text, "text/xml")
|
||||
return doc.getElementsByTagName("latest")[0].textContent
|
||||
}
|
||||
|
||||
async function fetchVersionUrlFromMaven(repository, name, version) {
|
||||
const response = await fetch("https://maven.frogmc.dev/"+repository+"/dev/frogmc/"+name+"/"+version+"/maven-metadata.xml")
|
||||
if (!response.ok){
|
||||
return "https://maven.frogmc.dev/"+repository+"/dev/frogmc/"+name+"/"+version+"/"+name+"-"+version+".jar"
|
||||
}
|
||||
const text = await response.text()
|
||||
const parser = new DOMParser()
|
||||
const doc = parser.parseFromString(text, "text/xml")
|
||||
console.log(doc)
|
||||
return doc.getElementsByTagName("snapshotVersion")[0].getElementsByTagName("value")[0].textContent
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
Promise.all([
|
||||
getGameVersions().then((v) => {
|
||||
versions = v.versions
|
||||
for (let version of versions){
|
||||
|
@ -53,9 +115,48 @@ Insert section about the installer here
|
|||
}
|
||||
}
|
||||
getVersions()
|
||||
}),
|
||||
getLatestProjectVersions()
|
||||
]).then((unused) => {
|
||||
let button = document.getElementById("download")
|
||||
button.innerHTML = "Download"
|
||||
button.disabled = false
|
||||
}).catch((err) => {
|
||||
let html = "<div class=\"danger custom-block\"><p class=\"custom-block-title\">Error loading versions</p><p>"
|
||||
html += err
|
||||
html += "</p></div>"
|
||||
document.getElementById("missingBox").innerHTML = html
|
||||
})
|
||||
})
|
||||
|
||||
async function getLwjglVersion() {
|
||||
const versionUrl = versions[versionSelector.value.selectedIndex].url
|
||||
|
||||
let versionResponse = await fetch(versionUrl)
|
||||
let versionJson = await versionResponse.json()
|
||||
|
||||
for (let lib of version.libraries) {
|
||||
let matcher = lib.name.matcher(/org.lwjgl:lwjgl:(\d+\.\d+\.\d+.*)/)
|
||||
if (matcher.matches()) {
|
||||
return matcher.group(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getPlatform(){
|
||||
const appVersion = navigator.appVersion
|
||||
if(appVersion.indexOf("Linux")!=-1 || appVersion.indexOf("X11")!=-1 || appVersion.indexOf("Wayland")!=-1){
|
||||
return "linux"
|
||||
} else if(appVersion.indexOf("Win")!=-1){
|
||||
return "windows"
|
||||
} else if(appVersion.indexOf("Mac")!=-1){
|
||||
if(navigator.platform.indexOf("x86-64")!=-1){
|
||||
return "macos-x64"
|
||||
}
|
||||
return "macos-arm64"
|
||||
}
|
||||
}
|
||||
|
||||
function download(){
|
||||
let missing = []
|
||||
|
||||
|
@ -73,8 +174,43 @@ Insert section about the installer here
|
|||
|
||||
let zip = JSZip()
|
||||
let promises = []
|
||||
let lwjglVersion = getLwjglVersion()
|
||||
let platform = getPlatform()
|
||||
|
||||
|
||||
promises.push(
|
||||
readAsset("/mmc-pack.json").then((data) => {
|
||||
if (lwjglVersion.split(".")[0] == 3) {
|
||||
data = data.replaceAll("$lwjgl_major", "3")
|
||||
} else {
|
||||
data = data.replaceAll("$lwjgl_major", "")
|
||||
}
|
||||
zip.file("mmc-pack.json", data
|
||||
.replaceAll("$lwjgl_version", lwjglVersion))
|
||||
})
|
||||
)
|
||||
|
||||
promises.push(
|
||||
readAsset("/instance.cfg").then((data) => {
|
||||
if (platform === "linux") {
|
||||
data = data.replaceAll("$use_wrapper_command", "true")
|
||||
data = data.replaceAll("$wrapper_command", "env __GL_THREADED_OPTIMIZATIONS=0")
|
||||
} else {
|
||||
data = data.replaceAll("$use_wrapper_command", "false")
|
||||
data = data.replaceAll("$wrapper_command", "")
|
||||
}
|
||||
zip.file("instance.cfg", data)
|
||||
})
|
||||
)
|
||||
|
||||
promises.push(
|
||||
readAsset("/patches/dev.frogmc.frogloader.json").then((data) => {
|
||||
data = data.replaceAll("$thyroxine_version", useSnapshots.value ? latestThyroxineSnapshot : latestThyroxine)
|
||||
data = data.replaceAll("$loader_url", useSnapshots.value ? latestLoaderSnapshotUrl : latestLoaderUrl)
|
||||
data = data.replaceAll("$thyroxine_url", useSnapshots.value ? latestThyroxineSnapshotUrl : latestThyroxineUrl)
|
||||
zip.folder("patches").file("dev.frogmc.frogloader.json", data)
|
||||
})
|
||||
)
|
||||
|
||||
Promise.all(promises).then((values) => {
|
||||
zip.generateAsync({type:"blob"}).then(function (blob) {
|
||||
|
@ -88,8 +224,8 @@ Insert section about the installer here
|
|||
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
|
||||
return data.replaceAll("$instance_name", instanceNameRef.value)
|
||||
.replaceAll("$loader_version", useSnapshots.value ? latestLoaderSnapshot : latestLoader)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -122,6 +258,12 @@ PR direct support to Prism
|
|||
<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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
|
@ -129,5 +271,5 @@ PR direct support to Prism
|
|||
</tbody>
|
||||
</table>
|
||||
<div id="missingBox"></div>
|
||||
<button @click="download">Download</button>
|
||||
<button id="download" @click="download" disabled>Loading...</button>
|
||||
</div>
|
||||
|
|
74
public/resources/prism/instance.cfg
Normal file
74
public/resources/prism/instance.cfg
Normal file
|
@ -0,0 +1,74 @@
|
|||
[General]
|
||||
AutoCloseConsole=false
|
||||
CloseAfterLaunch=false
|
||||
ConfigVersion=1.2
|
||||
CustomGLFWPath=
|
||||
CustomOpenALPath=
|
||||
EnableFeralGamemode=false
|
||||
EnableMangoHud=false
|
||||
Env=@Variant(\0\0\0\b\0\0\0\0)
|
||||
ExportAuthor=
|
||||
ExportName=
|
||||
ExportOptionalFiles=true
|
||||
ExportSummary=
|
||||
ExportVersion=1.0.0
|
||||
IgnoreJavaCompatibility=false
|
||||
InstanceAccountId=
|
||||
InstanceType=OneSix
|
||||
JavaArchitecture=
|
||||
JavaPath=
|
||||
JavaRealArchitecture=
|
||||
JavaSignature=
|
||||
JavaVendor=
|
||||
JavaVersion=
|
||||
JoinServerOnLaunch=false
|
||||
JoinServerOnLaunchAddress=
|
||||
JvmArgs=
|
||||
LaunchMaximized=false
|
||||
LogPrePostOutput=true
|
||||
ManagedPack=false
|
||||
ManagedPackID=
|
||||
ManagedPackName=
|
||||
ManagedPackType=
|
||||
ManagedPackVersionID=
|
||||
ManagedPackVersionName=
|
||||
MaxMemAlloc=2048
|
||||
MinMemAlloc=512
|
||||
MinecraftWinHeight=480
|
||||
MinecraftWinWidth=854
|
||||
OnlineFixes=false
|
||||
OverrideCommands=$use_wrapper_command
|
||||
OverrideConsole=false
|
||||
OverrideEnv=false
|
||||
OverrideGameTime=false
|
||||
OverrideJava=false
|
||||
OverrideJavaArgs=false
|
||||
OverrideJavaLocation=false
|
||||
OverrideLegacySettings=false
|
||||
OverrideMemory=false
|
||||
OverrideMiscellaneous=false
|
||||
OverrideNativeWorkarounds=false
|
||||
OverridePerformance=false
|
||||
OverrideWindow=false
|
||||
PermGen=128
|
||||
PostExitCommand=
|
||||
PreLaunchCommand=
|
||||
Profiler=
|
||||
QuitAfterGameStop=false
|
||||
RecordGameTime=true
|
||||
ShowConsole=false
|
||||
ShowConsoleOnError=true
|
||||
ShowGameTime=true
|
||||
UseAccountForInstance=false
|
||||
UseDiscreteGpu=true
|
||||
UseNativeGLFW=false
|
||||
UseNativeOpenAL=false
|
||||
UseZink=false
|
||||
WrapperCommand="$wrapper_command"
|
||||
iconKey=default
|
||||
lastLaunchTime=1717870111279
|
||||
lastTimePlayed=5229
|
||||
linkedInstances=[]
|
||||
name=$instance_name
|
||||
notes=
|
||||
totalTimePlayed=0
|
32
public/resources/prism/mmc-pack.json
Normal file
32
public/resources/prism/mmc-pack.json
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"components": [
|
||||
{
|
||||
"cachedName": "LWJGL $lwjgl_major",
|
||||
"cachedVersion": "$lwjlg_version",
|
||||
"cachedVolatile": true,
|
||||
"dependencyOnly": true,
|
||||
"uid": "org.lwjgl$lwjgl_major",
|
||||
"version": "$lwjlg_version"
|
||||
},
|
||||
{
|
||||
"cachedName": "Minecraft",
|
||||
"cachedRequires": [
|
||||
{
|
||||
"suggests": "$lwjlg_version",
|
||||
"uid": "org.lwjgl$lwjgl_major"
|
||||
}
|
||||
],
|
||||
"cachedVersion": "$game_version",
|
||||
"important": true,
|
||||
"uid": "net.minecraft",
|
||||
"version": "$game_version"
|
||||
},
|
||||
{
|
||||
"cachedName": "FrogLoader",
|
||||
"important": true,
|
||||
"uid": "dev.frogmc.frogloader",
|
||||
"version": "$loader_version"
|
||||
}
|
||||
],
|
||||
"formatVersion": 1
|
||||
}
|
|
@ -2,25 +2,21 @@
|
|||
"formatVersion": 1,
|
||||
"name": "FrogLoader",
|
||||
"uid": "dev.frogmc.frogloader",
|
||||
"version": "0.0.1-SNAPSHOT",
|
||||
"version": "$loader_version",
|
||||
"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"
|
||||
"url": "$loader_url"
|
||||
}
|
||||
},
|
||||
"name": "dev.frogmc:frogloader:0.0.1-SNAPSHOT"
|
||||
"name": "dev.frogmc:frogloader:$loader_version"
|
||||
},
|
||||
{
|
||||
"name": "dev.frogmc:thyroxine:1.0.0-SNAPSHOT",
|
||||
"name": "dev.frogmc:thyroxine:$thyroxine_version",
|
||||
"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"
|
||||
"url": "$thyroxine_url"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -13,7 +13,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
minecraft(libs.versions.minecraft).loader(libs.versions.loader)
|
||||
dependencies {
|
||||
|
||||
}
|
||||
|
||||
phytotelma {
|
||||
loader(project.libs.versions.frogloader)
|
||||
minecraft(project.libs.versions.minecraft)
|
||||
}
|
||||
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_21
|
||||
|
|
30
template.md
30
template.md
|
@ -48,6 +48,7 @@ outline: false
|
|||
}
|
||||
|
||||
onMounted(() => {
|
||||
Promise.all([
|
||||
getGameVersions().then((v) => {
|
||||
versions = v.versions
|
||||
for (let version of versions){
|
||||
|
@ -58,31 +59,44 @@ outline: false
|
|||
}
|
||||
}
|
||||
getVersions()
|
||||
})
|
||||
}),
|
||||
getLatestProjectVersions()
|
||||
]).then((unused) => {
|
||||
let button = document.getElementById("generate")
|
||||
button.innerHTML = "Download"
|
||||
button.disabled = false
|
||||
})
|
||||
})
|
||||
|
||||
function getLatestProjectVersions() {
|
||||
return Promise.all([
|
||||
fetchVersionFromMaven("releases", "frogloader").then((v) => {
|
||||
latestLoader = 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("releases", "froglib").then((v) => {
|
||||
latestPhytotelma = v
|
||||
document.getElementById("froglibVersionReleaseBadge").innerHTML = v
|
||||
}).catch((err) => {
|
||||
document.getElementById("froglibVersionReleaseBadge").innerHTML = "No version found!"
|
||||
}),*/
|
||||
fetchVersionFromMaven("snapshots", "frogloader").then((v) => {
|
||||
latestLoaderSnapshot = v
|
||||
document.getElementById("frogLoaderVersionSnapshotBadge").innerHTML = v
|
||||
})
|
||||
}),
|
||||
fetchVersionFromMaven("snapshots", "phytotelma").then((v) => {
|
||||
latestPhytotelmaSnapshot = v
|
||||
document.getElementById("phytotelmaVersionSnapshotBadge").innerHTML = v
|
||||
})
|
||||
])
|
||||
}
|
||||
|
||||
async function fetchVersionFromMaven(repository, name) {
|
||||
|
@ -230,6 +244,10 @@ outline: false
|
|||
|
||||
## Inputs
|
||||
|
||||
::: warning TODO
|
||||
- Add froglib dependency to template
|
||||
:::
|
||||
|
||||
<div id="inputs">
|
||||
<table>
|
||||
<tbody>
|
||||
|
@ -267,12 +285,14 @@ outline: false
|
|||
</tbody>
|
||||
</table>
|
||||
<div id="missingBox"></div>
|
||||
<button @click="generate">Download</button>
|
||||
<button id="generate" @click="generate" disabled>Download</button>
|
||||
</div>
|
||||
|
||||
## Latest Versions
|
||||
|
||||
[FrogLoader](/contributing/tools.md#frogloader) <Badge type="tip" id="frogLoaderVersionReleaseBadge">Loading Release...</Badge> <Badge type="warning" id="frogLoaderVersionSnapshotBadge">Loading Snapshot...</Badge>
|
||||
|
||||
[FrogLib](/contributing/tools.md#froglib) <Badge type="tip" id="froglibVersionReleaseBadge">Loading Release...</Badge> <Badge type="warning" id="froglibVersionSnapshotBadge">Loading Snapshot...</Badge>
|
||||
|
||||
[Phytotelma](/contributing/tools.md#phytotelma) <Badge type="tip" id="phytotelmaVersionReleaseBadge">Loading Release...</Badge> <Badge type="warning" id="phytotelmaVersionSnapshotBadge">Loading Snapshot...</Badge>
|
||||
|
||||
|
|
Loading…
Reference in a new issue