Compare commits
20
Commits
v1.0.0
...
forever-v1.1.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06fa58b898 | ||
|
|
6e4659970f | ||
|
|
acbcb24bf6 | ||
|
|
340b91aad7 | ||
|
|
70cb26e762 | ||
|
|
a41e119720 | ||
|
|
4749e800a3 | ||
|
|
033211c830 | ||
|
|
f10e63fb9b | ||
|
|
fe7749f8ee | ||
|
|
47b3971989 | ||
|
|
18940c1f69 | ||
|
|
9335b6fac1 | ||
|
|
c2cf9ce0c4 | ||
|
|
48ffed7da8 | ||
|
|
60f552ba6a | ||
|
|
c5f1482aea | ||
|
|
f91dcecf07 | ||
|
|
1ddf8184c2 | ||
|
|
3119c08a64 |
@@ -0,0 +1,8 @@
|
|||||||
|
# The image receives only the generated site and its runtime configuration.
|
||||||
|
# In particular, never send the repository's .git directory to Docker.
|
||||||
|
**
|
||||||
|
!Dockerfile
|
||||||
|
!sws.toml
|
||||||
|
!.build/
|
||||||
|
!.build/site/
|
||||||
|
!.build/site/**
|
||||||
@@ -0,0 +1,201 @@
|
|||||||
|
# Minecraft Modpacks
|
||||||
|
|
||||||
|
Packwiz-managed Minecraft modpacks used by the AGS Minecraft infrastructure.
|
||||||
|
|
||||||
|
The repository is the source of truth for both client and server modpack configuration. Packs are deployed through Gitea Actions and served as static Packwiz repositories for Pterodactyl.
|
||||||
|
|
||||||
|
## Packs
|
||||||
|
|
||||||
|
### Forever World
|
||||||
|
|
||||||
|
Long-lived NeoForge survival world with a deliberately conservative mod selection.
|
||||||
|
|
||||||
|
- Minecraft: 1.21.1
|
||||||
|
- NeoForge: 21.1.248
|
||||||
|
- Packwiz: managed
|
||||||
|
- Production: release-based
|
||||||
|
|
||||||
|
Development:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://mc.ahmza.com/forever/dev/pack.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
Stable:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://mc.ahmza.com/forever/stable/pack.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Creative Playground Server
|
||||||
|
|
||||||
|
`agsmc-playground` is a disposable creative superflat server that consumes the
|
||||||
|
Forever stable pack. It does not have an independent Packwiz publication
|
||||||
|
channel. Upcoming pack changes are validated on `agsmc-forever-staging` through
|
||||||
|
the Forever development endpoint.
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
|
||||||
|
```text
|
||||||
|
mc-modpacks/
|
||||||
|
├── .gitea/
|
||||||
|
│ └── workflows/
|
||||||
|
├── scripts/
|
||||||
|
│ └── build-site.sh
|
||||||
|
├── Dockerfile
|
||||||
|
├── sws.toml
|
||||||
|
├── forever/
|
||||||
|
│ ├── pack.toml
|
||||||
|
│ ├── index.toml
|
||||||
|
│ ├── mods/
|
||||||
|
│ ├── config/
|
||||||
|
│ ├── defaultconfigs/
|
||||||
|
│ └── README.md
|
||||||
|
└── deploy/
|
||||||
|
└── kubernetes/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Model
|
||||||
|
|
||||||
|
`main` represents the current development state.
|
||||||
|
|
||||||
|
Normal changes are committed directly to `main`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git switch main
|
||||||
|
|
||||||
|
cd forever
|
||||||
|
packwiz update <mod>
|
||||||
|
packwiz refresh
|
||||||
|
|
||||||
|
git add .
|
||||||
|
git commit -m "Update <mod>"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
A push to `main` publishes the pack to its `dev` endpoint.
|
||||||
|
|
||||||
|
Production is **not** updated by normal commits.
|
||||||
|
|
||||||
|
### Branches
|
||||||
|
|
||||||
|
Branches are reserved for substantial or experimental work, for example:
|
||||||
|
|
||||||
|
```text
|
||||||
|
mc-26-migration
|
||||||
|
create-major-upgrade
|
||||||
|
worldgen-experiment
|
||||||
|
test-new-content-mod
|
||||||
|
```
|
||||||
|
|
||||||
|
Small mod updates and configuration changes do not require branches.
|
||||||
|
|
||||||
|
## Releases
|
||||||
|
|
||||||
|
Test the development pack before creating a release.
|
||||||
|
|
||||||
|
Forever World releases use annotated tags:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git tag -a forever-v1.0.1 -m "Forever World v1.0.1"
|
||||||
|
git push origin forever-v1.0.1
|
||||||
|
```
|
||||||
|
|
||||||
|
A release publishes an immutable copy to:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/forever/releases/v1.0.1/
|
||||||
|
```
|
||||||
|
|
||||||
|
and promotes the same build to:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/forever/stable/
|
||||||
|
```
|
||||||
|
|
||||||
|
Production Pterodactyl servers always consume the stable endpoint rather than individual release URLs.
|
||||||
|
|
||||||
|
### Versioning
|
||||||
|
|
||||||
|
Approximately follow semantic versioning:
|
||||||
|
|
||||||
|
| Version | Use |
|
||||||
|
|---|---|
|
||||||
|
| `v1.0.1` | Bug fixes, configs and routine mod updates |
|
||||||
|
| `v1.1.0` | New functionality or compatible mods |
|
||||||
|
| `v2.0.0` | Major Minecraft/modpack/world dependency changes |
|
||||||
|
|
||||||
|
Release tags are immutable. Never move or recreate an existing release tag.
|
||||||
|
|
||||||
|
## Deployment Flow
|
||||||
|
|
||||||
|
```text
|
||||||
|
Gitea
|
||||||
|
│
|
||||||
|
push to main
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Gitea Actions
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
/forever/dev/pack.toml
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Staging Server
|
||||||
|
│
|
||||||
|
Test
|
||||||
|
│
|
||||||
|
forever-v1.x.x tag
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Gitea Actions
|
||||||
|
┌────┴────┐
|
||||||
|
▼ ▼
|
||||||
|
releases/ stable/
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Production Server
|
||||||
|
```
|
||||||
|
|
||||||
|
Packwiz is responsible for modpack contents and side filtering.
|
||||||
|
|
||||||
|
Pterodactyl is responsible for Java, server process management and resources.
|
||||||
|
|
||||||
|
Kubernetes/SWS provides static hosting for the published Packwiz repositories.
|
||||||
|
The publishing workflow runs [`scripts/build-site.sh`](../scripts/build-site.sh),
|
||||||
|
which exports committed Git revisions into the documented URL layout. Source
|
||||||
|
packs intentionally keep `no-internal-hashes = true`; the workflow runs
|
||||||
|
`packwiz refresh --build` only against the exported copies under `.build/site`
|
||||||
|
so the image contains installer-ready hashes without committing generated hash
|
||||||
|
churn. It then builds the multi-architecture image
|
||||||
|
`tea.ahmza.com/ahmza.com/mcpacks-site`.
|
||||||
|
|
||||||
|
The workflow finally commits that image's immutable OCI digest to
|
||||||
|
`apps/mcpacks/deployment.yaml` in the `ahmza.com/k8s-starter-pack` repository.
|
||||||
|
Argo CD notices that commit and performs the rollout; the workflow does not
|
||||||
|
hold Kubernetes credentials or change the cluster directly.
|
||||||
|
|
||||||
|
The publishing workflow uses two Gitea Actions repository secrets belonging
|
||||||
|
to `ci-bot`:
|
||||||
|
|
||||||
|
- `REGISTRY_TOKEN` can push packages owned by the `ahmza.com` organization
|
||||||
|
- `GITOPS_TOKEN` can read and write `ahmza.com/k8s-starter-pack`
|
||||||
|
|
||||||
|
Keeping these credentials separate ensures that the package token cannot modify
|
||||||
|
Git repositories and the GitOps token cannot publish packages.
|
||||||
|
|
||||||
|
The `latest` image tag exists only to bootstrap the first Argo CD sync and for
|
||||||
|
human inspection. Normal rollouts use the exact content digest recorded in the
|
||||||
|
GitOps manifest, making the running version auditable and rollback-friendly.
|
||||||
|
|
||||||
|
## Rollback
|
||||||
|
|
||||||
|
Release directories are immutable.
|
||||||
|
|
||||||
|
If a release causes problems, production can be pointed temporarily at an earlier release:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://mc.ahmza.com/forever/releases/v1.0.1/pack.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
Do not rewrite an existing release or tag. Fix the issue on `main` and publish a new release.
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
name: Publish Packwiz site
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- "forever-v*"
|
||||||
|
|
||||||
|
# A branch push and release tag can happen close together. Serializing them
|
||||||
|
# prevents two jobs from racing to update the GitOps deployment manifest.
|
||||||
|
concurrency:
|
||||||
|
group: mcpacks-publish
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: tea.ahmza.com
|
||||||
|
IMAGE_NAME: ahmza.com/mcpacks-site
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out all pack history
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Fetch current main and release tags
|
||||||
|
# A tag-triggered checkout points HEAD at that tag. Fetching main
|
||||||
|
# explicitly ensures /dev still contains today's development branch.
|
||||||
|
run: git fetch origin main:refs/remotes/origin/main --tags --force
|
||||||
|
|
||||||
|
- name: Set up Go for Packwiz
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: "1.23.x"
|
||||||
|
cache: false
|
||||||
|
|
||||||
|
- name: Install pinned Packwiz
|
||||||
|
# Packwiz has no stable binary release channel. Pinning the source
|
||||||
|
# revision makes image builds reproducible instead of following latest.
|
||||||
|
run: go install github.com/packwiz/packwiz@dfd8b68a4796c763e25bad50265ea1f1233e24f1
|
||||||
|
|
||||||
|
- name: Assemble static Packwiz site
|
||||||
|
env:
|
||||||
|
EVENT_REF: ${{ gitea.ref }}
|
||||||
|
EVENT_SHA: ${{ gitea.sha }}
|
||||||
|
run: |
|
||||||
|
chmod +x scripts/build-site.sh
|
||||||
|
# A branch job must publish exactly the commit that triggered it,
|
||||||
|
# even if a newer main commit arrives while this job is queued. A
|
||||||
|
# tag job uses current main for /dev while exporting the tag itself
|
||||||
|
# to /releases in scripts/build-site.sh.
|
||||||
|
case "$EVENT_REF" in
|
||||||
|
refs/tags/*) dev_ref=origin/main ;;
|
||||||
|
*) dev_ref=$EVENT_SHA ;;
|
||||||
|
esac
|
||||||
|
PACKWIZ_BIN="$(go env GOPATH)/bin/packwiz" \
|
||||||
|
./scripts/build-site.sh "$dev_ref"
|
||||||
|
test -s .build/site/forever/dev/pack.toml
|
||||||
|
grep -q '^hash = "[0-9a-f]\{64\}"$' \
|
||||||
|
.build/site/forever/dev/pack.toml
|
||||||
|
# Building distribution metadata must not alter tracked source packs.
|
||||||
|
git diff --exit-code -- forever
|
||||||
|
|
||||||
|
- name: Verify tagged release output
|
||||||
|
if: startsWith(gitea.ref, 'refs/tags/')
|
||||||
|
env:
|
||||||
|
RELEASE_TAG: ${{ gitea.ref_name }}
|
||||||
|
run: |
|
||||||
|
version=${RELEASE_TAG#forever-}
|
||||||
|
test -s ".build/site/forever/releases/$version/pack.toml"
|
||||||
|
test -s .build/site/forever/stable/pack.toml
|
||||||
|
|
||||||
|
- name: Log in to Gitea Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ci-bot
|
||||||
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
|
|
||||||
|
# The SWS runtime image already publishes amd64 and arm64 variants and
|
||||||
|
# this Dockerfile has no target-architecture RUN commands, so Buildx can
|
||||||
|
# create both variants without slow QEMU emulation.
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and push immutable site image
|
||||||
|
id: build
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
build-args: |
|
||||||
|
VCS_REF=${{ gitea.sha }}
|
||||||
|
# latest bootstraps the first deployment and is convenient for
|
||||||
|
# inspection. Kubernetes runs the immutable manifest digest emitted
|
||||||
|
# by this step, never this mutable tag.
|
||||||
|
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache
|
||||||
|
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
|
||||||
|
|
||||||
|
- name: Check out cluster GitOps repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ahmza.com/k8s-starter-pack
|
||||||
|
ref: main
|
||||||
|
token: ${{ secrets.GITOPS_TOKEN }}
|
||||||
|
path: _gitops
|
||||||
|
|
||||||
|
- name: Record the deployed image in Git
|
||||||
|
env:
|
||||||
|
# A digest identifies the actual multi-architecture image contents.
|
||||||
|
# This changes for a release build even when its tag points at the
|
||||||
|
# same Git commit previously built by the main-branch workflow.
|
||||||
|
IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${{ steps.build.outputs.digest }}
|
||||||
|
run: |
|
||||||
|
python3 - "$IMAGE" <<'PY'
|
||||||
|
from pathlib import Path
|
||||||
|
import sys
|
||||||
|
|
||||||
|
manifest = Path("_gitops/apps/mcpacks/deployment.yaml")
|
||||||
|
image = sys.argv[1]
|
||||||
|
prefix = " image: "
|
||||||
|
repository = "tea.ahmza.com/ahmza.com/mcpacks-site"
|
||||||
|
lines = manifest.read_text().splitlines()
|
||||||
|
matches = [
|
||||||
|
i for i, line in enumerate(lines)
|
||||||
|
if line.startswith(prefix + repository)
|
||||||
|
]
|
||||||
|
if len(matches) != 1:
|
||||||
|
raise SystemExit(f"expected one mcpacks image line, found {len(matches)}")
|
||||||
|
lines[matches[0]] = f"{prefix}{image}"
|
||||||
|
manifest.write_text("\n".join(lines) + "\n")
|
||||||
|
PY
|
||||||
|
|
||||||
|
cd _gitops
|
||||||
|
if git diff --quiet -- apps/mcpacks/deployment.yaml; then
|
||||||
|
echo "GitOps manifest already references $IMAGE"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
git config user.name "gitea-actions[bot]"
|
||||||
|
git config user.email "gitea-actions[bot]@tea.ahmza.com"
|
||||||
|
git add apps/mcpacks/deployment.yaml
|
||||||
|
git commit -m "Deploy mcpacks ${GITEA_SHA}"
|
||||||
|
git push origin HEAD:main
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
# Pack exports
|
||||||
|
*.mrpack
|
||||||
|
*.zip
|
||||||
|
|
||||||
|
# Local/editor junk
|
||||||
|
.DS_Store
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Temporary build output
|
||||||
|
.build/
|
||||||
|
dist/
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
# syntax=docker/dockerfile:1
|
||||||
|
# scripts/build-site.sh prepares .build/site before this image is built. The
|
||||||
|
# runtime contains neither Git nor a shell-based synchronizer: published files
|
||||||
|
# are immutable and can only change by building a new, traceable image.
|
||||||
|
# Pin both the tested SWS release and its multi-architecture manifest digest so
|
||||||
|
# rebuilding an old pack revision cannot silently pick up a different runtime.
|
||||||
|
FROM ghcr.io/static-web-server/static-web-server:2.44.0@sha256:2c1a7c3e0feaea5859307403b74e1c575f3ec1499094fc077344173d11abaae2
|
||||||
|
|
||||||
|
ARG VCS_REF=unknown
|
||||||
|
LABEL org.opencontainers.image.source="https://tea.ahmza.com/ahmza.com/mcpacks" \
|
||||||
|
org.opencontainers.image.revision="$VCS_REF" \
|
||||||
|
org.opencontainers.image.description="Static Packwiz repositories for AGS Minecraft servers"
|
||||||
|
|
||||||
|
COPY sws.toml /etc/sws.toml
|
||||||
|
COPY .build/site /public
|
||||||
|
|
||||||
|
ENV SERVER_CONFIG_FILE=/etc/sws.toml
|
||||||
|
EXPOSE 80/tcp
|
||||||
|
CMD ["--config-file", "/etc/sws.toml"]
|
||||||
@@ -7,14 +7,14 @@
|
|||||||
"exported_at": "2026-08-22T18:28:00+01:00",
|
"exported_at": "2026-08-22T18:28:00+01:00",
|
||||||
"name": "NeoForge + Packwiz",
|
"name": "NeoForge + Packwiz",
|
||||||
"author": "hamza@ahmza.com",
|
"author": "hamza@ahmza.com",
|
||||||
"description": "Reusable NeoForge Minecraft server egg with Packwiz server-side synchronization. Handles Pterodactyl memory=0 as unlimited by omitting -Xmx.",
|
"description": "Reusable NeoForge Minecraft server egg with Packwiz server-side synchronization.",
|
||||||
"features": [
|
"features": [
|
||||||
"eula",
|
"eula",
|
||||||
"java_version",
|
"java_version",
|
||||||
"pid_limit"
|
"pid_limit"
|
||||||
],
|
],
|
||||||
"docker_images": {
|
"docker_images": {
|
||||||
"Java 21": "ghcr.io/ptero-eggs/yolks:java_21"
|
"Java 21": "ghcr.io/pterodactyl/yolks:java_21"
|
||||||
},
|
},
|
||||||
"file_denylist": [],
|
"file_denylist": [],
|
||||||
"startup": "bash ./start-packwiz.sh {{SERVER_MEMORY}}",
|
"startup": "bash ./start-packwiz.sh {{SERVER_MEMORY}}",
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Packwiz Auto Sync",
|
"name": "Packwiz Auto Sync",
|
||||||
"description": "Run packwiz-installer before every server start. 1 = enabled, 0 = disabled. Recommended: Forever=0 after deployment if you want explicit promotions; Playground=1.",
|
"description": "Run packwiz-installer before every server start. 1 = enabled, 0 = disabled. Use 1 for servers that track stable or dev; use 0 only for manually pinned deployments.",
|
||||||
"env_variable": "PACKWIZ_AUTO_SYNC",
|
"env_variable": "PACKWIZ_AUTO_SYNC",
|
||||||
"default_value": "1",
|
"default_value": "1",
|
||||||
"user_viewable": true,
|
"user_viewable": true,
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# Generated exports
|
|
||||||
*.mrpack
|
|
||||||
*.zip
|
|
||||||
|
|
||||||
# Temporary/local files
|
|
||||||
.DS_Store
|
|
||||||
*.tmp
|
|
||||||
|
|
||||||
# packwiz cache if created locally
|
|
||||||
.packwiz/
|
|
||||||
@@ -0,0 +1,139 @@
|
|||||||
|
# Forever World
|
||||||
|
|
||||||
|
The Forever World pack is the long-lived Minecraft survival modpack.
|
||||||
|
|
||||||
|
The goal is to expand Minecraft without turning the world into a disposable modpack save. Mods are selected with long-term compatibility, maintainability and world-save safety in mind.
|
||||||
|
|
||||||
|
## Platform
|
||||||
|
|
||||||
|
```text
|
||||||
|
Minecraft: 1.21.1
|
||||||
|
NeoForge: 21.1.248
|
||||||
|
Packwiz: managed
|
||||||
|
```
|
||||||
|
|
||||||
|
## Philosophy
|
||||||
|
|
||||||
|
The pack is intentionally conservative.
|
||||||
|
|
||||||
|
Content mods should provide meaningful additions while avoiding unnecessary permanent dependencies on abandoned or experimental mods.
|
||||||
|
|
||||||
|
The core gameplay additions currently centre around:
|
||||||
|
|
||||||
|
- Create
|
||||||
|
- Create: Bells & Whistles
|
||||||
|
- Create: Blocks & Bogies
|
||||||
|
- Create: Connected
|
||||||
|
- Create: Copycats+
|
||||||
|
- Create: Dragons Plus
|
||||||
|
- Create: Enchantment Industry
|
||||||
|
- Create: Slice & Dice
|
||||||
|
- Critters and Companions
|
||||||
|
- Farmer's Delight
|
||||||
|
- Handcrafted
|
||||||
|
- Sophisticated Backpacks
|
||||||
|
|
||||||
|
Exploration and mining quality-of-life additions include:
|
||||||
|
|
||||||
|
- Nature's Compass
|
||||||
|
- VeinMiner
|
||||||
|
|
||||||
|
Create's native stock links, stock tickers, packagers and physical transport remain the intended storage and logistics system. Sophisticated Backpacks provides portable field storage that feeds into those fixed systems rather than replacing them. The pack deliberately avoids adding a separate digital storage network unless future gameplay demonstrates a clear need.
|
||||||
|
|
||||||
|
Additional mods provide mapping, building, controller support, connected textures, dynamic lighting, performance, diagnostics and other client quality-of-life improvements.
|
||||||
|
|
||||||
|
Axiom is provided through Sinytra Connector and Forgified Fabric API.
|
||||||
|
|
||||||
|
## Client and Server Mods
|
||||||
|
|
||||||
|
Packwiz `side` metadata determines deployment.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
side = "client"
|
||||||
|
side = "server"
|
||||||
|
side = "both"
|
||||||
|
```
|
||||||
|
|
||||||
|
Pterodactyl installs the server pack using:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
packwiz-installer-bootstrap.jar -g -s server <pack.toml>
|
||||||
|
```
|
||||||
|
|
||||||
|
This automatically excludes client-only mods such as Iris and Sodium.
|
||||||
|
|
||||||
|
Some optional client-oriented mods are intentionally installed server-side where their server functionality is useful and does not create an undesirable world dependency.
|
||||||
|
|
||||||
|
Proxy Compatible Forge provides authenticated Velocity modern forwarding for the proxied Forever and Playground backends. Its forwarding secret is runtime configuration and must never be committed. Forwarding must remain disabled on the directly accessible Forever staging server.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
Current development builds are published at:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://mc.ahmza.com/forever/dev/pack.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
Production uses:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://mc.ahmza.com/forever/stable/pack.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
Changes pushed to `main` are tested against the development/staging server before release.
|
||||||
|
|
||||||
|
## Releases
|
||||||
|
|
||||||
|
Forever World releases use repository tags:
|
||||||
|
|
||||||
|
```text
|
||||||
|
forever-v1.0.0
|
||||||
|
forever-v1.0.1
|
||||||
|
forever-v1.1.0
|
||||||
|
forever-v1.1.1
|
||||||
|
forever-v1.1.2
|
||||||
|
```
|
||||||
|
|
||||||
|
A tagged release is published to both:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/forever/releases/v1.x.x/
|
||||||
|
/forever/stable/
|
||||||
|
```
|
||||||
|
|
||||||
|
Release tags and release directories are immutable.
|
||||||
|
|
||||||
|
Major mod additions, Minecraft migrations and other potentially disruptive changes should be tested on the Forever staging server or a feature branch before being introduced here.
|
||||||
|
|
||||||
|
## Updating a Mod
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd forever
|
||||||
|
|
||||||
|
packwiz update <mod>
|
||||||
|
packwiz refresh
|
||||||
|
|
||||||
|
git add .
|
||||||
|
git commit -m "Update <mod>"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
Test the resulting development deployment before creating a release tag.
|
||||||
|
|
||||||
|
## World Safety
|
||||||
|
|
||||||
|
Before introducing or removing a content mod, consider:
|
||||||
|
|
||||||
|
- Does it add blocks or entities that become part of the world save?
|
||||||
|
- Does it modify world generation?
|
||||||
|
- What happens if development stops?
|
||||||
|
- Can the mod be removed without damaging the world?
|
||||||
|
- Is it likely to survive future Minecraft migrations?
|
||||||
|
|
||||||
|
The objective is not zero world dependencies; Create and other content mods deliberately become part of the world.
|
||||||
|
|
||||||
|
The objective is to keep those dependencies intentional.
|
||||||
|
|
||||||
|
|
||||||
|
## Mods I would like to add
|
||||||
|
- https://modrinth.com/mod/better-stats - No NeoForge 1.21.1 support
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
[settings]
|
||||||
|
#General Settings
|
||||||
|
#Maximum distance from where Blocks and Entities can be picked up
|
||||||
|
# Default: 2.5
|
||||||
|
# Range: 0.0 ~ 1.7976931348623157E308
|
||||||
|
maxDistance = 2.5
|
||||||
|
#Pickup distance scales with player reach
|
||||||
|
scaleDistance = true
|
||||||
|
#Max width of entities that can be picked up in survival mode
|
||||||
|
# Default: 1.5
|
||||||
|
# Range: 0.0 ~ 10.0
|
||||||
|
maxEntityWidth = 1.5
|
||||||
|
#Max height of entities that can be picked up in survival mode
|
||||||
|
# Default: 2.5
|
||||||
|
# Range: 0.0 ~ 10.0
|
||||||
|
maxEntityHeight = 2.5
|
||||||
|
#Size of entities is considered relative to player scale
|
||||||
|
relativePlayerScale = true
|
||||||
|
#Slowness multiplier for blocks
|
||||||
|
# Default: 1.0
|
||||||
|
# Range: 0.0 ~ 1.7976931348623157E308
|
||||||
|
blockSlownessMultiplier = 1.0
|
||||||
|
#Slowness multiplier for entities
|
||||||
|
# Default: 1.0
|
||||||
|
# Range: 0.0 ~ 1.7976931348623157E308
|
||||||
|
entitySlownessMultiplier = 1.0
|
||||||
|
#Maximum stack limit for entities
|
||||||
|
# Default: 10
|
||||||
|
# Range: > 1
|
||||||
|
maxEntityStackLimit = 10
|
||||||
|
#More complex Tile Entities slow down the player more
|
||||||
|
heavyTiles = true
|
||||||
|
#Allow all blocks to be picked up, not just Tile Entites. White/Blacklist will still be respected.
|
||||||
|
pickupAllBlocks = false
|
||||||
|
#Whether Blocks and Entities slow the creative player down when carried
|
||||||
|
slownessInCreative = true
|
||||||
|
#Whether hostile mobs should be able to picked up in survival mode
|
||||||
|
pickupHostileMobs = false
|
||||||
|
#Larger Entities slow down the player more
|
||||||
|
heavyEntities = true
|
||||||
|
#Allow babies to be carried even when adult mob is blacklisted (or not whitelisted)
|
||||||
|
allowBabies = false
|
||||||
|
#Use Whitelist instead of Blacklist for Blocks
|
||||||
|
useWhitelistBlocks = false
|
||||||
|
#Use Whitelist instead of Blacklist for Entities
|
||||||
|
useWhitelistEntities = false
|
||||||
|
#Use Whitelist instead of Blacklist for Stacking
|
||||||
|
useWhitelistStacking = false
|
||||||
|
#Whether the player can hit blocks and entities while carrying or not
|
||||||
|
hitWhileCarrying = false
|
||||||
|
#Whether the player drops the carried object when hit or not
|
||||||
|
dropCarriedWhenHit = false
|
||||||
|
#Use custom Pickup Scripts. Having this set to false, will not allow you to run scripts, but will increase your performance
|
||||||
|
useScripts = false
|
||||||
|
#Allows entities to be stacked on top of each other
|
||||||
|
stackableEntities = true
|
||||||
|
#Whether entities' size matters when stacking or not. This means that larger entities cannot be stacked on smaller ones
|
||||||
|
entitySizeMattersStacking = true
|
||||||
|
#Usually all the block state information is retained when placing a block that was picked up. But some information is changed to a modified property, like rotation or orientation. In this list, add additional properties that should NOT be saved and instead be updated when placed. Format: modid:block[propertyname]. Note: You don't need to add an entry for every subtype of a same block. For example, we only add an entry for one type of slab, but the change is applied to all slabs.
|
||||||
|
placementStateExceptions = ["minecraft:chest[type]", "minecraft:stone_button[face]", "minecraft:vine[north,east,south,west,up]", "minecraft:creeper_head[rotation]", "minecraft:glow_lichen[north,east,south,west,up,down]", "minecraft:oak_sign[rotation]", "minecraft:oak_trapdoor[half]"]
|
||||||
|
#Whether Players can be picked up. Creative players can't be picked up in Survival Mode
|
||||||
|
pickupPlayers = true
|
||||||
|
#Whether players in Survival Mode can pick up unbreakable blocks. Creative players always can.
|
||||||
|
pickupUnbreakableBlocks = false
|
||||||
|
|
||||||
|
[whitelist]
|
||||||
|
#Whitelist. Read about the format here: https://github.com/Tschipp/CarryOn/wiki/Black---and-Whitelist-Config
|
||||||
|
#Entities that CAN be picked up (useWhitelistEntities must be true)
|
||||||
|
allowedEntities = []
|
||||||
|
#Blocks that CAN be picked up (useWhitelistBlocks must be true)
|
||||||
|
allowedBlocks = []
|
||||||
|
#Entities that CAN have other entities stacked on top of them (useWhitelistStacking must be true)
|
||||||
|
allowedStacking = []
|
||||||
|
|
||||||
|
[blacklist]
|
||||||
|
#Blacklist. Read about the format here: https://github.com/Tschipp/CarryOn/wiki/Black---and-Whitelist-Config
|
||||||
|
#Blocks that cannot be picked up
|
||||||
|
forbiddenTiles = ["#forge:immovable", "#forge:relocation_not_supported", "#neoforge:immovable", "#neoforge:relocation_not_supported", "minecraft:end_portal", "minecraft:piston_head", "#c:relocation_not_supported", "minecraft:end_gateway", "minecraft:tall_grass", "minecraft:large_fern", "minecraft:peony", "minecraft:rose_bush", "minecraft:lilac", "minecraft:sunflower", "minecraft:*_bed", "minecraft:*_door", "minecraft:big_dripleaf_stem", "minecraft:waterlily", "minecraft:cake", "minecraft:nether_portal", "minecraft:tall_seagrass", "animania:block_trough", "animania:block_invisiblock", "colossalchests:*", "ic2:*", "bigreactors:*", "forestry:*", "tconstruct:*", "rustic:*", "botania:*", "astralsorcery:*", "quark:colored_bed_*", "immersiveengineering:*", "embers:block_furnace", "embers:ember_bore", "embers:ember_activator", "embers:mixer", "embers:heat_coil", "embers:large_tank", "embers:crystal_cell", "embers:alchemy_pedestal", "embers:boiler", "embers:combustor", "embers:catalzyer", "embers:field_chart", "embers:inferno_forge", "storagedrawers:framingtable", "skyresources:*", "lootbags:*", "exsartagine:*", "aquamunda:tank", "opencomputers:*", "malisisdoors:*", "industrialforegoing:*", "minecolonies:*", "thaumcraft:pillar*", "thaumcraft:infernal_furnace", "thaumcraft:placeholder*", "thaumcraft:infusion_matrix", "thaumcraft:golem_builder", "thaumcraft:thaumatorium*", "magneticraft:oil_heater", "magneticraft:solar_panel", "magneticraft:steam_engine", "magneticraft:shelving_unit", "magneticraft:grinder", "magneticraft:sieve", "magneticraft:solar_tower", "magneticraft:solar_mirror", "magneticraft:container", "magneticraft:pumpjack", "magneticraft:solar_panel", "magneticraft:refinery", "magneticraft:oil_heater", "magneticraft:hydraulic_press", "magneticraft:multiblock_gap", "refinedstorage:*", "mcmultipart:*", "enderstorage:*", "betterstorage:*", "practicallogistics2:*", "wearablebackpacks:*", "rftools:screen", "rftools:creative_screen", "create:*", "magic_doorknob:*", "iceandfire:*", "ftbquests:*", "waystones:*", "contact:*", "framedblocks:*", "securitycraft:*", "forgemultipartcbe:*", "integrateddynamics:cable", "mekanismgenerators:wind_generator", "cookingforblockheads:cabinet", "cookingforblockheads:corner", "cookingforblockheads:counter", "cookingforblockheads:oven", "cookingforblockheads:toaster", "cookingforblockheads:milk_jar", "cookingforblockheads:cow_jar", "cookingforblockheads:fruit_basket", "cookingforblockheads:cooking_table", "cookingforblockheads:fridge", "cookingforblockheads:sink", "chipped:*", "irons_spellbooks:*", "create*:*", "bellsandwhistles:*", "simple_pipes:*", "libmultipart:*", "quark:tiny_potato", "ait:*", "vampirism:*", "extrastorage:*", "relics:researching_table", "sophisticatedstorage:*chest", "powah:*", "advancementtrophies:trophy", "mekanismgenerators:heat_generator", "mna:filler_block", "create_enchantment_industry:*", "graveyard:*", "immersivepetroleum:*", "tardis:interior_door", "cuffed:*", "littletiles:*", "butchersdelight:*", "irons_spellbooks:*", "extended_drawers:*", "functionalstorage:*", "sophisticatedstorage:*", "sophisticatedbackpacks:*", "farmersdelight:*", "modern_industrialization:*_cable", "modern_industrialization:item_pipe", "modern_industrialization:*_item_pipe", "modern_industrialization:fluid_pipe", "modern_industrialization:*_fluid_pipe", "yigd:*", "domum_ornamentum:*", "connectiblechains:*", "cobblemon:*", "snowrealmagic:*", "forbidden_arcanus:black_hole", "domum_ornamentum:*", "sgjourney:*", "copycats:*", "expandedstorage:*", "replication:*", "snowrealmagic:*", "coloreditemframes:*", "replication:*"]
|
||||||
|
#Entities that cannot be picked up
|
||||||
|
forbiddenEntities = ["#c:capturing_not_supported", "#c:teleporting_not_supported", "minecraft:end_crystal", "minecraft:ender_dragon", "minecraft:ghast", "minecraft:fireball", "minecraft:small_fireball", "minecraft:whither_skull", "minecraft:shulker", "minecraft:leash_knot", "minecraft:armor_stand", "minecraft:whither_skull_dangerous", "minecraft:dragon_fireball", "minecraft:item_frame", "minecraft:painting", "minecraft:shulker_bullet", "minecraft:evoker_fangs", "minecraft:glow_item_frame", "minecraft:tnt", "minecraft:trident", "minecraft:arrow", "minecraft:spectral_arrow", "minecraft:interaction", "minecraft:marker", "minecraft:block_display", "minecraft:item_display", "minecraft:text_display", "animania:hamster", "animania:ferret*", "animania:hedgehog*", "animania:cart", "animania:wagon", "mynko:*", "pixelmon:*", "mocreatures:*", "quark:totem", "vehicle:*", "securitycraft:*", "taterzens:npc", "easy_npc:*", "bodiesbodies:dead_body", "littletiles:*", "connectiblechains:*", "cobblemon:*", "create:*", "swem:*", "toms_mobs:*", "simulated:*", "aeronautics:*", "offroad:*", "coloreditemframes:*", "wan_ancient_beasts:*"]
|
||||||
|
#Entities that cannot have other entities stacked on top of them
|
||||||
|
forbiddenStacking = ["minecraft:horse", "minecraft:ender_dragon"]
|
||||||
|
|
||||||
|
[customPickupConditions]
|
||||||
|
#Custom Pickup Conditions. Read about the format here: https://github.com/Tschipp/CarryOn/wiki/Custom-Pickup-Condition-Config
|
||||||
|
#Custom Pickup Conditions for Blocks
|
||||||
|
customPickupConditionsBlocks = []
|
||||||
|
#Custom Pickup Conditions for Entities
|
||||||
|
customPickupConditionsEntities = []
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Ores",
|
||||||
|
"blocks": [
|
||||||
|
"#c:ores"
|
||||||
|
],
|
||||||
|
"tools": [
|
||||||
|
"#minecraft:pickaxes"
|
||||||
|
],
|
||||||
|
"override": {
|
||||||
|
"cooldown": null,
|
||||||
|
"mustSneak": null,
|
||||||
|
"delay": null,
|
||||||
|
"maxChain": null,
|
||||||
|
"needCorrectTool": null,
|
||||||
|
"searchRadius": null,
|
||||||
|
"permissionRestricted": null,
|
||||||
|
"decreaseDurability": null,
|
||||||
|
"hungerPerBlock": null,
|
||||||
|
"miningSpeedModifier": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Logs",
|
||||||
|
"blocks": [
|
||||||
|
"#minecraft:logs",
|
||||||
|
"minecraft:mushroom_stem",
|
||||||
|
"minecraft:brown_mushroom_block",
|
||||||
|
"minecraft:red_mushroom_block"
|
||||||
|
],
|
||||||
|
"tools": [
|
||||||
|
"#minecraft:axes"
|
||||||
|
],
|
||||||
|
"override": {
|
||||||
|
"cooldown": null,
|
||||||
|
"mustSneak": null,
|
||||||
|
"delay": null,
|
||||||
|
"maxChain": null,
|
||||||
|
"needCorrectTool": null,
|
||||||
|
"searchRadius": null,
|
||||||
|
"permissionRestricted": null,
|
||||||
|
"decreaseDurability": null,
|
||||||
|
"hungerPerBlock": null,
|
||||||
|
"miningSpeedModifier": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Leaves",
|
||||||
|
"blocks": [
|
||||||
|
"#minecraft:leaves"
|
||||||
|
],
|
||||||
|
"tools": [
|
||||||
|
"#minecraft:hoes",
|
||||||
|
"minecraft:shears"
|
||||||
|
],
|
||||||
|
"override": {
|
||||||
|
"cooldown": null,
|
||||||
|
"mustSneak": null,
|
||||||
|
"delay": null,
|
||||||
|
"maxChain": null,
|
||||||
|
"needCorrectTool": null,
|
||||||
|
"searchRadius": null,
|
||||||
|
"permissionRestricted": null,
|
||||||
|
"decreaseDurability": null,
|
||||||
|
"hungerPerBlock": null,
|
||||||
|
"miningSpeedModifier": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"cooldown": 20,
|
||||||
|
"mustSneak": false,
|
||||||
|
"delay": 0,
|
||||||
|
"maxChain": 64,
|
||||||
|
"needCorrectTool": true,
|
||||||
|
"searchRadius": 1,
|
||||||
|
"permissionRestricted": false,
|
||||||
|
"mergeItemDrops": true,
|
||||||
|
"autoUpdate": false,
|
||||||
|
"decreaseDurability": true,
|
||||||
|
"hungerPerBlock": 0.0,
|
||||||
|
"miningSpeedModifier": 0.0,
|
||||||
|
"debug": false,
|
||||||
|
"client": {
|
||||||
|
"allow": true,
|
||||||
|
"require": false,
|
||||||
|
"translucentBlockHighlight": true,
|
||||||
|
"allBlocks": false,
|
||||||
|
"overrides": {
|
||||||
|
"cooldown": null,
|
||||||
|
"mustSneak": null,
|
||||||
|
"delay": null,
|
||||||
|
"maxChain": null,
|
||||||
|
"needCorrectTool": null,
|
||||||
|
"searchRadius": null,
|
||||||
|
"permissionRestricted": null,
|
||||||
|
"decreaseDurability": null,
|
||||||
|
"hungerPerBlock": null,
|
||||||
|
"miningSpeedModifier": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
+179
-35
@@ -1,176 +1,320 @@
|
|||||||
hash-format = "sha256"
|
hash-format = "sha256"
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "config/carryon-common.toml"
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "config/veinminer/blocks.json"
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "config/veinminer/groups.json"
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "config/veinminer/settings.json"
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "icon.png"
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/3dskinlayers.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/appleskin.pw.toml"
|
file = "mods/appleskin.pw.toml"
|
||||||
hash = "716d930feff599bf9ce732e05979fbae8025dc8a3c13ccf4f1cb207a70883bc6"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/architectury-api.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/armor-poser.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/axiom.pw.toml"
|
file = "mods/axiom.pw.toml"
|
||||||
hash = "d96e1e5aa63a1a6023578fc3d8f4de1239da8bd105769c43ed2798082ff0acf3"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/baguettelib.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/bellsandwhistles.pw.toml"
|
file = "mods/bellsandwhistles.pw.toml"
|
||||||
hash = "e1f4a53e3e52b534add5dd018597fefd345d9bd6350b9c46ef0ec281fc62af8e"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/better-advancements.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/betterf3.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/blocks-bogies.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/bluemap.pw.toml"
|
file = "mods/bluemap.pw.toml"
|
||||||
hash = "f33a4720ef4f315b6d1f778039e9f7bdb8f5ef1b58a57d565c30fd1d8adee207"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/carry-on.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/chunky.pw.toml"
|
file = "mods/chunky.pw.toml"
|
||||||
hash = "68cc51e721e993a8b7a2cbaf45369933b22b07a9c82327ab14757ee10684aa81"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/clientsort.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/cloth-config.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/clumps.pw.toml"
|
file = "mods/clumps.pw.toml"
|
||||||
hash = "c7f15ebcab95f04c71940715f09ced4caad2775a91ef34389431f91bc1c7be71"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/comforts.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/connector.pw.toml"
|
file = "mods/connector.pw.toml"
|
||||||
hash = "a38d72ca403e9064338be6e0cf69532768b0c1aba8f88703a8ce74c2734da522"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/continuity.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/controlify.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/controlling.pw.toml"
|
file = "mods/controlling.pw.toml"
|
||||||
hash = "65c8086d2ec3d39acc7bd36c7a0306ccc43b602b38fa07d13291bc478ef7dfff"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/copycats.pw.toml"
|
file = "mods/copycats.pw.toml"
|
||||||
hash = "fd62a69cda114a6a7c969d4a7ab9604c39acb31a11bdaa8f8618ed922745d2b9"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/corpse-x-curios-api-compat.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/corpse.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/create-connected.pw.toml"
|
file = "mods/create-connected.pw.toml"
|
||||||
hash = "61afa588fd3156a29418aef463c527308b014e72d86b5ca7c03f2f28973ca27a"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/create-dragons-plus.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/create-enchantment-industry.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/create.pw.toml"
|
file = "mods/create.pw.toml"
|
||||||
hash = "dcaf5f2e28db0b9a127d0167456832341045ddc9aec058c3d9fcf53f618d2404"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/critters-and-companions.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/curios.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/distanthorizons.pw.toml"
|
file = "mods/distanthorizons.pw.toml"
|
||||||
hash = "d5b9c23df79ef871a70032567db2512904251347bdf13da80fbb8b00a846a79a"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/dynamic-fps.pw.toml"
|
file = "mods/dynamic-fps.pw.toml"
|
||||||
hash = "ae6fd52d8bdcbeca5bbe6db840f22f92c1928fe0fda22017b19612b9b00a245a"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/entity-model-features.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/entityculling.pw.toml"
|
file = "mods/entityculling.pw.toml"
|
||||||
hash = "4fbe037c1ec3570be84f68e075c3e8293b15f64dda22bca4735924705fb38236"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/entitytexturefeatures.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/farmers-delight.pw.toml"
|
file = "mods/farmers-delight.pw.toml"
|
||||||
hash = "7f837101645afe275564c75605e3950352db2e3dc18e0ebcf7460bac272afde4"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/ferrite-core.pw.toml"
|
file = "mods/ferrite-core.pw.toml"
|
||||||
hash = "73360e397134d238ee8fd21d33fd7f9275e9441f74f8f1b6ed92278877c0b9f1"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/forgified-fabric-api.pw.toml"
|
file = "mods/forgified-fabric-api.pw.toml"
|
||||||
hash = "e3c62164f1eed254aa04629bce3d62b34a65bf15801d2ffb1bf1373a0b97c544"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/freecam.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/fzzy-config.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/geckolib.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/handcrafted.pw.toml"
|
file = "mods/handcrafted.pw.toml"
|
||||||
hash = "0004feab868f7b873c12db05aae0d0dac6c87b497490b48bb66480e7c8d0f340"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/immediatelyfast.pw.toml"
|
file = "mods/immediatelyfast.pw.toml"
|
||||||
hash = "6828b28c310ae427da625473c55b79eb0c7ca42acc76591948644af0c04e3933"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/immersive-paintings.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/iris.pw.toml"
|
file = "mods/iris.pw.toml"
|
||||||
hash = "db1c1e6382878b78e994dba1b9026935f8d1c5ca685c89d2437858e0a0dcab58"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/jade-addons-forge.pw.toml"
|
file = "mods/jade-addons-forge.pw.toml"
|
||||||
hash = "8cd8400cb4e2c5ba60c8a359a7b6ff501078d2056eab0aba7f6b0ac77b7a0694"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/jade.pw.toml"
|
file = "mods/jade.pw.toml"
|
||||||
hash = "4de3e4a1a49e332c1ad313283e0403c4273b628d634c17a9ff0c9da3d6b67f9a"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/jei.pw.toml"
|
file = "mods/jei.pw.toml"
|
||||||
hash = "1eb4094b466679316208fa85e5a855fc71945cfd639ff7f831586452b0cc3ad3"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/just-enough-professions-jep.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/just-enough-resources-jer.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/justenoughbreeding.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/kotlin-for-forge.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/kotlin-lang-forge.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/lambdynamiclights.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/lithium.pw.toml"
|
file = "mods/lithium.pw.toml"
|
||||||
hash = "51e129832b04acd57da470fc41725bad5e101b6a6b1d4901fd8ea7a92b14e13d"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/modernfix.pw.toml"
|
file = "mods/modernfix.pw.toml"
|
||||||
hash = "6d3ff3b7bbcc97fa06bdddcf2b3b7646168497ba6d7104bdea376f1bc65f9a93"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/mouse-tweaks.pw.toml"
|
file = "mods/mouse-tweaks.pw.toml"
|
||||||
hash = "6bc414cc0f2d4c078fe83f384d786343f701f371d657c5279b5b0df1595804bd"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/natures-compass.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/ok-zoomer.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/proxy-compatible-forge.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/resourceful-lib.pw.toml"
|
file = "mods/resourceful-lib.pw.toml"
|
||||||
hash = "c0b066684294c33972d562e0cb08ea17b2d31bcf86cd1d6c63b8e968f0eac7a2"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/screenshot-viewer.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/searchables.pw.toml"
|
file = "mods/searchables.pw.toml"
|
||||||
hash = "ce9ddada6ffd55a512149cc474c6a453281a997a5fdf1b7b4a2cc73f875e704a"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/shulkerboxtooltip.pw.toml"
|
file = "mods/shulkerboxtooltip.pw.toml"
|
||||||
hash = "0bef7b3dd4758a661d3e6827bd390c12ff8a3ede4a66bb2e01e3c760f02bd509"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/simple-voice-chat.pw.toml"
|
file = "mods/simple-voice-chat.pw.toml"
|
||||||
hash = "8eae737eb20a0488e9b57b6a59f0681d142732bcb22fc896ad4e5ff924ec5683"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/slice-and-dice.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/sodium.pw.toml"
|
file = "mods/sodium.pw.toml"
|
||||||
hash = "abc285fb28b8df872e4c2bb31e04fc23e2724d9c84b4cb6fbc4320fc569c758f"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/sophisticated-backpacks.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/sophisticated-core.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/sound-physics-remastered.pw.toml"
|
file = "mods/sound-physics-remastered.pw.toml"
|
||||||
hash = "258a77de0a6db4c9ab045cbb240bcf4eac0dbbca3f6bc981fb461e55c247f23f"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/spark.pw.toml"
|
file = "mods/spark.pw.toml"
|
||||||
hash = "5995decc8738d7ddccec218dfa1ed95db9eca5bb64c98fd2cede8bf9bbc837c2"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/veinminer-client.pw.toml"
|
||||||
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/veinminer.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/xaeros-minimap.pw.toml"
|
file = "mods/xaeros-minimap.pw.toml"
|
||||||
hash = "4c336c9a00838ff5b5bbf6cd8ae35927186fdfa42258ca15513835e1b12ced2f"
|
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|
||||||
[[files]]
|
[[files]]
|
||||||
file = "mods/xaeros-world-map.pw.toml"
|
file = "mods/xaeros-world-map.pw.toml"
|
||||||
hash = "69df708c9b3980d96c953eaa0f98a9cb82ce7679872d1364da5ca4c116dc40b1"
|
metafile = true
|
||||||
|
|
||||||
|
[[files]]
|
||||||
|
file = "mods/yacl.pw.toml"
|
||||||
metafile = true
|
metafile = true
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "3D Skin Layers"
|
||||||
|
filename = "skinlayers3d-neoforge-1.11.2-mc1.21.1.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/zV5r3pPn/versions/xPYbAPfz/skinlayers3d-neoforge-1.11.2-mc1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "c017d098874697ba93a03c06cfb4fe8a8bbc619448bff55c3c821089b164677fae2c8c2059e99fc9933af6ff519759c399deae763b1ac9e34593cd6e4f427f3a"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "zV5r3pPn"
|
||||||
|
version = "xPYbAPfz"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Architectury API"
|
||||||
|
filename = "architectury-13.0.11-neoforge.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/lhGA9TYQ/versions/1IiqEQGl/architectury-13.0.11-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "d9f7c3bb8162577dfb461ffdf04bd6a3563c7586934a0e2a744c14421beffb8286f0d88d4c758317003f20f99fe8072a39b9d675af061e036970d36db36027f0"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "lhGA9TYQ"
|
||||||
|
version = "1IiqEQGl"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Armor Poser"
|
||||||
|
filename = "ArmorPoser-neoforge-1.21.1-6.2.4.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/PFwYNrHb/versions/KlLmtvb1/ArmorPoser-neoforge-1.21.1-6.2.4.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "7ec92a95f818795f515b8ff8b41fba670936a5b420c72b5d7eb74a8879d0afc805c54c57c9a22dc5fc053b4f898231724df443c93d22cfd85cfcf4133a11ee6c"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "PFwYNrHb"
|
||||||
|
version = "KlLmtvb1"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "BaguetteLib"
|
||||||
|
filename = "baguettelib-1.21.1-NeoForge-2.0.6.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/OfKzpbRU/versions/OpiO7Pem/baguettelib-1.21.1-NeoForge-2.0.6.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "0dc4c79e7c6af81a871fa0ff87461c3b58b0a213a4ae86ccafd8e6ff48786f600cd62a7a88a34e57def6921d090a909e8d33e33676b53e8dbd564b9357fdfc21"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "OfKzpbRU"
|
||||||
|
version = "OpiO7Pem"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Better Advancements"
|
||||||
|
filename = "BetterAdvancements-NeoForge-1.21.1-0.4.3.21.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/Q2OqKxDG/versions/FjTYILOi/BetterAdvancements-NeoForge-1.21.1-0.4.3.21.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "b3deafd146dc3ea6e879fbc92f00de5797319a1aa620fb3b39be64c19271dab2efa07f824cda7139f8c22f2524ea413949357f5469bb6de584d1386de069c6b7"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "Q2OqKxDG"
|
||||||
|
version = "FjTYILOi"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "BetterF3"
|
||||||
|
filename = "BetterF3-11.0.3-NeoForge-1.21.1.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/8shC1gFX/versions/maXNB1dn/BetterF3-11.0.3-NeoForge-1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "59c36a882669399dce2110db42df05e8fe935a2e1194c4bac49abffc3129b2e19373dfe3c4a3d2f8b22f21b1d66ad8cbd653944ce0a71ae05d3d65528d1b7514"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "8shC1gFX"
|
||||||
|
version = "maXNB1dn"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Create: Blocks & Bogies"
|
||||||
|
filename = "create_bb-1.0.8-1.21.1.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/j4ARnQwY/versions/nC19ZMKK/create_bb-1.0.8-1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "9f40b8c13f3acad65c479ae763c9cb1d27edf8c391746719409b72f01b1d7396a0d39db907fb7e5c3d97b57b24a27b6b5e2f16cc454c3d73e874dd30ec548e1b"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "j4ARnQwY"
|
||||||
|
version = "nC19ZMKK"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Carry On"
|
||||||
|
filename = "carryon-neoforge-1.21.1-2.2.6.13.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/joEfVgkn/versions/PV8oLZ1q/carryon-neoforge-1.21.1-2.2.6.13.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "e097b11d6f14e0957bab6c0276b81542e786cb86b9c31d9f25975f8c9fb04a734188b8790683298bbc5c695dc3de7d6e947616a20ad26d4a728a3beb0bb78667"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "joEfVgkn"
|
||||||
|
version = "PV8oLZ1q"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Client Sort"
|
||||||
|
filename = "clientsort-neoforge-2.2.2+1.21.1.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/K0AkAin6/versions/lLpcVRPr/clientsort-neoforge-2.2.2%2B1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "88f3e721964e5f2436ba15562c8577eabe2110237998cb8725121b1b6ea52e797b1d2ea6f6fdbeadb4348c5eb3b2dc56675001c66a58a2ce822c1491d39926d9"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "K0AkAin6"
|
||||||
|
version = "lLpcVRPr"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Cloth Config API"
|
||||||
|
filename = "cloth-config-15.0.140-neoforge.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/9s6osm5g/versions/izKINKFg/cloth-config-15.0.140-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "aaf9b010955b8cd294e5a92f069985b18729fd5e2cf22d351f1dff9680f15488688803ec41e77e941cbde130ceb535014ca4c868047d80ab69c2d508e216654d"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "9s6osm5g"
|
||||||
|
version = "izKINKFg"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Comforts"
|
||||||
|
filename = "comforts-neoforge-9.0.5+1.21.1.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/SaCpeal4/versions/3kpPjcTc/comforts-neoforge-9.0.5%2B1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "e9de2952545e9e773a6e78fc501e8cd231ea19750c30404355b71df9928eb5bd0921a4429aeca9d0fa10e67717f77fcf7a2aae117ac953b8f7de246b0ad685e4"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "SaCpeal4"
|
||||||
|
version = "3kpPjcTc"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Continuity"
|
||||||
|
filename = "continuity-3.0.0+1.21.neoforge.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/1IjD5062/versions/eXGUs5sy/continuity-3.0.0%2B1.21.neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "320b6def6073ce0ffc0ce2bd7cdb66324467ea3e7cec05508f32d78f65c60ff3e155394b94c60f62e059404ec0ca3fc6112987a5764a8f85241d3026a2ee4935"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "1IjD5062"
|
||||||
|
version = "eXGUs5sy"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Controlify (Controller support)"
|
||||||
|
filename = "controlify-3.0.1+lts+1.21.1-neoforge.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/DOUdJVEm/versions/RqsNKKLK/controlify-3.0.1%2Blts%2B1.21.1-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "cfffb25b9e62ca39cd6f54ab0b83902feda23a763ae9e345a11609f0138de1b6c3ab7a78c8fd5b7b309795e5c6d4911fd37cd7f8722a72cca6ad18e32cec461e"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "DOUdJVEm"
|
||||||
|
version = "RqsNKKLK"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Corpse x Curios API Compat"
|
||||||
|
filename = "corpsecurioscompat-1.21.1-NeoForge-4.0.1.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/pJGcKPh1/versions/Ix4uAd2i/corpsecurioscompat-1.21.1-NeoForge-4.0.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "3a75b28b4bf25d775c399c8b5eff1f186020957332f3698d4e313cd0c0785c8b5814ca7fd7194e8b938e276073bab99e8d22aa2c5c10ca78763945db825059fe"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "pJGcKPh1"
|
||||||
|
version = "Ix4uAd2i"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Corpse"
|
||||||
|
filename = "corpse-neoforge-1.21.1-1.1.13.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/WrpuIfhw/versions/Zwf8nv8y/corpse-neoforge-1.21.1-1.1.13.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "473aafd82008c1e041e3b4a5a177507d555c8bc9dd1f121f252f1e81bc0c69c79a91cb64be0df343babcb3d4db76efbaa7aa2adaeaae29337808a368bc290ad0"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "WrpuIfhw"
|
||||||
|
version = "Zwf8nv8y"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Create: Dragons Plus"
|
||||||
|
filename = "CreateDragonsPlus-1.11.7b.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/dzb1a5WV/versions/zQDQbNih/CreateDragonsPlus-1.11.7b.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "4b86f50641b95532d8662e333b1805f0938bf49d1fd9ee7bd4920dca7a4c3707e11f95d44d6a6ce250acc0d534f08ffd2a7891308d587c4d63ce63be3377ae83"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "dzb1a5WV"
|
||||||
|
version = "zQDQbNih"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Create: Enchantment Industry"
|
||||||
|
filename = "create-enchantment-industry-2.4.2.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/JWGBpFUP/versions/qUpvzZ83/create-enchantment-industry-2.4.2.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "16bd3dcd82159d6793bd9cc24dcb911b90e838c67f781581afea8c6af21f53106ac54de7f2dffe1a8576cf8908e68658538a1c76d3c44691109a24bc60460436"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "JWGBpFUP"
|
||||||
|
version = "qUpvzZ83"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Critters and Companions"
|
||||||
|
filename = "crittersandcompanions-neoforge-1.21.1-2.7.0.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/Yd4wb5wZ/versions/aeDUpTJS/crittersandcompanions-neoforge-1.21.1-2.7.0.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "f93bb48b07122d1c93cd931169752814c46f2ed964da987ab5ce654e8f70242c57265c3853bbb357f5fd95c412e775bf7b9a2abeb2a2a0858eae95c8d8ba451d"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "Yd4wb5wZ"
|
||||||
|
version = "aeDUpTJS"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Curios API"
|
||||||
|
filename = "curios-neoforge-9.5.1+1.21.1.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/vvuO3ImH/versions/yohfFbgD/curios-neoforge-9.5.1%2B1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "5981a267686b744e7e3c227f78cbcd5267c14ac6979a28e814695f4589273998563147207fef4a5cdb7cdbdc39797cd95d9e4abadb55869f18e02a38d0654ae5"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "vvuO3ImH"
|
||||||
|
version = "yohfFbgD"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "[EMF] Entity Model Features"
|
||||||
|
filename = "entity_model_features-3.3.5-1.21-neoforge.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/4I1XuqiY/versions/szv0UmJn/entity_model_features-3.3.5-1.21-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "68761183a2dffee099800d3769eaa3f2c8f156b2c30102f20422b48914be914d9a929ca95837cf01c2d076679b291e338318938ae4fc927927925061aace2480"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "4I1XuqiY"
|
||||||
|
version = "szv0UmJn"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "[ETF] Entity Texture Features"
|
||||||
|
filename = "entity_texture_features-7.2.1-1.21-neoforge.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/BVzZfTc1/versions/XEJeKpgJ/entity_texture_features-7.2.1-1.21-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "8158242ce79b38a613de7696221eae24c9a451040143fbe43f8d8a37329d7debcb6164c0d42177d2f7db306e54f2d7bbd99eee74add39ad3871c70754edd8cb7"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "BVzZfTc1"
|
||||||
|
version = "XEJeKpgJ"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Freecam"
|
||||||
|
filename = "freecam-neoforge-1.3.0+mc1.21.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/XeEZ3fK2/versions/ROfcbxxe/freecam-neoforge-1.3.0%2Bmc1.21.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "06cfa2acdde8320ca19edf3f49e7a3860cc079bbad02fda493459109d745da237e19ff6a28d879d4c863ea4cd24d83b193ec82dd351540ad27991e239f1e7a72"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "XeEZ3fK2"
|
||||||
|
version = "ROfcbxxe"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Fzzy Config"
|
||||||
|
filename = "fzzy_config-0.7.6+1.21+neoforge.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/hYykXjDp/versions/MAPG6cXE/fzzy_config-0.7.6%2B1.21%2Bneoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "6071890aba7f2273c9fd508914acc7850de9d986423760f9ce416875ffa04eea2ad71a7a6f4d5f90f0625a672f6f54606778d11151b155f3fd98c223c61a4a6d"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "hYykXjDp"
|
||||||
|
version = "MAPG6cXE"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Geckolib"
|
||||||
|
filename = "geckolib-neoforge-1.21.1-4.9.2.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/8BmcQJ2H/versions/tPkJmim6/geckolib-neoforge-1.21.1-4.9.2.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "c91012b16cc40c8f48f69b78cb8e2e5c006486ae2431fbd289dfc01be7a4217294becea22d83a155d6b32b3969450df871352a3695e1452168b84f41355f7b9e"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "8BmcQJ2H"
|
||||||
|
version = "tPkJmim6"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Immersive Paintings"
|
||||||
|
filename = "immersive_paintings-neoforge-1.21.1-0.7.8.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/6txNkua3/versions/DeOfrXC3/immersive_paintings-neoforge-1.21.1-0.7.8.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "f08e759ab6bbdd8b2d00ae3e1cc7044dfe3efa86d34fbbf7553d097ad1be358818d6569902b122cff2654c3a0942eb1a7406cf17ca537386b7d382aa8454b326"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "6txNkua3"
|
||||||
|
version = "DeOfrXC3"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Just Enough Professions (JEP)"
|
||||||
|
filename = "JustEnoughProfessions-neoforge-1.21.1-4.0.5.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/kB56GtWA/versions/Avs9oGLn/JustEnoughProfessions-neoforge-1.21.1-4.0.5.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "2d9ecd7dbe8a676447009a6943b99f54bb732d084d220c09b79636293e67596f8e0ac1d1a849ad1077126b5e9da4aff31c5bfd81836459190c63b974500c8363"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "kB56GtWA"
|
||||||
|
version = "Avs9oGLn"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Just Enough Resources (JER)"
|
||||||
|
filename = "JustEnoughResources-NeoForge-1.21.1-1.6.0.17.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/uEfK2CXF/versions/TgNFki8j/JustEnoughResources-NeoForge-1.21.1-1.6.0.17.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "9a4f8c32e65d5f9451edcf1a584b22b9f590dab2cfb3efb68ef2b4c042d8ff39dcfdaddba0a9d615c7af4ecfa1cefda417c8972d7dcb54e574837ec81d6939b0"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "uEfK2CXF"
|
||||||
|
version = "TgNFki8j"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Just Enough Breeding (JEBr)"
|
||||||
|
filename = "justenoughbreeding-neoforge-1.21.1-3.2.1.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/9Pk89J3g/versions/lVl2kVwh/justenoughbreeding-neoforge-1.21.1-3.2.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "d1e9970f615d7a0986f030259d7d16cc4ba8cbd89bb81d1a1fbf6da2d3a9c7a0376957e1b418bcd82c9e45dcbdb6eb05fde2e20cc3f5225db33d0436759baee6"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "9Pk89J3g"
|
||||||
|
version = "lVl2kVwh"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Kotlin for Forge"
|
||||||
|
filename = "kotlinforforge-5.12.0-all.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/ordsPcFz/versions/uhJhCT7X/kotlinforforge-5.12.0-all.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "b8c3942f4d33179edf3f102f3d870b99dd436f8b8236dbbd31aa51b888162c692cfd88927295f24dc8b4375232f4c6c17360c5d6c4823f93cbcd7cf4bdc8bd14"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "ordsPcFz"
|
||||||
|
version = "uhJhCT7X"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "KotlinLangForge"
|
||||||
|
filename = "KotlinLangForge-2.13.0-k2.4.10-3.0+neoforge.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/1vrSzlao/versions/XsDHyDlZ/KotlinLangForge-2.13.0-k2.4.10-3.0%2Bneoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "1dec600b87b1d6a350bbfb3c7ad45136929e77851dac66efc70d217cde2af2115b822560f404355cfaa0f45453b32c9045cdcfa57b5840dec9a88f9302cb42be"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "1vrSzlao"
|
||||||
|
version = "XsDHyDlZ"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "LambDynamicLights - Dynamic Lights"
|
||||||
|
filename = "lambdynamiclights-4.8.10+1.21.1.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/yBW8D80W/versions/DZDOX6ps/lambdynamiclights-4.8.10%2B1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "2a8ca94cd56e9e5ed046126f4b03edba2965c8fe76210ebc5ca53bb075832274dce1cb438082fbc2aea268f93986ad17b6231afad7c100359a9185bba517c4f9"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "yBW8D80W"
|
||||||
|
version = "DZDOX6ps"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Nature's Compass"
|
||||||
|
filename = "NaturesCompass-1.21.1-3.4.0-neoforge.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/fPetb5Kh/versions/nFniEtJV/NaturesCompass-1.21.1-3.4.0-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "5314b536bcb9a594a9cf2bbd46c82468d17e1559bd6c00da9d91e96c0814f50416799a011705f0d184bd731dac3f03dec009c76fea3d02b3556a6013f9649014"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "fPetb5Kh"
|
||||||
|
version = "nFniEtJV"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Ok Zoomer - It's Zoom!"
|
||||||
|
filename = "ok_zoomer-neo-10.0.0-beta.13.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/aXf2OSFU/versions/AkPuuAgJ/ok_zoomer-neo-10.0.0-beta.13.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "a7abed243ef8f535dbd24dc6e8a211cc42d28ff2c72322f04dc289e2de6fde4ca00ee2dd3943fad7aa24dc3af497b379c05e10f827ed24a737a73bdb1b142c6e"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "aXf2OSFU"
|
||||||
|
version = "AkPuuAgJ"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Proxy Compatible Forge"
|
||||||
|
filename = "proxy-compatible-forge-1.3.1.jar"
|
||||||
|
side = "server"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/vDyrHl8l/versions/qiZ49HIW/proxy-compatible-forge-1.3.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "dba5b70fedcb0f5fdc014801ab43e6d048f24b531de8aea5b70ea223760b66ae9fba3033c2ccd9d78793b9ea2f9d3b47ae1f4caa95aa129d989f97e63636b4ab"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "vDyrHl8l"
|
||||||
|
version = "qiZ49HIW"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Screenshot Viewer"
|
||||||
|
filename = "screenshot_viewer-1.3.4-neoforge-mc1.21.1.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/laNoi025/versions/efjk3jeu/screenshot_viewer-1.3.4-neoforge-mc1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "3aa3959a518a0a5eeede72ba699d9b1974486736b8c0c6c5a624ca286f4f73dce5cea80a3e207b7e96dfe22a65a803aa5e240beb535f343459757cc474836029"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "laNoi025"
|
||||||
|
version = "efjk3jeu"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Create Slice & Dice"
|
||||||
|
filename = "sliceanddice-4.3.3-neoforge.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/GmjmRQ0A/versions/N67LJgrN/sliceanddice-4.3.3-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "3bdbd282ae5aa11ef6c186b752497541730b50fb400c4962230bcd7734cfe4e8daa2ee565387450dfe0eb6deaa0fa44bf81f99c788bac09b1a60d8f1991db37f"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "GmjmRQ0A"
|
||||||
|
version = "N67LJgrN"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Sophisticated Backpacks"
|
||||||
|
filename = "sophisticatedbackpacks-1.21.1-3.25.78.2107.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/TyCTlI4b/versions/6apvKKGZ/sophisticatedbackpacks-1.21.1-3.25.78.2107.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "c2c9bc314068eb4a216dc8cd0826e7763ffa49f948595c9454a42ac80b1d0bd8e83a40752c6ee374ca5cdaafbf34be0577105b77947d7c2e60e1e7695630f7b7"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "TyCTlI4b"
|
||||||
|
version = "6apvKKGZ"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "Sophisticated Core"
|
||||||
|
filename = "sophisticatedcore-1.21.1-1.4.90.2299.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/nmoqTijg/versions/zvRSOlro/sophisticatedcore-1.21.1-1.4.90.2299.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "aa335c59b20d93aedb88e59ec85c04121fa682fab1ea4a080d7b88d7b545db83ef7c019f2334f0aee5605da2a6997c442e58a295cf9656b57bba986bf2427104"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "nmoqTijg"
|
||||||
|
version = "zvRSOlro"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "VeinMiner Hotkey"
|
||||||
|
filename = "veinminer-client-neoforge-2.11.2+1.21.1.jar"
|
||||||
|
side = "client"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/dxa0Bm8m/versions/dIwSWhIM/veinminer-client-neoforge-2.11.2%2B1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "7ad476f80a5aee3b030d161f3be643cf01622cce254b9779b8d37137693cd6a9d4740c00ee94e265873b14ab19aa18cc9fb9324e5e9669bb9dc94d34c1c2679e"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "dxa0Bm8m"
|
||||||
|
version = "dIwSWhIM"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "VeinMiner"
|
||||||
|
filename = "veinminer-neoforge-2.11.2+1.21.1.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/OhduvhIc/versions/syKekkIm/veinminer-neoforge-2.11.2%2B1.21.1.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "195fdfe9f1358e85218e770c953223825d102f54b5f607857b8893959cd2164a04c921987611a7933592ba89a83aa2bd8f3cec0b1fcf7d87a20b168f88b2cc05"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "OhduvhIc"
|
||||||
|
version = "syKekkIm"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
name = "YetAnotherConfigLib (YACL)"
|
||||||
|
filename = "yet_another_config_lib_v3-3.8.2+1.21.1-neoforge.jar"
|
||||||
|
side = "both"
|
||||||
|
|
||||||
|
[download]
|
||||||
|
url = "https://cdn.modrinth.com/data/1eAoo2KR/versions/7TVdVtxF/yet_another_config_lib_v3-3.8.2%2B1.21.1-neoforge.jar"
|
||||||
|
hash-format = "sha512"
|
||||||
|
hash = "583de19b927ce8050c2b7d5e60b75accc69e325e5aac85c27994c82a9dec2e4e078343fa1d4c3a10d4bd7e0e524e0b3b246a18cf03db01e363a1e6f865adcf48"
|
||||||
|
|
||||||
|
[update]
|
||||||
|
[update.modrinth]
|
||||||
|
mod-id = "1eAoo2KR"
|
||||||
|
version = "7TVdVtxF"
|
||||||
+5
-3
@@ -1,13 +1,15 @@
|
|||||||
name = "Forever-AGS"
|
name = "agsmc-forever"
|
||||||
author = "ahmza"
|
author = "ahmza"
|
||||||
version = "1.0.0"
|
version = "1.1.2"
|
||||||
pack-format = "packwiz:1.1.0"
|
pack-format = "packwiz:1.1.0"
|
||||||
|
|
||||||
[index]
|
[index]
|
||||||
file = "index.toml"
|
file = "index.toml"
|
||||||
hash-format = "sha256"
|
hash-format = "sha256"
|
||||||
hash = "7c301d5e22c499b42d533cbb4d3a778295419c1328c58f363a049894467cf0b8"
|
|
||||||
|
|
||||||
[versions]
|
[versions]
|
||||||
minecraft = "1.21.1"
|
minecraft = "1.21.1"
|
||||||
neoforge = "21.1.248"
|
neoforge = "21.1.248"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
no-internal-hashes = true
|
||||||
|
|||||||
Executable
+71
@@ -0,0 +1,71 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Assemble the exact URL layout documented in .gitea/README.md from committed
|
||||||
|
# Git revisions. Using git archive, rather than copying the working tree, keeps
|
||||||
|
# uncommitted experiments and ignored pack exports out of published images.
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
repo_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
||||||
|
cd "$repo_root"
|
||||||
|
|
||||||
|
dev_ref=${1:-HEAD}
|
||||||
|
packwiz_bin=${PACKWIZ_BIN:-packwiz}
|
||||||
|
build_root="$repo_root/.build"
|
||||||
|
site_root="$build_root/site"
|
||||||
|
work_root="$build_root/work"
|
||||||
|
|
||||||
|
if ! command -v "$packwiz_bin" >/dev/null 2>&1; then
|
||||||
|
echo "Packwiz executable not found: $packwiz_bin" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf "$site_root" "$work_root"
|
||||||
|
mkdir -p "$site_root/forever/releases" "$work_root"
|
||||||
|
|
||||||
|
export_pack() {
|
||||||
|
revision=$1
|
||||||
|
pack=$2
|
||||||
|
destination=$3
|
||||||
|
scratch="$work_root/export"
|
||||||
|
|
||||||
|
rm -rf "$scratch"
|
||||||
|
mkdir -p "$scratch" "$(dirname -- "$destination")"
|
||||||
|
|
||||||
|
if ! git cat-file -e "$revision:$pack/pack.toml" 2>/dev/null; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git archive "$revision" "$pack" | tar -x -C "$scratch"
|
||||||
|
mv "$scratch/$pack" "$destination"
|
||||||
|
|
||||||
|
# Source packs intentionally omit internal hashes. Generate the distributable
|
||||||
|
# index only in the ephemeral image-build tree, never in the Git checkout.
|
||||||
|
(
|
||||||
|
cd "$destination"
|
||||||
|
"$packwiz_bin" refresh --build
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# main is always the development source, including when this script runs for a
|
||||||
|
# release-tag event whose checked-out commit is intentionally older than main.
|
||||||
|
export_pack "$dev_ref" forever "$site_root/forever/dev"
|
||||||
|
|
||||||
|
# Each forever-vX.Y.Z tag becomes an immutable URL. Version-aware Git sorting
|
||||||
|
# also identifies the newest release to copy to the stable channel.
|
||||||
|
release_tags=$(git tag --list 'forever-v*' --sort=-version:refname \
|
||||||
|
| grep -E '^forever-v[0-9]+\.[0-9]+\.[0-9]+$' || true)
|
||||||
|
|
||||||
|
for tag in $release_tags; do
|
||||||
|
version=${tag#forever-}
|
||||||
|
export_pack "$tag" forever "$site_root/forever/releases/$version"
|
||||||
|
echo "Published Forever release $version"
|
||||||
|
done
|
||||||
|
|
||||||
|
latest_tag=$(printf '%s\n' "$release_tags" | sed -n '/./{p;q;}')
|
||||||
|
if [ -n "$latest_tag" ]; then
|
||||||
|
export_pack "$latest_tag" forever "$site_root/forever/stable"
|
||||||
|
echo "Promoted ${latest_tag#forever-} to Forever stable"
|
||||||
|
else
|
||||||
|
echo "No forever-vX.Y.Z tag exists; /forever/stable is not published yet" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf "$work_root"
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
[general]
|
||||||
|
|
||||||
|
# Listen on the Pod network. Kubernetes' Service and ingress-nginx provide the
|
||||||
|
# stable internal address and public TLS endpoint in front of this process.
|
||||||
|
host = "0.0.0.0"
|
||||||
|
port = 80
|
||||||
|
root = "/public"
|
||||||
|
log-level = "info"
|
||||||
|
|
||||||
|
# Packwiz clients need files, not browsable directory indexes or SPA fallback
|
||||||
|
# behavior. A missing pack/release must remain a real 404 rather than silently
|
||||||
|
# returning an unrelated document.
|
||||||
|
directory-listing = false
|
||||||
|
|
||||||
|
# ingress-nginx handles response compression. Disabling it here avoids doing
|
||||||
|
# the same CPU work twice for large TOML indexes.
|
||||||
|
compression = false
|
||||||
|
compression-static = false
|
||||||
|
|
||||||
|
# Development and stable paths can change, so do not emit SWS's long-lived
|
||||||
|
# static-asset cache policy. Release paths remain immutable by convention.
|
||||||
|
cache-control-headers = false
|
||||||
|
|
||||||
|
# Kubernetes probes this endpoint without depending on any particular pack
|
||||||
|
# having been published yet.
|
||||||
|
health = true
|
||||||
Reference in New Issue
Block a user