8 Commits

Author SHA1 Message Date
Joey Eamigh
560217cd38 update forge version and fix arclight 2023-06-22 23:19:57 +00:00
Joey Eamigh
519e2c8f6d smattering of server changes 2023-06-22 22:56:07 +00:00
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
23 changed files with 144 additions and 102 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
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
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,11 +12,20 @@ if ! [ -x "$(command -v java)" ]; then
exit 1
fi
# 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

@@ -3,7 +3,7 @@
"version": "1.16.5",
"modLoaders": [
{
"id": "forge-36.2.34",
"id": "forge-36.2.39",
"primary": true
}
]
@@ -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,
@@ -189,14 +169,6 @@
"name": "Pam's HarvestCraft 2 - Crops"
}
},
{
"projectID": 361579,
"fileID": 3767277,
"required": true,
"__meta": {
"name": "spark"
}
},
{
"projectID": 365460,
"fileID": 3281234,
@@ -251,18 +223,6 @@
]
}
},
{
"projectID": 404465,
"fileID": 3553840,
"required": true,
"__meta": {
"name": "FTB Library (Forge)",
"explicit": false,
"dependencies": [
419699
]
}
},
{
"projectID": 410295,
"fileID": 4514901,
@@ -272,17 +232,6 @@
"explicit": false
}
},
{
"projectID": 410811,
"fileID": 3510643,
"required": true,
"__meta": {
"name": "FTB Essentials (Forge)",
"dependencies": [
404465
]
}
},
{
"projectID": 419699,
"fileID": 4521290,
@@ -292,6 +241,14 @@
"explicit": false
}
},
{
"projectID": 439870,
"fileID": 4576329,
"required": true,
"__meta": {
"name": "Customizable Player Models"
}
},
{
"projectID": 486392,
"fileID": 3535459,
@@ -330,6 +287,17 @@
]
}
},
{
"projectID": 545905,
"fileID": 4584293,
"required": true,
"__meta": {
"name": "EnvySTS",
"dependencies": [
389487
]
}
},
{
"projectID": 818696,
"fileID": 4369234,
@@ -337,6 +305,14 @@
"__meta": {
"name": "PokeFactory Compatibility"
}
},
{
"projectID": 861884,
"fileID": 4559794,
"required": true,
"__meta": {
"name": "Universal Pokeloot"
}
}
]
}

View File

@@ -29,9 +29,9 @@
"uid": "net.minecraft"
}
],
"cachedVersion": "36.2.34",
"cachedVersion": "36.2.39",
"uid": "net.minecraftforge",
"version": "36.2.34"
"version": "36.2.39"
}
],
"formatVersion": 1

View File

@@ -1 +1 @@
openjdk@1.11.0-2
adopt-openj9@1.11.0-11

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
server/plugins/Vault.jar Normal file

Binary file not shown.

View File

@@ -6,6 +6,8 @@ from typing import Any
OS = sys.platform
SERVER_DIR = os.getcwd()
MOD_DOWNLOADER_URL = "https://github.com/Joshyx/ModpackDownloader/releases/download/v1.3/ModpackDownloader-1.3.jar"
FORGE_URL = (
"https://maven.minecraftforge.net/net/minecraftforge/forge/1.16.5-36.2.34/forge-1.16.5-36.2.34-installer.jar"
@@ -13,16 +15,22 @@ 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.jar"
INSTANCE_DIR = os.path.join(str(os.getenv("HOME")), "pixelmon")
DELETION_EXEMPTED_MODS = ["TrainerCommands-1.16.5-2.6.0.jar"]
# main
def __main__():
header()
needs_mods = instance()
if needs_mods:
needs_mods_plugins = instance()
if needs_mods_plugins:
mods()
forge()
plugins()
arclight()
launch()
@@ -32,7 +40,33 @@ 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(ARCLIGHT_URL, allow_redirects=True)
open("arclight.jar", "wb").write(r.content)
f = open("eula.txt", "w")
f.write("eula=true")
f.close()
# forge
@@ -59,7 +93,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 +107,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)
@@ -85,6 +119,21 @@ def mods():
cprint("mods downloaded successfully", "green")
# plugins
def plugins():
os.chdir(INSTANCE_DIR)
os.makedirs(os.path.join(INSTANCE_DIR, ".minecraft", "plugins"), exist_ok=True)
for file in glob.glob(os.path.join(INSTANCE_DIR, ".minecraft", "plugins", "*")):
os.remove(file)
for file in glob.glob(os.path.join(SERVER_DIR, "plugins", "*")):
shutil.copy(file, os.path.join(INSTANCE_DIR, ".minecraft", "plugins", os.path.basename(file)))
cprint("plugins copied successfully", "green")
# multimc
def instance():
unclean = False

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()