Skip to content

Contributing

Warlon Mhite edited this page Nov 8, 2026 · 3 revisions

Home › Contributing

Hempdustry is mostly one person's work, and help is welcome: a bug report, an idea, a fix, a texture or a translation. This page says how to send each one and what makes it easy to take.

On this page

Reporting a bug

Open an issue on GitHub, or post in the Discord, which the website calls "the easiest place to report a bug, suggest a feature, or tell me the Lemon Haze grow time is too slow". Either is fine.

Before you do, look at the known issues in the changelog and the FAQ: in 2.1.0, Russian still shows much of 2.1's text in English, and a hash spliff's name reads one level lower than the high it gives.

A report that can be acted on says:

What Where to find it
Minecraft version 26.3, 26.2, 1.21.11, 1.21.1, 1.18.2 or 1.16.5
Loader and its version Fabric Loader and Fabric API, NeoForge, or Forge, with their version numbers
Hempdustry version the jar's name says it, e.g. hempdustry-neoforge-2.1.0+1.21.11.jar
Everything else in your mods folder a list is enough; recipe viewers (JEI, REI, EMI) and shader packs count
The log logs/latest.log in your game folder, from the run where it happened (the game starts a new one each launch)
The crash report, if it crashed crash-reports/ in your game folder, the newest file
What you did, what you expected, what happened step by step, as short as it can be and still go wrong
Single player or a server and, on a server, whether the server has the same mods

Upload logs and crash reports to a paste site or a GitHub Gist and link them, rather than pasting thousands of lines into the issue. If you changed config/hempdustry.json or run datapacks that touch the mod, say so: a lot of what the mod does is data, and a pack can change it (see Configuration and Datapacks).

Tip: the best bug report is one the maintainer can reproduce in a fresh world. If yours only happens in one save, say so, and keep a copy of that save.

Suggesting an idea

Ideas are welcome. Gameplay design is the author's call, though, so start with a conversation, not a pull request: open an issue or a Discord thread describing what you would like and why, and expect a discussion before anything is built. A design change that arrives as finished code may be declined however good the code is.

What makes an idea land:

  • It feels like Mojang shipped it. The mod borrows vanilla's grammar wherever it can: a buff stops at II like a beacon, the Sifting Box is crafted and filled like a composter, the Grow Lamp switches on like a redstone lamp.
  • It is grounded in how hemp really works. The mechanics follow real practice: heat activates the plant, hash is resin sifted off it, rosin is pressed with heat and no solvent. If you know how the real thing is done, say so and link a source.
  • It respects the rules the mod already runs on, which are explained in Design Notes. An idea that breaks one needs to answer that rule's reasons first.
  • It is a sidegrade, not a ladder. A new item that is simply better than an old one makes the old one dead weight.

The Roadmap lists what is already planned, so check it before you suggest a Nether strain.

Sending code

Pull requests are welcome, for fixes especially. For anything bigger than a fix, talk first (above).

  1. Fork the repository on GitHub and make a branch for your change.
  2. Set up the build: Building from Source covers the JDK, the Gradle tasks, the project layout and where new code goes.
  3. Make the change, following the conventions below.
  4. Run the gates (python3 scripts/gates.py, explained in Building from Source) and fix what they find. The same gates run on every pull request in CI.
  5. Open the pull request, saying what it changes, why, and how you tested it in game. If it applies to one Minecraft version only, say which; the mod is built for 26.3, 26.2, 1.21.11 and 1.21.1, and on Forge for 1.18.2 and 1.16.5, from separate lines of the same repository.

The conventions, in plain words

  • Ids are lowercase ASCII. No capitals, spaces or accents in an id or a file name: they break Minecraft's identifiers. The accent in Beldía lives only in its display name; its id is beldia.
  • Every new item or block goes in the creative tab (ModItemGroups), and every new name goes in every locale file in common/src/main/resources/assets/hempdustry/lang/. Write the English ones yourself, minding the regional spellings (Translating has them); for languages you cannot write, say so in the pull request and a translator fills them in. That includes text outside the world (a chat line, a tooltip) and a name for every item tag outside the minecraft namespace.
  • Prefer data generation. Recipes, loot tables, tags, models, advancements and worldgen are written by the data generators, not by hand. Change the provider, run the data run, and commit what it writes. Building from Source explains which run to use.
  • Every recipe unlocks in the recipe book when the player picks up its ingredient, the way vanilla's do.
  • One subject per commit. A fix-up to your own commit belongs in that commit, not in a new "fix the previous commit" on top. Several unrelated changes are several pull requests.
  • Keep names in the house tone. Items and blocks are named plainly, the way vanilla names things (Hemp Press, Sifting Box), or by the trade's own word (Charas, Dawamesk). The jokes live in the advancement titles, and the descriptions under them state the act plainly, like vanilla's.
  • Heat activates; raw plant does nothing. No raw bud, leaf, stem, seed or wild flower may ever give a status effect. Every edible traces back to heat (the Decarboxylator, or a furnace's scorched hemp); smoking needs no machine because burning is the heat. A game test fails the build if a raw bud or seed becomes edible. Design Notes explains why.
  • No breaking changes. Every public release, betas included, keeps every id, block state value, advancement criterion, config key and addon API that the last one had, so worlds, datapacks, resource packs and addons keep working. A game test compares each build against what the releases shipped. Read the Stability Promise before renaming or removing anything.
  • Code that works the same on both loaders goes in common. The build refuses a Fabric or NeoForge import there. What a loader does its own way goes behind the platform interfaces, implemented on both loaders in the same change.

Art

The textures are 16×16 pixel art in vanilla's style. If you would like to draw for the mod:

  • Sample the mod's existing palette. Pick your colours from the textures already in common/src/main/resources/assets/hempdustry/textures/ rather than introducing new ones, so a new item sits beside the old ones without looking pasted in.
  • Crops have their own rule: a seedling gets small, simple cotyledon leaves; the mature stages get the many-bladed fan leaves cannabis is known for. The plant should read as hemp from across a field.
  • Show it in game. Post a screenshot of the texture in a running game (in the hand, in an inventory, placed in the world) along with the file. Pixel art that looks right in an image editor often doesn't at game scale.
  • Send only your own work. The mod's art is released under CC BY-NC-SA 4.0 (see About), so never send something traced or copied from another mod or pack. A handful of the current textures are recoloured from Minecraft's own and are being replaced with original art over time; CREDITS.md lists them, and they are a good place to start.

Resource pack authors who want to retexture the mod rather than contribute to it should read Resource Packs.

Translations

The mod ships in twelve locales, and Russian is catching up with 2.1. Translating lists each locale's status, where the files are and the house style, and says how to send your work.

What the mod will not take

Some things are settled, and a proposal for them will be declined, however well it is made:

  • Solvent extraction. No butane hash oil, no solvent "wax", no step that models it. This is the mod's choice, explained in Design Notes; rosin, pressed with heat, fills that tier.
  • Real-life instructions or medical claims. The mod describes a game. Nothing in it is meant as a guide to doing any of this in real life.
  • Effects from raw plant. No edible bud, no stew from the wild flowers.
  • Hash in the kitchen. Hash is for smoking only and never goes into the Decarboxylator or an edible.
  • "This strain relaxes you" text. The mod does not claim strains feel different in the folk sense (Design Notes).
  • Crops that die of neglect. Vanilla never kills a crop for being left alone, and neither does Hempdustry.
  • A colour ladder. Brown, blonde and black hash are three methods, not three grades.
  • Anything that breaks a world, a datapack or an addon on update.

See also: Building from Source · Translating · Design Notes · Stability Promise

Clone this wiki locally