6 Commits

Author SHA1 Message Date
Joey Eamigh
f13458073e arclight and another client tweak 2023-06-22 17:31:51 -04:00
Joey Eamigh
315746073d desktop shortcut 2023-06-22 17:01:04 -04:00
Joey Eamigh
d9b87f40ef customizable player models mod 2023-06-22 15:12:45 -04:00
Joey Eamigh
a38910cbaf macos support 2023-06-22 13:39:56 -04:00
Joey Eamigh
93409a83f8 fixed scripts 2023-06-22 00:40:28 -04:00
Joey Eamigh
45d7fe07a5 more windows tomfoolery 2023-06-22 00:27:49 -04:00
9 changed files with 87 additions and 86 deletions

View File

@@ -8,7 +8,7 @@ This is the repo for FishPog Pixelmon, and a bit of experimental tooling to make
git clone https://git.233hfd.com/joey/FishPogPixelmon.git
cd FishPogPixelmon
source ./venv.sh # or just venv.bat on windows
source ./venv.sh # or just venv.ps1 on windows
python tooling.py --setup
```
@@ -21,4 +21,8 @@ now, pax will be installed, which will allow you to edit the modpack. refer to t
python tooling.py --export
```
this command will package up the pack with pax, then bundle some scripts with it that allows for auto-updating and automatically downloading the mods from curseforge, rather than having to distribute a large zip file.
## exporting the modpack client
```bash
python tooling.py --client
```

View File

@@ -1,43 +1,30 @@
# got to the directory where the script is located
Push-Location $PSScriptRoot
# check if winget is installed and if so, set a flag to true
$winget = Get-Command winget -ErrorAction SilentlyContinue
# trust desktop-shortcut.ps1 for good measure
Unblock-File .\desktop-shortcut.ps1
if (!$winget) {
Write-Host "Error: winget is not installed." -Foreground Red
Write-Host "This script probably will not work without winget." -Foreground Red
Write-Host "Run 'Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe' in to install winget." -Foreground Red
Write-Host "If you do install winget, this script should handle the rest." -Foreground Red
}
# Check that python is installed
if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) {
Write-Host "Error: python is not installed." -Foreground Red
if ($winget) {
Write-Host "Attempting to install python."
(winget install --id=Python.Python.3.11 -e) | Out-Null
}
else {
Write-Host "Please install python to continue." -Foreground Red
exit 1
}
Write-Host "This script will not work without winget." -Foreground Red
Write-Host "Please install winget - trying to open Microsoft Store" -Foreground Yellow
Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
Start-Process "ms-windows-store://pdp/?ProductId=9NBLGGH4NNS1"
exit 1
}
# Check that java is installed
if (-not (Get-Command "C:\Program Files\AdoptOpenJDK\jdk-11.0.11.9-hotspot\bin\java" -ErrorAction SilentlyContinue)) {
Write-Host "Error: java is not installed." -Foreground Red
if ($winget) {
Write-Host "Attempting to install java."
(winget install AdoptOpenJDK.OpenJDK.11) | Out-Null
}
else {
Write-Host "Please install java to continue." -Foreground Red
exit 1
}
Write-Host "Attempting to install java."
winget install AdoptOpenJDK.OpenJDK.11
}
if (Test-Path ".venv") { } else { python -m venv .venv }
if (-not (Test-Path ".venv")) { python -m venv .venv }
. .\.venv\Scripts\Activate.ps1

View File

