14 Commits
Author SHA1 Message Date
ahmza 4749e800a3 Publish Packwiz site as immutable image
Publish Packwiz site / publish (push) Failing after 20s
2026-09-04 12:04:31 +00:00
ahmza 033211c830 Remove Create Vibrant Vaults 2026-09-02 21:08:05 +01:00
ahmza f10e63fb9b Promote tested Forever mod additions 2026-09-02 21:06:00 +01:00
ahmza fe7749f8ee Fix Forever icon permissions 2026-08-31 22:07:38 +01:00
ahmza 47b3971989 Add Carry On 2026-08-31 22:07:32 +01:00
ahmza 18940c1f69 Package VeinMiner configuration 2026-08-31 00:18:56 +01:00
ahmza 9335b6fac1 Add Curios API 2026-08-29 20:25:06 +01:00
ahmza c2cf9ce0c4 Add Forever 1.1.0 mod updates 2026-08-29 20:24:40 +01:00
ahmza 48ffed7da8 added read me describing the differences between the two current modpacks 2026-08-22 19:36:06 +01:00
ahmza 60f552ba6a initialise the gitea workflows. 2026-08-22 19:35:26 +01:00
ahmza c5f1482aea relocated .gitignore 2026-08-22 19:21:37 +01:00
ahmza f91dcecf07 remove internal hashes to make git friendly 2026-08-22 19:20:19 +01:00
ahmza 1ddf8184c2 remove internal hashes to make git friendly 2026-08-22 19:19:22 +01:00
ahmza 3119c08a64 update the description 2026-08-22 19:11:56 +01:00
56 changed files with 1553 additions and 50 deletions
+8
View File
@@ -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/**
+204
View File
@@ -0,0 +1,204 @@
# 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
```
### Playground
Disposable environment for testing mods, updates and configuration changes before considering them for Forever World.
Development:
```text
https://mc.ahmza.com/playground/dev/pack.toml
```
## Repository Structure
```text
mc-modpacks/
├── .gitea/
│ └── workflows/
├── scripts/
│ └── build-site.sh
├── Dockerfile
├── sws.toml
├── forever/
│ ├── pack.toml
│ ├── index.toml
│ ├── mods/
│ ├── config/
│ ├── defaultconfigs/
│ └── README.md
├── playground/
│ ├── 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, then
builds the multi-architecture image
`tea.ahmza.com/ahmza/mcpacks-site`.
The workflow finally commits that image's immutable OCI digest to
`apps/mcpacks/deployment.yaml` in the `ahmza/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 Gitea Actions repository secret `GITEATOKEN` must be able to:
- push packages owned by `ahmza`
- read and write `ahmza/k8s-starter-pack`
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.
+137
View File
@@ -0,0 +1,137 @@
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/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: 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
./scripts/build-site.sh "$dev_ref"
test -s .build/site/forever/dev/pack.toml
- 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: ${{ gitea.repository_owner }}
password: ${{ secrets.GITEATOKEN }}
# 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/k8s-starter-pack
ref: main
token: ${{ secrets.GITEATOKEN }}
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/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
View File
@@ -0,0 +1,14 @@
# Pack exports
*.mrpack
*.zip
# Local/editor junk
.DS_Store
.idea/
.vscode/
*.swp
*~
# Temporary build output
.build/
dist/
+19
View File
@@ -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/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"]
+2 -2
View File
@@ -7,7 +7,7 @@
"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",
@@ -83,4 +83,4 @@
"field_type": "text" "field_type": "text"
} }
] ]
} }
-10
View File
@@ -1,10 +0,0 @@
# Generated exports
*.mrpack
*.zip
# Temporary/local files
.DS_Store
*.tmp
# packwiz cache if created locally
.packwiz/
+135
View File
@@ -0,0 +1,135 @@
# 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.
## 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
```
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 Playground 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
+89
View File
@@ -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 = []
+1
View File
@@ -0,0 +1 @@
[]
+69
View File
@@ -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
}
}
]
+33
View File
@@ -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
}
}
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+167 -35
View File
@@ -1,176 +1,308 @@
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 metafile = true
[[files]] [[files]]
file = "mods/entityculling.pw.toml" file = "mods/entityculling.pw.toml"
hash = "4fbe037c1ec3570be84f68e075c3e8293b15f64dda22bca4735924705fb38236"
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 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
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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"
+13
View File
@@ -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
View File
@@ -1,13 +1,15 @@
name = "Forever-AGS" name = "agsmc-forever"
author = "ahmza" author = "ahmza"
version = "1.0.0" version = "1.1.0"
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
+84
View File
@@ -0,0 +1,84 @@
# Playground
Playground is the experimental Minecraft environment.
Unlike Forever World, this pack is intentionally disposable and exists for testing mods, updates and configuration changes without risking the permanent world.
## Purpose
Use Playground for:
- evaluating new mods
- testing major mod updates
- testing Minecraft/NeoForge upgrades
- experimenting with world generation
- testing compatibility between mods
- testing configuration changes
- reproducing crashes
- validating potential Forever World changes
The world may be reset or replaced at any time.
## Platform
The Minecraft and NeoForge versions may change depending on what is being tested.
Packwiz remains the source of truth for the pack.
## Deployment
Development builds are published at:
```text
https://mc.ahmza.com/playground/dev/pack.toml
```
The Pterodactyl server should normally use:
```text
PACKWIZ_AUTO_SYNC=1
```
so restarting Playground synchronises it with the latest published pack.
## Development
Playground changes can normally be committed directly to `main`:
```bash
cd playground
packwiz add <mod>
packwiz refresh
git add .
git commit -m "Test <mod> in Playground"
git push
```
Feature branches may be used for larger experiments, but are not required for routine testing.
## Promotion to Forever World
A mod working in Playground does not automatically make it suitable for Forever World.
Before promotion consider:
- stability
- maintenance activity
- compatibility
- world-save impact
- dependencies
- performance
- removal behaviour
- future Minecraft upgrade prospects
Mods considered suitable should then be added independently to the Forever pack and tested against the Forever staging server.
## Persistence
Nothing in Playground should be considered permanent.
Worlds, configs and mods may be removed or reset as required.
If something matters, move it into the appropriate version-controlled configuration before relying on it.
+66
View File
@@ -0,0 +1,66 @@
#!/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}
build_root="$repo_root/.build"
site_root="$build_root/site"
work_root="$build_root/work"
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"
}
# 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"
# Playground is documented but intentionally incomplete today. Start serving
# it automatically as soon as a committed playground/pack.toml exists.
if export_pack "$dev_ref" playground "$site_root/playground/dev"; then
echo "Published playground development pack from $dev_ref"
else
echo "Skipping playground: $dev_ref has no playground/pack.toml" >&2
fi
# 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"
+26
View File
@@ -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