Skip to content

Commit

Permalink
Add export script for SLOP2
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremiahwinsley committed Feb 4, 2022
1 parent a2e40d1 commit ce6f2b6
Show file tree
Hide file tree
Showing 4 changed files with 199 additions and 2 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ATM6 Packager

#### This script requires Powershell 7 (included with VS Code).
#### This script requires Powershell 7 (available from https://github.com/PowerShell/PowerShell).

This script expects that you have a Curseforge instance named `All_The_Mods_6`, located in `C:\Games\CurseForge\Minecraft\Instances\`.

Expand Down
179 changes: 179 additions & 0 deletions export_slop2.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
param([string]$version = "")
$ErrorActionPreference = "Stop"

$source = "C:\Games\CurseForge\Minecraft\Instances\All the Mods - Slice of Pi2 - ATM SLOP2 - ATM6 Lite"
$overridePath = "$PSScriptRoot\overrides"
$manifestPath = "$PSScriptRoot\manifest.json"
$serverPath = "$PSScriptRoot\server"
$cachePath = "$PSScriptRoot\cache"
$tmpPath = "$PSScriptRoot\tmp"
$modsPath = "$tmpPath\mods"
$batPath = "$tmpPath\startserver.bat"
$shPath = "$tmpPath\startserver.sh"

$ignore = @(
"263420", # Xaero's Minimap
"317780", # Xaero's World Map
"232131", # Default Options
"231275", # Ding
"367706", # FancyMenu
"261725", # ItemZoom
"243863", # No Potion Shift
"305373", # Reload Audio Driver
"325492", # Light Overlay
"296468", # NoFog
"308240", # Cherished Worlds
"362791", # Cull Particles
"291788", # Server Tab Info
"326950", # Screenshot to Clipboard
"237701", # ReAuth
"391382", # MoreOverlays
"358191", # PackMenu
"271740", # Toast Control
"428199", # Out Of Sight
"431430", # FlickerFix
"240630", # Just Enough Resources
"532127", # Legendary Tooltips
"499826", # Advancement Plaques
"348521", # Cloth Config API
"60089" , # Mouse Tweaks
"446253", # Better Biome Blend
"502561", # Equipment Compare
"403499" # JEI Professions
)


if ( -Not (Test-Path $source)) {
Write-Host "No CurseForge instance found at '$source'" -ForegroundColor Red
exit 1
}

New-Item -Path $overridePath -Type Directory -Force | Out-Null
Copy-Item -Path "$source/*" -Include "config", "defaultconfigs", "kubejs", "packmenu" -Destination $overridePath -Recurse -Force

if ($version.Length -eq 0) {
$tweaks = "$overridePath\config\allthetweaks-common.toml"
$version = @("major", "minor", "minorrev") | ForEach-Object {
Select-String -Path $tweaks -Pattern "$_ = (\d+)" | ForEach-Object { $_.matches.Groups[1].value }
} | Join-String -Separator "."
}

Write-Host "Loading CurseForge manifest..."
Write-HOST "If you have added any mods, you MUST run the game once to update the Curseforge instance JSON.".
$instancePath = "$source\minecraftinstance.json"
$instanceJson = Get-Content $instancePath -raw | ConvertFrom-Json

$forgeVersion = $instanceJson.baseModLoader.forgeVersion;
Write-Host "Manifest uses Forge $forgeVersion."

# start generate Forge server files

$installerUrl = "http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.16.5-${forgeVersion}/forge-1.16.5-${forgeVersion}-installer.jar"
$installerFile = Split-Path -Path $installerUrl -Leaf
$installerPath = "$cachePath\$installerFile"
$installedPath = "$serverPath\forge-${forgeVersion}"

if (-Not (Test-Path -Path $installerPath)) {
Write-Host "$installerFile not found in cache. Downloading..."
New-Item -Path $cachePath -Type Directory -Force | Out-Null
Invoke-WebRequest -Uri $installerUrl -OutFile $installerPath
}

if (-Not (Test-Path -Path $installedPath)) {
Write-Host "No existing installation for Forge $forgeVersion. Running installer..."
New-Item -Path $installedPath -Type Directory -Force | Out-Null
try {
Push-Location -Path $installedPath
java -jar $installerPath -installServer
}
finally {
Pop-Location
}
}

Write-Host "Server installation done."

# end generate Forge server files
# start generate server pack

$serverDest = "SLOP2-dev-$version-server.zip"
Write-Host "Writing server zip to: $serverDest"

if (Test-Path $serverDest) {
Write-Host "Removing existing export."
Remove-Item $serverDest
}


New-Item -Path $modsPath -Type Directory -Force | Out-Null
foreach ($mod in $instanceJson.installedAddons) {
if (-Not ($ignore -contains $mod.addonID)) {
$filename = $mod.installedFile.FileNameOnDisk
Copy-Item -Path "$source\mods\$filename" -Destination "$modsPath\$filename"
}
}

Get-Content "$PSScriptRoot\templates\startserver-template.bat" -raw | ForEach-Object { $_.replace('@version@', $forgeVersion) } | Set-Content $batPath
Get-Content "$PSScriptRoot\templates\startserver-template.sh" -raw | ForEach-Object { $_.replace('@version@', $forgeVersion) } | Set-Content $shPath

$compress = @{
Path = @(
"$overridePath/config",
"$overridePath/defaultconfigs",
"$overridePath/kubejs",
"$installedPath/libraries",
"$installedPath/*.jar",
"$tmpPath/*"
)
CompressionLevel = "Fastest"
DestinationPath = $serverDest
}

Compress-Archive @compress

Write-Host "Created server archive - cleaning up."
Remove-Item -Recurse -Force -Path $tmpPath

# end generate server pack
# start generate client pack

Write-Host "Generating manifest for version: $version"
$manifestJson = Get-Content "$PSScriptRoot\templates\manifest-template-slop2.json" -raw | ConvertFrom-Json

$manifestJson.minecraft.modLoaders[0].id = "forge-${forgeVersion}"
$manifestJson.version = $version

foreach ($mod in $instanceJson.installedAddons) {
$manifestJson.files += @{
projectID = $mod.addonID
fileID = $mod.installedFile.id
required = $true
}
}

$manifestJson | ConvertTo-Json -Depth 32 | Set-Content $manifestPath

$dest = "SLOP2-dev-$version.zip";
Write-Host "Writing client zip to: $dest"

if (Test-Path $dest) {
Write-Host "Removing existing export."
Remove-Item $dest
}

$compress = @{
Path = $manifestPath, $overridePath
CompressionLevel = "Fastest"
DestinationPath = $dest
}

Compress-Archive @compress

Write-Host "Created client archive - cleaning up."

Remove-Item -Recurse -Force -Path $overridePath
Remove-Item -Recurse -Force -Path $manifestPath

# end generate client pack

Write-Host "Finished."
2 changes: 1 addition & 1 deletion export_spellbound.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ if ( -Not (Test-Path $source)) {
}

New-Item -Path $overridePath -Type Directory -Force | Out-Null
Copy-Item -Path "$source/*" -Include "config", "defaultconfigs", "kubejs", "packmenu" -Destination $overridePath -Recurse
Copy-Item -Path "$source/*" -Include "config", "defaultconfigs", "kubejs", "packmenu" -Destination $overridePath -Recurse -Force

if ($version.Length -eq 0) {
$tweaks = "$overridePath\config\allthetweaks-common.toml"
Expand Down
18 changes: 18 additions & 0 deletions templates/manifest-template-slop2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"minecraft": {
"version": "1.16.5",
"modLoaders": [
{
"id": "forge-@version@",
"primary": true
}
]
},
"manifestType": "minecraftModpack",
"overrides": "overrides",
"manifestVersion": 1,
"version": "@version@",
"author": "Maddy and the ATM Team",
"name": "All The Mods: Slice of Pi 2",
"files": []
}

0 comments on commit ce6f2b6

Please sign in to comment.