.onedev-buildspec.yml Loading last commit info...
.github
.vscode
docs
internal
.gitignore
.golandci.yml
.goreleaser.yaml
LICENSE
README.md
TODO.md
go.mod
go.sum
main.go
README.md

GoMCTools

Go Badge


GoMCTools is a terminal-based utility (TUI) designed to streamline the workflow for Minecraft modpack developers. Built for Prism Launcher and CurseForge instances, it automates tedious tasks like generating modlists, managing pack configurations, and preparing releases.

Features

๏ฟฝ Dashboard

  • Quick overview of the loaded pack.
  • Displays pack metadata: Author, Version, Minecraft Version, and Loader.
  • Mod Analytics: Breakdown of mod sources (Modrinth vs CurseForge) with a visual distribution bar.
  • Tracks total mod counts and identifies "Unknown" sources.

๏ฟฝ๐Ÿ“ฆ Instance Selector

  • Browse and load Prism Launcher and CurseForge instances directly from the terminal.
  • Auto-detects the pack format โ€” no configuration required:
    • Prism: reads mmc-pack.json and the .index TOML mod entries.
    • CurseForge: streams minecraftinstance.json (handles 15MB+ files efficiently) or falls back to manifest.json.
  • Extracts mod metadata including loader, MC version, release type, and download URLs.
  • Remembers your last loaded pack for quick access on startup.
  • Opt-in directory browser with a focus-aware border โ€” arrow keys are never stolen from the tab-bar until you activate it.

๐Ÿ“ Modlist Generator

Create professional Markdown modlists for your documentation or GitHub releases.

  • Live Preview: See how your modlist looks directly in the terminal (rendered with Glamour).
  • Flexible Layouts:
    • Merged: A single alphabetical list of all mods.
    • Split: Separate sections for Client-side, Server-side, and Shared mods.
  • Multiple Formats: Export as Markdown Bullets, GFM Tables, or BBCode for forums.
  • Customizable Metadata: Toggle links, side tags, source, game versions, and filenames.
  • Smart Sorting: Sort by Name, Source, or Side with toggleable ascending/descending order.
  • Export: Copy markdown to clipboard or save to modlist.md in the instance folder.
  • Raw Preview: Toggle between rendered Glamour output and the raw source text.

๐Ÿงน Pack Cleaner

  • Keep your instance clean by selectively removing generated files and folders (logs, cache, etc.).
  • Presets: Comes with sensible defaults for common Minecraft bloat.
  • Custom Rules: Add, edit, or delete your own custom cleaning patterns via the TUI.
  • Safety First: Refuses to delete files outside the instance root.
  • Persistence: Saves custom rules to gomctools.cleaner.json within the instance for portability.

โš™๏ธ Configurable

  • Persistent settings via ~/.config/gomctools/config.toml.
  • Toggleable auto-load behavior.
  • Confirmation modals for destructive actions (like resetting settings).
  • Full keyboard and mouse support.

Screenshots

Home

Home Main entry point with quick-start controls.

Selector

Selector No Pack Selector Pack Instance discovery and directory browsing.

Dashboard

Dashboard No Pack Dashboard Pack Dashboard Multi-Source Pack Pack metadata and mod distribution analytics.

Modlist Generator

Modlist No Pack Modlist Pack Dynamic preview and configuration for documentation.

Pack Cleaner

Pack Cleaner Managing custom cleaning presets and execution.

Installation

From Source

Ensure you have Go 1.21+ installed.

go install github.com/ItzDabbzz/GoMCTools@latest

Or manually:

git clone https://github.com/ItzDabbzz/GoMCTools.git && cd GoMCTools
go build -o gomctools .
./gomctools

Usage

Global Controls

KeyAction
Tab / Shift+TabNext / Previous page
?Toggle help overlay
q / Ctrl+CQuit

Selector Page

KeyContextAction
EnterText input focusedLoad pack from typed path
F / TabBrowser not focusedActivate the directory browser
โ†‘ / โ†“Browser focusedNavigate files/directories
l / โ†’Browser focusedOpen / descend into directory
EnterBrowser focusedLoad the current directory as pack
EscBrowser focusedExit browser, return arrow keys to tab-bar
?AnywhereToggle help overlay
q / Ctrl+CAnywhereQuit

Modlist Generator

KeyAction
1Switch to Merged layout
2Switch to Split by Side layout
aToggle Links (Modrinth/CurseForge/URL)
iToggle Side tags (Client/Server)
oToggle Source tags
cCopy Markdown to clipboard
eExport to modlist.md

Supported Pack Formats

FormatDetection FileMod Metadata
Prism Launchermmc-pack.jsonFull โ€” name, side, loader, source, hashes
CurseForge (full)minecraftinstance.jsonFull โ€” name, release type, game versions, download URL
CurseForge (export)manifest.jsonPartial โ€” project/file IDs only, no mod names

CurseForge's manifest.json-only mode is a fallback for exported zips that haven't been opened in the CurseForge app. Mod names will display as Project <ID> until a full instance file is available.

Configuration

GoMCTools manages persistent settings via a TOML configuration file.

Important

Manual edits to config.toml should only be made while the application is closed. The program persists its current internal state to disk upon exit, which will overwrite any changes made while the app is running.

Location: ~/.config/gomctools/config.toml

Config Breakdown

Global Settings

KeyTypeDefaultDescription
auto_load_previous_statebooltrueAutomatically reloads the last used pack on startup.

[selector]

KeyTypeDescription
last_pathstringThe absolute path to the last loaded Minecraft instance.

[modlist]

KeyTypeDefaultDescription
modeint00: Merged, 1: Split (Client/Server).
output_formatint00: Markdown Bullets, 1: GFM Table, 2: BBCode.
sort_fieldint00: Name, 1: Source, 2: Side.
sort_ascbooltruetrue: Ascending, false: Descending.
attach_linksbooltrueInclude Modrinth/CurseForge links.
include_sidebooltrueInclude Client/Server tags.
include_sourcebooltrueInclude the mod's source platform.
include_versionsboolfalseInclude compatible MC versions.
include_filenamesboolfalseInclude actual .jar filenames.
show_project_metaboolfalsePrepend pack name/author/version header.
raw_previewboolfalseShow raw source instead of rendered preview.

[cleaner]

The cleaner section allows you to define global custom presets.

Example:

[[cleaner.custom_presets]]
name = "BlueMap Web Folders"
pattern = "config/bluemap/web"
enabled = true

Credits & Libraries

Built with the Charm stack:

  • Bubble Tea - A powerful little TUI framework ๐Ÿ—
  • Bubbles - TUI Components for Bubble Tea ๐Ÿซง
  • Lipgloss - Style definitions for nice terminal layouts ๐Ÿ‘„
  • Glamour - Stylesheet-based markdown rendering for your CLI apps ๐Ÿ’‡๐Ÿปโ€โ™€๏ธ
  • Bubblezone - BubbleTea mouse event tracking utility

Cash App Badge

Created by ItzDabbzz (First go project, kinda nevrous ๐Ÿ‘‰๐Ÿ‘ˆ)

Also made on Arch Linux Badge

Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover