No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Matt 1e49bc88fd
All checks were successful
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
fix(ci): drop ARM outputs
2026-08-02 15:22:51 -04:00
config/paxi fix: restore Dungeons and Taverns quest maps 2026-08-02 12:57:02 -04:00
docs fix(ci): drop ARM outputs 2026-08-02 15:22:51 -04:00
mods feat: add native Prism pack distribution 2026-08-02 15:04:58 -04:00
scripts feat: add native Prism pack distribution 2026-08-02 15:04:58 -04:00
.packwizignore test: expand modpack integration coverage 2026-08-02 04:16:10 -04:00
flake.lock feat: initialize piratecraft modpack 2026-08-02 01:17:56 -04:00
flake.nix fix(ci): drop ARM outputs 2026-08-02 15:22:51 -04:00
index.toml feat: add native Prism pack distribution 2026-08-02 15:04:58 -04:00
pack.toml feat: add native Prism pack distribution 2026-08-02 15:04:58 -04:00
README.md fix(ci): drop ARM outputs 2026-08-02 15:22:51 -04:00
renovate.json feat: automate Packwiz mod updates 2026-08-02 02:37:04 -04:00

Piratecraft

Piratecraft is a small pirate RPG and physics-ship modpack for Minecraft 1.21.1 on NeoForge. It is inspired by Sneak's Pirate Pack, with its sailing, naval artillery, hostile pirates, treasure hunting, maritime structures, and light RPG progression rebuilt around the modern Sable physics ecosystem.

Status

This pack is beta software. Sable 2.0.3 is an intrusive physics library with known compatibility and long-running server persistence risks. The core integration versions are pinned and should only be upgraded together after a dedicated-server soak test:

  • NeoForge 21.1.228
  • Create 6.0.10
  • Sable 2.0.3
  • Create Aeronautics 1.3.0
  • Create Big Cannons 5.11.7
  • Ritchie's Projectile Library 2.1.2
  • MineColonies 1.1.1367 snapshot
  • Stylecolonies 1.15.56

Do not add ServerCore, C2ME, Moonrise, Lithium, shaders, or voice chat until the base pack has been tested. Several have open Sable compatibility or networking issues.

Paxi loads a pack-owned Dungeons and Taverns 4.4.4 override in dedicated servers and client singleplayer. It restores the quest-trader trade reward and intentionally disables the broken wandering-trader map trigger.

Gameplay

  • Create Aeronautics and Sable provide walkable, block-built physics ships.
  • Create Big Cannons provides ship-mounted artillery with Sable integration.
  • Treasures of the Dead adds pirate NPCs, captains, merchants, camps, forts, treasure hunts, equipment, and explosives.
  • Illager War Trireme, Dungeons and Taverns, and Tectonic create maritime destinations in a continent-and-island world.
  • Better Combat, Lootr, Farmer's Delight, and Ocean's Delight support boarding, shared exploration, and ship provisions.
  • MineColonies lets players found normal colonies wherever they choose for storage, recruitment, provisions, resource production, and defense. Multiple players can share one colony through built-in MineColonies permissions.
  • JEI, Jade, Xaero's maps, Controlling, and Mouse Tweaks are client-only tools.
  • Chunky and spark are server-only operational tools.

Documentation

Pirate cove

Players found colonies normally wherever they choose; the pack does not assign or spawn colony sites. For a pirate cove, use Stylecolonies' Tropical style for the settlement, selected Ancient Athens buildings for the harbor, and the built-in Original style's pirate-ship decorations. Keep the town hall, warehouse, residences, workers, racks, and other colony blocks on ordinary overworld terrain.

Do not assemble MineColonies buildings or storage into Sable sublevels. MineColonies registration, claims, and citizen paths use fixed world positions; moving those blocks can disable buildings, duplicate inventories, or crash pathfinding. Physics ships should dock next to the cove without becoming part of the colony.

Packwiz

Pack metadata is rooted at pack.toml. After changing files, refresh hashes:

packwiz refresh

/docs/ is excluded by .packwizignore. Documentation must remain absent from index.toml and the hostable Packwiz site.

Developers can serve the Packwiz metadata while editing with:

packwiz serve

This development command is not the end-user installation path and the pack does not use Packwiz Installer Bootstrap or a launcher custom command.

Update every unpinned mod, refresh Packwiz metadata, recalculate the Nix pack hash, and validate the flake with:

nix run .#update-mods

Renovate runs this app during its weekly Nix lock-file maintenance and includes the resulting mod metadata in one dependency PR. Packwiz entries with pin = true are deliberately excluded from automatic updates because they belong to compatibility-tested groups.