@@ -10,14 +10,17 @@ MOD_DOWNLOADER_URL = "https://github.com/Joshyx/ModpackDownloader/releases/downl
MODPACK_RELEASES_URL = "https://git.233hfd.com/api/v1/repos/joey/FishPogPixelmon/releases?limit=1"
DELETION_EXEMPTED_MODS = ["TrainerCommands-1.16.5-2.6.0.jar", "OptiFine_1.16.5_HD_U_G8.jar"]
MULTIMC_DOWNLOAD_URL_WINDOWS = "https://files.multimc.org/downloads/mmc-develop-win32.zip"
MULTIMC_PARENT_DIR = ""
MULTIMC_DIR = ""
INSTANCE_DIR = ""
if OS == "darwin":
cprint("no support for macos yet", "red")
exit(1)
MULTIMC_PARENT_DIR = "/Applications/MultiMC.app"
MULTIMC_DIR = f"{MULTIMC_PARENT_DIR}/Data"
INSTANCE_DIR = f"{MULTIMC_DIR}/instances/FishPogPixelmon"
if OS == "linux":
MULTIMC_PARENT_DIR = f"{os.getenv('HOME')}/.local/share"
@@ -25,7 +28,7 @@ if OS == "linux":
INSTANCE_DIR = f"{MULTIMC_DIR}/instances/FishPogPixelmon"
if OS == "win32":
MULTIMC_PARENT_DIR = f"{os.getenv('APPDATA')}\\FishPog"
MULTIMC_PARENT_DIR = os.getcwd()
MULTIMC_DIR = f"{MULTIMC_PARENT_DIR}\\MultiMC"
INSTANCE_DIR = f"{MULTIMC_DIR}\\instances\\FishPogPixelmon"
@@ -51,6 +54,9 @@ def run_mmc():
if OS == "linux":
subprocess.Popen(["./MultiMC"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
if OS == "darwin":
subprocess.Popen(["open", "-a", "MultiMC"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
# mods
def mods():
@@ -82,10 +88,7 @@ def mods():
)
for file in glob.glob(os.path.join(INSTANCE_DIR, ".minecraft", "mods", "*")):
if (
os.path.basename(file) == "OptiFine_1.16.5_HD_U_G8.jar"
or os.path.basename(file) == "TrainerCommands-1.16.5-2.6.0.jar"
):
if os.path.basename(file) in DELETION_EXEMPTED_MODS:
continue
os.remove(file)

View File

@@ -12,10 +12,19 @@ if ! [ -x "$(command -v java)" ]; then
exit 1
fi
# check that multimc is installed
if ! [ -x "$(command -v multimc)" ]; then
echo 'Error: multimc is not installed. Please install it to continue.' >&2
exit 1
# check if is macos or linux
if [[ "$OSTYPE" == "linux"* ]]; then
# check that multimc is installed
if ! [ -x "$(command -v multimc)" ]; then
echo 'Error: multimc is not installed. Please install it to continue.' >&2
exit 1
fi
elif [[ "$OSTYPE" == "darwin"* ]]; then
# check that MultiMC.app is in /Applications
if ! [ -d "/Applications/MultiMC.app" ]; then
echo 'Error: MultiMC.app is not installed. Please install it to continue.' >&2
exit 1
fi
fi
if ! [ -d .venv ]; then python -m venv .venv; fi

View File

@@ -0,0 +1,12 @@
# creates a desktop shortcut to run client.ps1 in powershell
$ClientFile = "$PSScriptRoot\client.ps1"
$ShortcutPath = "$Home\Desktop\FishPog Pixelmon.lnk"
$IconPath = "$PSScriptRoot\icon.ico"
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($ShortcutPath)
$Shortcut.TargetPath = "powershell.exe"
$Shortcut.Arguments = "-ExecutionPolicy Bypass -File `"$ClientFile`""
$Shortcut.IconLocation = $IconPath
$Shortcut.Save()

BIN
client/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -59,14 +59,6 @@
"name": "Storage Drawers"
}
},
{
"projectID": 225608,
"fileID": 3172951,
"required": true,
"__meta": {
"name": "WorldEdit"
}
},
{
"projectID": 228756,
"fileID": 3543538,
@@ -150,18 +142,6 @@
"name": "Simple Storage Network"
}
},
{
"projectID": 314905,
"fileID": 3802698,
"required": true,
"__meta": {
"name": "FTB Ranks (Forge)",
"dependencies": [
404465,
419699
]
}
},
{
"projectID": 328085,
"fileID": 3536025,
@@ -251,18 +231,6 @@
]
}
},
{
"projectID": 404465,
"fileID": 3553840,
"required": true,
"__meta": {
"name": "FTB Library (Forge)",
"explicit": false,
"dependencies": [
419699
]
}
},
{
"projectID": 410295,
"fileID": 4514901,
@@ -272,17 +240,6 @@
"explicit": false
}
},
{
"projectID": 410811,
"fileID": 3510643,
"required": true,
"__meta": {
"name": "FTB Essentials (Forge)",
"dependencies": [
404465
]
}
},
{
"projectID": 419699,
"fileID": 4521290,
@@ -292,6 +249,14 @@
"explicit": false
}
},
{
"projectID": 439870,
"fileID": 4576329,
"required": true,
"__meta": {
"name": "Customizable Player Models"
}
},
{
"projectID": 486392,
"fileID": 3535459,

View File

@@ -13,8 +13,13 @@ FORGE_URL = (
FORGE_JAR = "forge-1.16.5-36.2.34.jar"
MODPACK_RELEASES_URL = "https://git.233hfd.com/api/v1/repos/joey/FishPogPixelmon/releases?limit=1"
ARCLIGHT_URL = "https://github.com/IzzelAliz/Arclight/releases/download/1.16%2F1.0.24/arclight-forge-1.16.5-1.0.24.jar"
ARCLIGHT_JAR = "arclight-forge-1.16.5-1.0.24.jar"
INSTANCE_DIR = os.path.join(str(os.getenv("HOME")), "pixelmon")
DELETION_EXEMPTED_MODS = ["TrainerCommands-1.16.5-2.6.0.jar", "spongeforge-1.16.5-36.2.5-8.1.0-RC1352-universal.jar"]
# main
def __main__():
@@ -23,6 +28,7 @@ def __main__():
if needs_mods:
mods()
forge()
arclight()
launch()
@@ -32,7 +38,20 @@ def launch():
exit(0)
os.chdir(f"{INSTANCE_DIR}/.minecraft")
subprocess.run(["java", "-Xmx30720M", "-Xms1024M", "-jar", FORGE_JAR, "--nogui"])
subprocess.run(["java", "-Xmx30720M", "-Xms1024M", "-jar", ARCLIGHT_JAR, "--nogui"])
# arclight
def arclight():
os.makedirs(f"{INSTANCE_DIR}/.minecraft", exist_ok=True)
os.chdir(f"{INSTANCE_DIR}/.minecraft")
if os.path.exists(os.path.join(f"{INSTANCE_DIR}/.minecraft", "arclight.jar")):
return
cprint("arclight.jar not found - downloading", "yellow")
r = requests.get(FORGE_URL, allow_redirects=True)
open("arclight.jar", "wb").write(r.content)
# forge
@@ -59,7 +78,7 @@ def forge():
def mods():
os.chdir(INSTANCE_DIR)
if not os.path.exists(os.path.join(INSTANCE_DIR, "downloader.zip")):
if not os.path.exists(os.path.join(INSTANCE_DIR, "downloader.jar")):
cprint("downloader.jar not found - downloading", "yellow")
r = requests.get(MOD_DOWNLOADER_URL, allow_redirects=True)
open("downloader.jar", "wb").write(r.content)
@@ -73,7 +92,7 @@ def mods():
subprocess.run(["java", "-jar", "downloader.jar", ".", "mods"], env=my_env)
for file in glob.glob(os.path.join(INSTANCE_DIR, ".minecraft", "mods", "*")):
if os.path.basename(file) == "TrainerCommands-1.16.5-2.6.0.jar":
if os.path.basename(file) in DELETION_EXEMPTED_MODS:
continue
os.remove(file)

View File

@@ -58,6 +58,8 @@ def export_client():
z.write("client/client.sh", "client.sh")
z.write("client/requirements.txt", "requirements.txt")
z.write("client/client.py", "client.py")
z.write("client/icon.ico", "icon.ico")
z.write("client/desktop-shortcut.ps1", "desktop-shortcut.ps1")
z.close()