Minecraft taught me everything I know about engineering (and XP farm ethics).
This modpack started as a winter break project to keep my brain from turning to mush.
My dog Olly made it in. He fights cows.
Minecraft 1.21.1 · NeoForge 21.1 · 84 mods + 2 of our own · one-command install
Mac (needs Homebrew and a Minecraft account):
git clone https://github.com/HarrisJDCampbell/Harris-ModPack.git
cd Harris-ModPack
./install.sh- The script installs whatever's missing (Java 21, Prism Launcher), downloads and hash-checks every mod, and builds a Prism instance called Harris ModPack with 8 GB of RAM.
- Prism opens. First time only: finish its setup screens, then Accounts → Add Microsoft and sign in.
- Select Harris ModPack → Launch.
Update: git pull && ./install.sh. Only changed mods download; your worlds and settings are left alone.
Windows / Linux: install Prism Launcher and Python 3.11+, clone the repo, then
run python3 scripts/modpack.py install. Prism offers to download Java on first launch.
Other launchers (Modrinth App, ATLauncher): make export (needs make tools once) builds
dist/Harris-ModPack-<version>.mrpack; import that file.
Engineering. Create with the good add-ons: electricity (Crafts & Additions), liquid XP (Enchantment Industry), actual cannons (Big Cannons), extra building blocks (Copycats+, Deco, Connected), and kitchen automation (Slice & Dice, Central Kitchen with Farmer's Delight).
A bigger world. Terralith biomes on Tectonic terrain, all of YUNG's structure overhauls, Dungeons & Taverns, and Towns & Towers.
Adventure. The Aether, Mowzie's Mobs and L_Ender's Cataclysm bosses, Naturalist wildlife, Artifacts, Better Combat with dodge rolls, Waystones, backpacks, gravestones.
Olly. The custom part. Name any tamed dog Olly and he becomes Olly: Olly-sized (a bit smaller than a wolf, like the real one), tougher, faster, and he fights cows. Cows he takes down drop Olly's Trophy. Doggy Talents Next lets him level up and learn talents.
The funny stuff. Creepers still sneak up and hiss, then explode into confetti: no crater, no damage,
just a party (toggle in config/harris-common.toml). Mum's Shepherd's Pie is its own food item with its own
pixel art, and it's the best food in the game.
Polish. A built-in field guide on first join, a custom advancement tab, splash texts, keybind conflicts
already sorted, Complementary shaders one key away (K), and a performance stack (Sodium, Lithium, FerriteCore,
ModernFix, Entity Culling, ImmediatelyFast) so it all runs well.
make server DIR=~/harris-serverSets up a dedicated NeoForge server with only the server-side mods. Read the
Minecraft EULA, set eula=true in eula.txt, then ./run.sh nogui.
Friends join with the same pack version (send them the .mrpack).
| Key | Does |
|---|---|
R |
Dodge roll |
B |
Open backpack |
M / N / U |
World map / new waypoint / waypoint list |
K / O |
Shaders on/off / pick shader pack |
G / H / I |
Trinket slots (Curios / Accessories / Aether) |
W over a Create item |
Ponder (animated tutorial) |
R / U over any item |
Recipes / uses |
All of it is in the Harris Field Guide you spawn with.
The pack is plain text managed with packwiz: every mod is a small .pw.toml
file in pack/mods/ with a download URL and a hash, so git tracks exactly what changed.
pack/ packwiz source of truth (mods, shaders, default configs)
olly/ the Olly mod: functions, advancements, loot, field guide, splashes
mod/ the Harris Java mod (NeoForge, Gradle): confetti creepers, Mum's Shepherd's Pie
art/ pixel art as text files, rendered into textures by `make art`
scripts/
modpack.py install / sync / server / export / check
smoke_test.py boots the real game into a test world and checks everything works
pixelart.py art/*.txt -> PNG textures
pixelize.py any image (drawings, photos) -> clean 16x16 texture
install.sh one-command macOS install
Makefile shortcuts (run `make`)
| Command | What it does |
|---|---|
make tools |
Install packwiz (needed to add or update mods) |
cd pack && packwiz mr add <slug> |
Add a mod from Modrinth |
make outdated / make update |
See / apply mod updates |
make olly |
Rebuild the Olly jar after editing olly/ |
make mod |
Build the Harris Java mod into the pack (needs Java 21) |
make art |
Render art/*.txt into textures |
make pixelize IN=pic.png NAME=item |
Turn any image into a 16x16 item texture |
make check |
Fast checks: hashes, sides, Olly jar up to date |
make test |
Launch the game, load a test world, run the Olly checks, quit |
make install |
Apply your changes to the Prism instance |
olly/ is a NeoForge "lowcode" mod: no Java, just data and assets, packed into a jar so it applies to every
world automatically (no datapack to copy around). A one-second heartbeat function finds tamed wolves or Doggy
Talents dogs named Olly, tags them, and applies permanent attribute modifiers. The cow trophy is a NeoForge
global loot modifier that adds a loot table only when the cow's killer has Olly's tag. The jar is zipped with
fixed timestamps and no compression, so the same source always produces the same bytes and the same hash.
Two ways to get a texture in:
- Draw it as text.
art/mums_shepherds_pie.txtis a palette plus a 16x16 grid of letters.make artrenders every file inart/to its PNG. Easy to tweak one pixel and see the diff in git. - Bring a picture. Draw it anywhere, or grab any picture, then
make pixelize IN=~/Downloads/thing.png NAME=thing. Big "pixel art" images are usually ~1024px with a wobbly grid and hundreds of colours, so a plain resize looks like mush. The script removes the background, cuts the image to a small palette, then picks each output pixel by majority vote of the block it covers, which keeps edges crisp. A 16x preview lands in.test/art/.
mod/ is a normal NeoForge 1.21.1 mod. Confetti creepers listen for ExplosionEvent.Start, which fires before
any block or entity is touched; if the exploder is a creeper, the event is cancelled and the server sends one
packet telling clients to spawn a burst of confetti particles (white sprites tinted a random party colour on the
client). The pie is a regular food item with effects, a recipe and a tooltip. The jar is built with fixed
timestamps so rebuilding unchanged code gives the same hash.
scripts/smoke_test.py writes a fresh world's level.dat by hand (a tiny NBT writer), drops in a test datapack,
and launches the real client straight into it. The datapack summons a wolf named Olly, checks he got buffed,
kills a cow with him, and confirms the trophy dropped and the field guide was handed out. It also lights a real
creeper next to a glass block and passes only if the glass survives. Each check prints
SMOKE PASS/FAIL to the log, which the script watches. It also fails on any load error from the Olly mod or on
a crash.
Every mod belongs to its authors. Huge thanks to all of them, see each project's Modrinth page. Built by Harris Campbell. Olly is a real dog and he is doing great.
The scripts, the Olly mod and the Harris mod in this repo are MIT licensed (see LICENSE). The mods the pack
downloads are not part of this repo and stay under their own licenses.