Prism Launcher

Build the launcher-native private-beta artifact with:

nix build .#prism

The result contains Piratecraft-0.2.0-beta.1.mrpack. A recipient can also use the same .mrpack downloaded from a private beta handoff. In Prism Launcher, select Add Instance, select Import, choose the local .mrpack, and launch the imported instance with Java 21. Prism reads the archive's native Modrinth manifest, installs Minecraft 1.21.1 and NeoForge 21.1.228, downloads the client-supported manifest files, and copies the four static Paxi overrides. No Packwiz bootstrap, hosted Packwiz site, or custom command is required.

The .mrpack redistributes no third-party JARs. At import time Prism downloads seven MineColonies-family mods from their official CurseForge CDN URLs and the other mods from their manifest URLs. The seven entries retain CurseForge updater metadata in Packwiz. This is a private/local Prism import artifact, not a Modrinth publication artifact: Modrinth publication rejects its external CurseForge URLs.

Nix flake

The flake exports these packages for x86_64-linux:

  • packages.<system>.default and packages.<system>.modpack are the same downloaded server output containing 29 mod JARs and four static override files.
  • packages.<system>.client-modpack resolves all 35 client-compatible mod JARs and the same four override files without credentials. It is an artifact result, not a launcher, and does not graphically start Minecraft.
  • packages.<system>.prism and packages.<system>.mrpack are aliases for the fixed-output Piratecraft-0.2.0-beta.1.mrpack distribution that Prism imports natively. The build exports from a writable source copy and validates all 37 manifest downloads, all Packwiz entries, the four static overrides, and the absence of embedded JARs.
  • packages.<system>.packwiz-site is a JAR-free, hostable metadata tree with pack.toml, index.toml, all 37 Packwiz metafiles, and all four indexed override files.
  • packages.<system>.update-mods and apps.<system>.update-mods expose the update utility.

The checks are exactly checks.<system>.client, checks.<system>.module, checks.<system>.prism, and checks.<system>.server. The prism check is an ordinary source-dependent derivation that validates the current Packwiz source against the fixed-output archive, so a cached stale export cannot pass it. The flake also exports a formatter and two NixOS modules:

  • nixosModules.default imports nix-minecraft and configures Piratecraft. Use this when the host does not import nix-minecraft elsewhere.
  • nixosModules.piratecraft only configures the server. Use this alongside an existing nix-minecraft module import.

Use the native .mrpack import described above and Java 21 for clients.

All server policy uses lib.mkDefault. Normal definitions in the consuming configuration therefore override the supplied port, whitelist mode, JVM memory, MOTD, player limit, package, and other defaults.

Piratecraft does not accept Mojang's EULA. The consuming NixOS configuration must set services.minecraft-servers.eula = true after its operator has agreed to the EULA, or nix-minecraft's EULA assertion will reject the system. When Piratecraft is composed in nixlab, nixlab's existing base Minecraft module is the consumer-level EULA acceptance; Piratecraft itself still does not set it.

online-mode is supplied as an overridable lib.mkDefault, not a mandatory setting. Vanilla and other direct deployments should normally leave it true.

Standalone use:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    piratecraft = {
      url = "path:/path/to/piratecraft";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = inputs: {
    nixosConfigurations.server = inputs.nixpkgs.lib.nixosSystem {
      modules = [
        inputs.piratecraft.nixosModules.default
        {services.minecraft-servers.eula = true;}
        ./configuration.nix
      ];
    };
  };
}

Composition with an existing nix-minecraft configuration:

{
  imports = [inputs.piratecraft.nixosModules.piratecraft];

  services.minecraft-servers.servers.piratecraft = {
    jvmOpts = ["-Xms8G" "-Xmx16G"];
    serverProperties = {
      server-port = 25570;
      white-list = true;
    };
    whitelist.PlayerName = "00000000-0000-0000-0000-000000000000";
  };
}

The Sable UDP firewall rule reads the final merged server-port, so overriding the port also moves both the TCP and UDP listeners. Set the server's openFirewall option to false to manage both protocols elsewhere.

Sable attempts to use UDP on the same numerical port as the Minecraft TCP server. Open both TCP and UDP for that port. Its TCP-only fallback has worse latency and should be tested deliberately rather than assumed to work through a TCP-only proxy.

Use Java 21 for clients; the NixOS module supplies the server runtime. Keep versioned world backups, including Sable's sublevel data. Before production, complete every objective item in the handoff playtest checklist, including its multiplayer soak and separate-root backup restoration gates.