Compare commits
19 commits
writing-do
...
mistress
Author | SHA1 | Date | |
---|---|---|---|
moehreag | 9f44d893c7 | ||
moehreag | d3b3c619bb | ||
moehreag | 8bf19e7d8e | ||
moehreag | 219a6930d5 | ||
moehreag | 72ba059e40 | ||
moehreag | ccd50ba033 | ||
moehreag | 8aea1f7d15 | ||
moehreag | 7059387020 | ||
moehreag | fd526f42d6 | ||
moehreag | 4fde4f5e50 | ||
moehreag | 47bda46ae8 | ||
moehreag | 607b11f55c | ||
moehreag | 698bc04da0 | ||
moehreag | 2b0bd27b1b | ||
moehreag | 006bf0222c | ||
moehreag | 04913e76f5 | ||
moehreag | 15f47d822b | ||
moehreag | bcc9fea5f9 | ||
moehreag | d7eeb492a7 |
|
@ -69,7 +69,7 @@ export default defineConfig({
|
|||
copyright: 'Copyright © 2024 FrogMC, <a href="https://git.frogmc.dev/frogmc/frogmc.dev">licensed under Apache-2.0</a>'
|
||||
},
|
||||
editLink: {
|
||||
pattern: 'https://git.frogmc.dev/frogmc/frogmc.dev/edit/mistress/:path'
|
||||
pattern: 'https://git.frogmc.dev/frogmc/frogmc.dev/_edit/mistress/:path'
|
||||
},
|
||||
outline: 'deep',
|
||||
externalLinkIcon: true
|
||||
|
|
|
@ -141,13 +141,17 @@
|
|||
* 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 {
|
||||
.main button {
|
||||
border-radius: 14px;
|
||||
background-color: var(--vp-button-brand-bg);
|
||||
}
|
||||
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 +165,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);
|
||||
}
|
||||
|
|
10
about.md
10
about.md
|
@ -52,6 +52,14 @@ const members = [
|
|||
title: 'Moderator',
|
||||
links: [
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
avatar: 'https://git.frogmc.dev/ender.png',
|
||||
name: 'Ender',
|
||||
title: 'Developer',
|
||||
links: [
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -69,4 +77,4 @@ const members = [
|
|||
<VPTeamMembers
|
||||
:members="members"
|
||||
/>
|
||||
</VPTeamPage>
|
||||
</VPTeamPage>
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
---
|
||||
outline: deep
|
||||
---
|
||||
|
||||
# Runtime API Examples
|
||||
|
||||
This page demonstrates usage of some of the runtime APIs provided by VitePress.
|
||||
|
||||
The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
|
||||
|
||||
```md
|
||||
<script setup>
|
||||
import { useData } from 'vitepress'
|
||||
|
||||
const { theme, page, frontmatter } = useData()
|
||||
</script>
|
||||
|
||||
## Results
|
||||
|
||||
### Theme Data
|
||||
<pre>{{ theme }}</pre>
|
||||
|
||||
### Page Data
|
||||
<pre>{{ page }}</pre>
|
||||
|
||||
### Page Frontmatter
|
||||
<pre>{{ frontmatter }}</pre>
|
||||
```
|
||||
|
||||
<script setup>
|
||||
import { useData } from 'vitepress'
|
||||
|
||||
const { site, theme, page, frontmatter } = useData()
|
||||
</script>
|
||||
|
||||
## Results
|
||||
|
||||
### Theme Data
|
||||
<pre>{{ theme }}</pre>
|
||||
|
||||
### Page Data
|
||||
<pre>{{ page }}</pre>
|
||||
|
||||
### Page Frontmatter
|
||||
<pre>{{ frontmatter }}</pre>
|
||||
|
||||
## More
|
||||
|
||||
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).
|
|
@ -1,3 +1,8 @@
|
|||
---
|
||||
- head:
|
||||
|
||||
---
|
||||
|
||||
# Client
|
||||
|
||||
Here's how to install FrogLoader to your game.
|
||||
|
@ -21,42 +26,89 @@ Insert section about the installer here
|
|||
const showSnapshots = ref()
|
||||
const versionSelector = ref()
|
||||
let releases = []
|
||||
let snapshots = []
|
||||
let versions = []
|
||||
let loaderLibs
|
||||
|
||||
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 = ""
|
||||
async function getVersions() {
|
||||
let optionString = ""
|
||||
|
||||
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>"
|
||||
for (let version of versions) {
|
||||
optionString += "<option value=\""+version.id+"\">"+version.id+"</option>"
|
||||
}
|
||||
} else {
|
||||
for (let version of releases) {
|
||||
optionString += "<option value=\""+version.id+"\">"+version.id+"</option>"
|
||||
}
|
||||
}
|
||||
|
||||
versionSelector.value.innerHTML = optionString
|
||||
}
|
||||
|
||||
async function fetchLibraries() {
|
||||
let response = await fetch("https://meta.frogmc.dev/v1/loader/version/latest")
|
||||
let json = await response.json()
|
||||
loaderLibs = json
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getGameVersions().then((v) => {
|
||||
versions = v.versions
|
||||
for (let version of versions){
|
||||
if (version.type === "snapshot"){
|
||||
snapshots.push(version)
|
||||
} else {
|
||||
releases.push(version)
|
||||
Promise.all([
|
||||
getGameVersions().then((v) => {
|
||||
versions = v.versions
|
||||
for (let version of versions){
|
||||
if (version.type === "release"){
|
||||
releases.push(version)
|
||||
}
|
||||
}
|
||||
}
|
||||
getVersions()
|
||||
getVersions()
|
||||
}),
|
||||
fetchLibraries()
|
||||
]).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
|
||||
})
|
||||
})
|
||||
|
||||
function download(){
|
||||
async function getLwjglVersion() {
|
||||
const versionUrl = versions[versionSelector.value.selectedIndex].url
|
||||
|
||||
let versionResponse = await fetch(versionUrl)
|
||||
let versionJson = await versionResponse.json()
|
||||
|
||||
for (let lib of versionJson.libraries) {
|
||||
let matcher = lib.name.match(/org.lwjgl:lwjgl:(\d+\.\d+\.\d+.*)/)
|
||||
if (matcher != undefined) {
|
||||
return matcher[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"
|
||||
}
|
||||
}
|
||||
|
||||
async function download(){
|
||||
let missing = []
|
||||
|
||||
if (instanceNameRef.value === undefined){
|
||||
|
@ -73,8 +125,54 @@ Insert section about the installer here
|
|||
|
||||
let zip = JSZip()
|
||||
let promises = []
|
||||
let lwjglVersion = await 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("$override_env", "true")
|
||||
data = data.replaceAll("$env", "Env=@Variant(\\0\\0\\0\\b\\0\\0\\0\\x1\\0\\0\\0\\x36\\0_\\0_\\0G\\0L\\0_\\0T\\0H\\0R\\0\\x45\\0\\x41\\0\\x44\\0\\x45\\0\\x44\\0_\\0O\\0P\\0T\\0I\\0M\\0I\\0Z\\0\\x41\\0T\\0I\\0O\\0N\\0S\\0\\0\\0\\n\\0\\0\\0\\x2\\0\\x30)")
|
||||
} else {
|
||||
data = data.replaceAll("$override_env", "false")
|
||||
data = data.replaceAll("$env", "@Variant(\\0\\0\\0\\b\\0\\0\\0\\0)")
|
||||
}
|
||||
zip.file("instance.cfg", data)
|
||||
})
|
||||
)
|
||||
|
||||
promises.push(
|
||||
readAsset("/patches/dev.frogmc.frogloader.json").then((data) => {
|
||||
let json = JSON.parse(data)
|
||||
let libs = json.libraries
|
||||
for (let lib of loaderLibs.libraries) {
|
||||
let value = {
|
||||
"downloads": {
|
||||
"artifact": {
|
||||
"url": lib.url,
|
||||
"size": lib.size,
|
||||
"sha1": lib.sha1
|
||||
}
|
||||
},
|
||||
"name": lib.name
|
||||
}
|
||||
libs.push(value)
|
||||
}
|
||||
zip.folder("patches").file("dev.frogmc.frogloader.json", JSON.stringify(json))
|
||||
})
|
||||
)
|
||||
|
||||
Promise.all(promises).then((values) => {
|
||||
zip.generateAsync({type:"blob"}).then(function (blob) {
|
||||
|
@ -88,8 +186,9 @@ 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", loaderLibs.version)
|
||||
.replaceAll("$game_version", versionSelector.value.value)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -98,10 +197,6 @@ Insert section about the installer here
|
|||
}
|
||||
</script>
|
||||
|
||||
::: warning Dependencies for a generator here
|
||||
- loader libraries in meta
|
||||
:::
|
||||
|
||||
Add an instance generator to the installer and describe it here\
|
||||
**or**\
|
||||
PR direct support to Prism
|
||||
|
@ -122,12 +217,8 @@ PR direct support to Prism
|
|||
<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>
|
||||
<button id="download" @click="download" disabled>Loading...</button>
|
||||
</div>
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
# Markdown Extension Examples
|
||||
|
||||
This page demonstrates some of the built-in markdown extensions provided by VitePress.
|
||||
|
||||
## Syntax Highlighting
|
||||
|
||||
VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
|
||||
|
||||
**Input**
|
||||
|
||||
````md
|
||||
```js{4}
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
msg: 'Highlighted!'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
**Output**
|
||||
|
||||
```js{4}
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
msg: 'Highlighted!'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Custom Containers
|
||||
|
||||
**Input**
|
||||
|
||||
```md
|
||||
::: info
|
||||
This is an info box.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
This is a tip.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
This is a warning.
|
||||
:::
|
||||
|
||||
::: danger
|
||||
This is a dangerous warning.
|
||||
:::
|
||||
|
||||
::: details
|
||||
This is a details block.
|
||||
:::
|
||||
```
|
||||
|
||||
**Output**
|
||||
|
||||
::: info
|
||||
This is an info box.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
This is a tip.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
This is a warning.
|
||||
:::
|
||||
|
||||
::: danger
|
||||
This is a dangerous warning.
|
||||
:::
|
||||
|
||||
::: details
|
||||
This is a details block.
|
||||
:::
|
||||
|
||||
## More
|
||||
|
||||
Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).
|
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=$env
|
||||
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=false
|
||||
OverrideConsole=false
|
||||
OverrideEnv=$override_env
|
||||
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=
|
||||
iconKey=default
|
||||
lastLaunchTime=1717870111279
|
||||
lastTimePlayed=5229
|
||||
linkedInstances=[]
|
||||
name=$instance_name
|
||||
notes=
|
||||
totalTimePlayed=0
|
30
public/resources/prism/mmc-pack.json
Normal file
30
public/resources/prism/mmc-pack.json
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"components": [
|
||||
{
|
||||
"cachedName": "LWJGL $lwjgl_major",
|
||||
"cachedVolatile": true,
|
||||
"dependencyOnly": true,
|
||||
"uid": "org.lwjgl$lwjgl_major",
|
||||
"version": "$lwjgl_version"
|
||||
},
|
||||
{
|
||||
"cachedName": "Minecraft",
|
||||
"cachedRequires": [
|
||||
{
|
||||
"suggests": "$lwjgl_version",
|
||||
"uid": "org.lwjgl$lwjgl_major"
|
||||
}
|
||||
],
|
||||
"important": true,
|
||||
"uid": "net.minecraft",
|
||||
"version": "$game_version"
|
||||
},
|
||||
{
|
||||
"cachedName": "FrogLoader",
|
||||
"important": true,
|
||||
"uid": "dev.frogmc.frogloader",
|
||||
"version": "$loader_version"
|
||||
}
|
||||
],
|
||||
"formatVersion": 1
|
||||
}
|
|
@ -2,81 +2,8 @@
|
|||
"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"
|
||||
}
|
||||
],
|
||||
"version": "$loader_version",
|
||||
"libraries": [ ],
|
||||
"mainClass": "dev.frogmc.frogloader.impl.launch.client.FrogClient",
|
||||
"type": "snapshot"
|
||||
}
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
import dev.frogmc.phytotelma.ext.minecraft
|
||||
import dev.frogmc.phytotelma.ext.loader
|
||||
|
||||
plugins {
|
||||
id("java")
|
||||
id("dev.frogmc.phytotelma").version("$phytotelma_version")
|
||||
alias(libs.plugins.phytotelma)
|
||||
}
|
||||
|
||||
group = "$maven_group"
|
||||
|
@ -13,7 +9,21 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
minecraft(libs.versions.minecraft).loader(libs.versions.loader)
|
||||
dependencies {
|
||||
|
||||
}
|
||||
|
||||
phytotelma {
|
||||
minecraft {
|
||||
version = project.libs.versions.minecraft
|
||||
}
|
||||
loader {
|
||||
version = project.libs.versions.frogloader
|
||||
}
|
||||
froglib {
|
||||
version = project.libs.versions.froglib
|
||||
}
|
||||
}
|
||||
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_21
|
||||
|
|
|
@ -1,9 +1,16 @@
|
|||
[versions]
|
||||
|
||||
phytotelma = "$phytotelma_version"
|
||||
minecraft = "$game_version"
|
||||
loader = "$loader_version"
|
||||
frogloader = "$loader_version"
|
||||
froglib = "$froglib_version"
|
||||
|
||||
[libraries]
|
||||
|
||||
# technically unused
|
||||
minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }
|
||||
loader = { module = "dev.frogmc:frogloader", version.ref = "loader" }
|
||||
frogloader = { module = "dev.frogmc:frogloader", version.ref = "frogloader" }
|
||||
froglib = { module = "dev.frogmc:froglib", version.ref = "froglib" }
|
||||
|
||||
[plugins]
|
||||
|
||||
phytotelma = { id = "dev.frogmc.phytotelma", version.ref = "phytotelma" }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#Mon May 13 10:13:59 CEST 2024
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
0
public/resources/template/gradlew.bat
vendored
Normal file → Executable file
0
public/resources/template/gradlew.bat
vendored
Normal file → Executable file
|
@ -3,7 +3,7 @@ package $maven_group.$mod_id;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import dev.frogmc.froglib.entrypoints.MainExtension;
|
||||
import dev.frogmc.froglib.entrypoints.api.MainExtension;
|
||||
import dev.frogmc.frogloader.api.mod.ModProperties;
|
||||
|
||||
public class $mod_name_pascalMain implements MainExtension {
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
"minVersion": "0.8",
|
||||
"package": "$maven_group.mixin",
|
||||
"compatibilityLevel": "JAVA_21",
|
||||
"mixins": [
|
||||
|
||||
],
|
||||
"server": [
|
||||
|
||||
],
|
||||
|
|
|
@ -17,5 +17,5 @@ depends = [
|
|||
]
|
||||
|
||||
[frog.extensions]
|
||||
mixin_config = "$mod_id.mixins.json"
|
||||
mixin = "$mod_id.mixins.json"
|
||||
main = "$maven_group.$mod_name_pascalMain"
|
||||
|
|
13
spec/fmt.md
13
spec/fmt.md
|
@ -31,16 +31,17 @@ provides = [
|
|||
]
|
||||
|
||||
[frog.extensions] # key-value pairs for whatever else is needed (Entrypoints, custom values, lists of files, indicators...)
|
||||
mixin_config = "example_mod.mixins.json"
|
||||
frog_aw = "example_mod.accesswidener"
|
||||
pre_launch = "com/example/frog/PreLaunch"
|
||||
mixin = "example_mod.mixins.json"
|
||||
accesswidener = "example_mod.accesswidener"
|
||||
prelaunch = "com.example.frog.PreLaunch"
|
||||
loading_type = "required" # the type 'required' is implicit if it isn't present. Other values are not specified, but using 'optional' is recommended.
|
||||
```
|
||||
These keys are automatically inserted by [Phytotelma](/contributing/tools#phytotelma) for generated metadata files and their host mods respectively.
|
||||
You should never need to insert them yourself.
|
||||
```toml
|
||||
included_jars = [
|
||||
included_jars = [[
|
||||
{ id = "mod_id", path = "META-INF/jars/mod.jar" }
|
||||
]
|
||||
]]
|
||||
phytotelma.generated = true
|
||||
|
||||
```
|
||||
```
|
||||
|
|
115
template.md
115
template.md
|
@ -22,66 +22,95 @@ outline: false
|
|||
const licenseRef = ref()
|
||||
const useSnapshots = ref()
|
||||
let releases = []
|
||||
let snapshots = []
|
||||
let versions = []
|
||||
let latestLoader
|
||||
let latestPhytotelma
|
||||
let latestFrogLib
|
||||
let latestLoaderSnapshot
|
||||
let latestPhytotelmaSnapshot
|
||||
let latestFrogLibSnapshot
|
||||
|
||||
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 = ""
|
||||
async function getVersions() {
|
||||
let optionString = ""
|
||||
|
||||
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>"
|
||||
for (let version of versions) {
|
||||
optionString += "<option value=\""+version.id+"\">"+version.id+"</option>"
|
||||
}
|
||||
} else {
|
||||
for (let version of releases) {
|
||||
optionString += "<option value=\""+version.id+"\">"+version.id+"</option>"
|
||||
}
|
||||
}
|
||||
|
||||
versionSelector.value.innerHTML = optionString
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getGameVersions().then((v) => {
|
||||
versions = v.versions
|
||||
for (let version of versions){
|
||||
if (version.type === "snapshot"){
|
||||
snapshots.push(version)
|
||||
} else {
|
||||
releases.push(version)
|
||||
Promise.all([
|
||||
getGameVersions().then((v) => {
|
||||
versions = v.versions
|
||||
for (let version of versions){
|
||||
if (version.type === "release"){
|
||||
releases.push(version)
|
||||
}
|
||||
}
|
||||
}
|
||||
getVersions()
|
||||
getVersions()
|
||||
}),
|
||||
getLatestProjectVersions()
|
||||
]).then((unused) => {
|
||||
let button = document.getElementById("generate")
|
||||
button.innerHTML = "Download"
|
||||
button.disabled = false
|
||||
})
|
||||
getLatestProjectVersions()
|
||||
})
|
||||
|
||||
function getLatestProjectVersions() {
|
||||
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("snapshots", "frogloader").then((v) => {
|
||||
latestLoaderSnapshot = v
|
||||
document.getElementById("frogLoaderVersionSnapshotBadge").innerHTML = v
|
||||
})
|
||||
fetchVersionFromMaven("snapshots", "phytotelma").then((v) => {
|
||||
latestPhytotelmaSnapshot = v
|
||||
document.getElementById("phytotelmaVersionSnapshotBadge").innerHTML = v
|
||||
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) => {
|
||||
latestFrogLib = 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
|
||||
}),
|
||||
fetchVersionFromMaven("snapshots", "froglib").then((v) => {
|
||||
latestFrogLibSnapshot = v
|
||||
document.getElementById("froglibVersionSnapshotBadge").innerHTML = v
|
||||
}).catch((err) => {
|
||||
document.getElementById("froglibVersionSnapshotBadge").innerHTML = "No version found!"
|
||||
}),
|
||||
]).then((data) => {
|
||||
if (latestLoader === undefined ||
|
||||
latestPhytotelma === undefined ||
|
||||
latestFrogLib === undefined) {
|
||||
useSnapshots.value = true
|
||||
document.getElementById("snapshotCheckbox").setAttribute("disabled", '')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -172,13 +201,14 @@ outline: false
|
|||
let java = main.folder("java")
|
||||
let resources = main.folder("resources")
|
||||
let classes = java
|
||||
for (let part of mavenGroupRef.value.split(/\\./g)) {
|
||||
for (let part of mavenGroupRef.value.split(".")) {
|
||||
classes = classes.folder(part)
|
||||
}
|
||||
classes = classes.folder(modIdRef.value)
|
||||
const classFileName = modNameRef.value.replaceAll(" ", "")
|
||||
promises.push(
|
||||
readAsset("/src/main/java/Main.java").then((data) => {
|
||||
classes.file(classFileName+"Main", data)
|
||||
classes.file(classFileName+"Main.java", data)
|
||||
})
|
||||
)
|
||||
promises.push(
|
||||
|
@ -216,6 +246,7 @@ outline: false
|
|||
data = data.replaceAll("$license", licenseRef.value)
|
||||
data = data.replaceAll("$loader_version", useSnapshots.value ? latestLoaderSnapshot : latestLoader)
|
||||
data = data.replaceAll("$phytotelma_version", useSnapshots.value ? latestPhytotelmaSnapshot : latestPhytotelma)
|
||||
data = data.replaceAll("$froglib_version", useSnapshots.value ? latestFrogLibSnapshot : latestFrogLib)
|
||||
data = data.replaceAll("$game_version", versionSelector.value.value)
|
||||
return data
|
||||
})
|
||||
|
@ -261,18 +292,20 @@ outline: false
|
|||
<tr>
|
||||
<td>Library Versions</td>
|
||||
<td>
|
||||
<input type="checkbox" v-model="useSnapshots">Use Snapshots (Beta Versions)</input>
|
||||
<input type="checkbox" v-model="useSnapshots" id="snapshotCheckbox">Use Snapshots (Beta Versions)</input>
|
||||
</td>
|
||||
</tr>
|
||||
</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