Repository navigation
Resource Packs
Home › Servers & modpacks › Resource Packs
Where Hempdustry 2 keeps its art, models, block states and sounds, and the rules a replacement has to keep so it draws right. For resource pack artists. The paths are the same on Fabric and NeoForge; where Minecraft 26.2 and 26.3 or 1.21.1 differ, the last two sections say how.
On this page: Basics · Items · Blocks · Crops · The smoking gear's tint · Per-strain art · The bong · The hemp outfit · The Grow Lamp under shaders · The banner pattern · Paintings · Sounds and music · Everything else · Differences on Minecraft 26.2 and 26.3 · Differences on Minecraft 1.21.1
- Everything is under
assets/hempdustry/. The mod's jar is a zip file: open it and copy what you want to replace fromassets/hempdustry/, keeping the path. -
pack.mcmeta: on Minecraft 1.21.11 the resource pack format is 75 —{"pack": {"description": "…", "min_format": 75, "max_format": 75}}; on 1.21.1 it is 34 —{"pack": {"description": "…", "pack_format": 34}}; on 26.2 it is 88 and on 26.3 97, written as on 1.21.11. -
On 1.21.11 an item's look starts at its item definition,
items/<id>.json, which picks a model frommodels/; the model names the textures. On 1.21.1 the modelmodels/item/<id>.jsonis the start, withoverrides. Replacing a texture works the same on both. - Paths are a promise. A model, texture, block state or sound file keeps its name from one release to the next, so a pack keeps working (Stability Promise). What is free to change is the pixels.
-
Text is in
lang/<locale>.json— twelve locales; a pack's lang file overrides the mod's line by line (Translating).
Almost every item is drawn from textures/item/<id>.png (16×16), where <id> is the item's id without hempdustry: (indica_buds, hemp_fiber, wooden_pipe). The exceptions:
| Item | Drawn from |
|---|---|
| Spliff | No spliff.png: Purple Kush's, Lemon Haze's and Beldía's are item/indica_spliff, item/sativa_spliff, item/beldia_spliff; every other load uses the Purple Kush spliff with a tinted tip, item/spliff_load (Per-strain art). |
| Loaded Wooden Pipe, Bongs, Redstone Vaporizer | the empty device's texture, plus a mask of the load: item/packed_pipe_load, item/packed_bong_load (every glass), item/packed_vaporizer_load
|
| Moon Rock |
item/moon_rock, plus item/moon_rock_load for the coat |
| Hemp Shirt, Hemp Harem Pants | two layers, item/<id>_dyeable under item/<id> (The hemp outfit) |
| Hemp Beanie |
item/hemp_beanie; worn, item/hemp_beanie_worn
|
| Wild Purple Kush, Wild Lemon Haze | their block textures, block/indica_flower and block/sativa_flower_bottom
|
| The bongs in hand | the 3D model (The bong); in the inventory, item/<id>
|
| Block items (machines, building blocks, bars…) | their block model, sometimes with a display of their own so they read at slot size |
The crops have no item of their own: their item is their seeds.
Block textures are textures/block/…, models models/block/…, block states blockstates/<id>.json. Some models borrow vanilla's textures, so a vanilla texture pack shows through on them:
| Block | Its own textures | Vanilla's it uses |
|---|---|---|
| Decarboxylator |
decarboxylator_front, _front_on (lit), _top; sides hemp_bricks_block
|
— |
| Infuser |
infuser_front, _side, _top, _inner, _spout, _milk, _butter; base hempcrete_block
|
— |
| Sifting Box |
sifting_box_top, _side, _screen, _kief, _water, _bubble; base hemp_planks
|
— |
| Hemp Press |
hemp_press_beam, _iron, _parchment, _plate, _plate_hot; base hemp_bricks_block. The platen and screw that move are models/block/hemp_press_platen.json and hemp_press_screw.json, drawn by the block's renderer. |
— |
| Grow Pot |
grow_pot_compost_1 to _3 (the crumbs of feed); sides hemp_bricks_block
|
farmland, farmland_moist (watered) |
| Hydro Tray |
hydro_tray_front, _side, _bottom, _lid, _lid_side, _pot, _medium, _pump, _tube, _nozzle, _water, _solution, _led, _led_on
|
— |
| Grow Lamp |
grow_lamp_top, _side, _side_on, _bottom, _bottom_on, and their _s maps (below) |
copper_chain (1.21.11) |
| Hashish Bar, Filtered Hashish Bar |
<id>_top, <id>_side; one model per cut, <id>_0 to _4
|
— |
| Charas Ball | charas_ball |
— |
| Space Cake |
space_cake_top, _side, _bottom, _inner
|
— |
| Building sets |
hemp_planks, hemp_parquet, hemp_bricks_block, hempcrete_block, hempcrete_powder_block, hemp_wool, hemp_leaves, hemp_bale, hemp_bale_top, hemp_planks_door_top, _bottom, hemp_planks_trapdoor
|
— |
The bong is its own section (below), the bed, boats and signs are entity textures (Everything else).
condition and the stressed art: new in 2.1.
The three crops' block states are multipart (blockstates/indica_crop.json, sativa_crop.json, beldia_crop.json). Each crop block has these properties:
| Property | Values | On |
|---|---|---|
age |
0–7 (7 is ripe; 4–7 are the flowering stages) |
all three |
half |
lower, upper
|
Purple Kush and Beldía (two blocks tall) |
segment |
lower, middle, upper
|
Lemon Haze (three blocks tall) |
condition |
natural, ambient, lamp, grow_lamp, stressed
|
all three: how the plant grew (Indoor Growing) |
trimmed_early, trimmed_late
|
true, false
|
all three |
rubbed |
true, false
|
all three (rubbed for charas) |
mildew |
clean, mildewed, sulfured
|
all three, Minecraft 26.2 and 26.3 only (powdery mildew) |
The shipped block states key on age, half or segment, and condition — stressed or not — only (and on 26.2 and 26.3 on mildew too). A pack may key on any property above (a rubbed plant, a lamp-grown one), but in a multipart file every possible state must match at least one part, or that plant draws nothing. A pack that replaced a whole crop block state file for 2.0 still works; it simply shows no stressed art.
Purple Kush and Beldía, textures/block/indica_crop_stage<N>.png and beldia_crop_stage<N>.png:
age |
lower block | upper block |
|---|---|---|
| 0–3 |
stage0 – stage3
|
stage8 |
| 4 | stage4 |
stage8 |
| 5 | stage5 |
stage9 |
| 6 | stage6 |
stage10 |
| 7 | stage7 |
stage11 |
Lemon Haze, textures/block/sativa_crop_stage<N>[_bottom|_middle|_top].png:
age |
lower | middle | upper |
|---|---|---|---|
| 0–3 |
stage0 – stage3
|
stage6_middle |
stage4_top |
| 4 | stage4_bottom |
stage6_middle |
stage4_top |
| 5 | stage5_bottom |
stage6_middle |
stage5_top |
| 6 | stage6_bottom |
stage6_middle |
stage6_top |
| 7 | stage7_bottom |
stage7_middle |
stage7_top |
Stressed plants (condition=stressed) draw from the same names with _stressed added, at ages 4–7, for every block of the plant: indica_crop_stage4_stressed … stage11_stressed, the same for Beldía, and sativa_crop_stage4_bottom_stressed … stage7_top_stressed for Lemon Haze — 26 textures in all, each with its model of the same name in models/block/.
The models. Every stage model has the parent hempdustry:block/tinted_crop, a cross of two planes that starts one pixel below the block (so the plant sits in farmland, as vanilla's crops do) and passes #cross with tint index 0. That tint pulls the plant part-way towards the biome's grass colour (the player's biomeTintStrength setting, 0.35 by default; Configuration); Beldía takes no biome colour; and a plant whose condition is ambient, lamp or grow_lamp (grown under artificial light) is a shade deeper green. Draw the textures in their real colours: the tint only nudges them. The wild plants (block/indica_flower, block/sativa_flower_bottom, _top, and the potted potted_indica_flower, potted_sativa_flower models) are tinted the same way. Wild Beldía is its own ripe crop.
Every Wooden Pipe, Bong, Redstone Vaporizer, Moon Rock and the shared spliff are drawn in two layers:
-
layer0— the object as drawn. Never tinted. -
layer1— a mask covering only the load (the bowl's contents, the coat, the spliff's tip), multiplied by the loaded strain's colour. Paint it near-white where the colour should show at full strength: a multiply can only darken, so grey comes out a darker shade of the strain, and nothing comes out brighter than the strain's colour.
Keep that split when you redraw. Swap the layers and the whole device takes the strain's colour.
On 1.21.11 the colour comes from the model's tints list in the item definition — position 0 is {"type": "minecraft:constant", "value": -1} (no tint), position 1 is {"type": "hempdustry:strain", "default": 16777215}, the loaded strain's colour, or default (white, "as drawn") when nothing is loaded. A device's definition switches between empty and loaded with minecraft:condition on minecraft:has_component for hempdustry:smoke_contents:
{
"model": {
"type": "minecraft:condition",
"component": "hempdustry:smoke_contents",
"on_false": {
"type": "minecraft:model",
"model": "hempdustry:item/wooden_pipe"
},
"on_true": {
"type": "minecraft:model",
"model": "hempdustry:item/packed_pipe",
"tints": [
{
"type": "minecraft:constant",
"value": -1
},
{
"type": "hempdustry:strain",
"default": 16777215
}
]
},
"property": "minecraft:has_component"
}
}That is items/wooden_pipe.json; models/item/packed_pipe.json is layer0 item/wooden_pipe and layer1 item/packed_pipe_load.
A bong standing on a table is drawn with its load on tint index 1 too, but in one fixed dried-bud green: a placed block cannot see which strain is in it.
Only the Spliff has art per strain. On 1.21.11, items/spliff.json is a minecraft:range_dispatch on the property hempdustry:strain — the loaded strain's model_index:
threshold |
Model | Texture |
|---|---|---|
1.0 |
item/spliff_indica |
item/indica_spliff |
2.0 |
item/spliff_sativa |
item/sativa_spliff |
3.0 |
item/spliff_tinted |
item/indica_spliff + the tinted item/spliff_load
|
7.0 |
item/spliff_beldia |
item/beldia_spliff |
8.0 |
item/spliff_tinted |
item/indica_spliff + the tinted item/spliff_load
|
fallback (0, or anything below 1) |
item/spliff_tinted |
item/indica_spliff + the tinted item/spliff_load
|
A range dispatch picks the highest threshold at or below the value, so the entries at 3 and 8 are there to send every index with no art of its own back to the tinted spliff: 3–6 and 8 and above draw like 0. Strains a datapack adds use 0 and get the fallback.
To draw a spliff for another strain — a mod's, at model_index 100 or more (1–99 belong to Hempdustry): add the texture and a model, and add an entry at that threshold to your copy of items/spliff.json, keeping the mod's five, plus one just above yours back to item/spliff_tinted (as the mod does at 3 and 8), or every higher index wears your art too. Every number below 100 is the mod's to use.
Per-strain art for a loaded device works the same way: the property answers on every smoking item, so a pack can replace on_true in a device's definition with a range dispatch on hempdustry:strain, keeping the tinted model as the fallback. The mod ships none.
Glass bongs: new in 2.1.
Eighteen bongs: bong (clear glass), tinted_bong and <colour>_bong for the sixteen dye colours (white_bong, light_gray_bong, … pink_bong). Each has two textures:
| Texture | Used for |
|---|---|
textures/item/<id>.png |
the flat icon: in the inventory, on the ground, in a frame and on a shelf; loaded, with item/packed_bong_load over it |
textures/block/<id>.png |
the 3D bong: standing on a table, in the hand and on the head |
The 3D shape is one hand-written model, models/block/bong_template.json. Every glass's block model is that template with #bong set to its own sheet. Edit the template and every bong changes. Its bowl uses vanilla's block/iron_block (#metal). The loaded and mid-draw variants — models/item/bong_template_packed.json and bong_template_draw_1 to _3 (the chamber filling with smoke) — are the template plus elements, made from it; if you change the shape, change them to match. In the loaded ones, the load in the bowl is vanilla's white wool on tint index 1, and the smoke filling the chamber in the mid-draw ones is vanilla's white stained glass.
The block sheet is 16×16, and the template reads these regions (x × y, in pixels):
| Region | Pixels | What |
|---|---|---|
| A | 0–5 × 0–4 | chamber sides (6×5) |
| B | 0–5 × 5–10 | chamber top and bottom (6×6) |
| C | 6–8 × 0–8 | neck sides (3×9) |
| D | 9–12 × 0 | lip sides (4×1) |
| E | 9–12 × 1–4 | lip top, the open mouth |
| F | 9–13 × 5 | downstem (5×1) |
| W | 0–4 × 11–15 | the water |
The mod's sheets are drawn the way vanilla draws stained glass: a denser border around a thin fill, one colour at a few alphas.
On 1.21.11, items/<id>.json picks the flat model for the gui, ground, fixed and on_shelf display contexts and the 3D one everywhere else; while the bong is being drawn, it steps through item/packed_<id>_drawing_1 to _3 by how far the draw has got. A standing bong's block state has facing and packed.
Two-layer outfit and the worn beanie and flip-flops: new in 2.1.
The Hemp Shirt and Hemp Harem Pants are dyeable in two layers, the way leather is:
| Takes the dye (grey) | Drawn as it is, on top | |
|---|---|---|
| Item |
textures/item/<id>_dyeable.png (layer0) |
textures/item/<id>.png (layer1) |
| Worn, shirt | textures/entity/equipment/humanoid/hemp_fiber_dyeable.png |
…/humanoid/hemp_fiber.png |
| Worn, pants | textures/entity/equipment/humanoid_leggings/hemp_fiber_dyeable.png |
…/humanoid_leggings/hemp_fiber.png |
Undyed, the grey layer is tinted unbleached hemp (#FFDFB7). The worn layers are declared in equipment/hemp_fiber.json. The two worn sheets are 64×32, vanilla's armour layout. A pack that drew the outfit before 2.1 into the non-_dyeable files still works: its art shows, undyed. Trims on the shirt and pants use vanilla's trim textures as a third item layer.
The worn beanie and flip-flops have art of their own and are no longer drawn from the armour sheets — their areas of humanoid/hemp_fiber.png are unused:
- The Hemp Beanie, worn, is a slouchy tam drawn as a head item:
models/item/hemp_beanie_worn.json, textured fromtextures/item/hemp_beanie_worn.png(16×16; the model's UVs map the crown and band onto it). - The Flip Flops, worn, are
textures/entity/equipment/flip_flops.png, 32×16, laid out as box UV for the mod's own small model.
Neither takes a trim.
New in 2.1.
The lamp ships LabPBR specular maps beside its textures, which shader packs set to read resource-pack PBR pick up by name:
grow_lamp_top_s.png, grow_lamp_side_s.png, grow_lamp_side_on_s.png, grow_lamp_bottom_s.png, grow_lamp_bottom_on_s.png
They mark the copper housing as copper metal and the lamp face as a non-metal, and the lit maps carry emission in the alpha channel (200–254 across the face; 255 means none), so in a shader pack's LabPBR mode the lit face glows violet. A pack redrawing the lamp should redraw these to match, since a shader pack keeps reading the mod's maps beside your new textures. Coloured light is a shader pack's own business; no texture can give it.
New in 2.1.
The cannabis leaf pattern (hempdustry:hemp_leaf, put on a banner with a Hemp Leaf in a loom) has two textures, both required — a missing shield texture is the magenta "missing" pattern on any shield:
| File | Canvas | What shows |
|---|---|---|
textures/entity/banner/hemp_leaf.png |
64×64 | the banner's net, front and back, as vanilla's pattern textures are laid out |
textures/entity/shield/hemp_leaf.png |
64×64 | the shield's front window, 10×20 at x 2–11, y 2–21 |
Two things vanilla's own patterns do that a redraw should copy: no row of the motif may span the whole face (it draws as a bar across the banner), and soft edges are at alpha 191 with the body at 255. The names are sixteen lang keys, block.hempdustry.banner.hemp_leaf.<colour> ("Red Cannabis Leaf").
Seven paintings, each textures/painting/<id>.png at 16 pixels per block (a pack may draw them larger, as with vanilla's):
| Id | Size (blocks) | Texture |
|---|---|---|
b_rappaz |
4×4 | 64×64 |
brownie_mary |
4×4 | 64×64 |
hendrix |
2×2 | 32×32 |
marley |
2×2 | 32×32 |
pineapple_express |
2×3 | 32×48 |
snoop |
3×3 | 48×48 |
rihanna |
1×2 | 16×32 |
Titles and authors are the lang keys painting.hempdustry.<id>.title and .author.
sounds.json defines six sound events; the files are in sounds/:
| Sound event | File | Subtitle key |
|---|---|---|
hempdustry:smoking |
sounds/smoking.ogg |
subtitles.hempdustry.smoking |
hempdustry:bonghit |
sounds/bonghit.ogg |
subtitles.hempdustry.bonghit |
hempdustry:coughing |
sounds/coughing.ogg |
subtitles.hempdustry.coughing |
hempdustry:infuser_simmer |
sounds/butter.ogg |
subtitles.hempdustry.infuser_simmer |
hempdustry:music_disc.moonlight |
sounds/records/moonlight.ogg (streamed) |
— |
hempdustry:music_disc.robadob |
sounds/records/robadob.ogg (streamed) |
— |
- Every sound is mono, and a replacement must be too. Minecraft plays a stereo sound with no position, at full volume, to everyone in earshot — a stereo cough would sound inside every nearby player's head.
-
butter.oggis a loop: it repeats while an Infuser simmers, so a replacement should loop cleanly. - The bong's bubbling (
bonghit) starts with the draw and the inhale (smoking) follows it. -
The two music discs, Music Disc "Nefuß - Moonlight" and "Nefuß - Robadob", are
textures/item/music_disc_moonlight.pngandmusic_disc_robadob.png, with their labels in the lang keysjukebox_song.hempdustry.moonlightand.robadob. The jukebox stops a song after its length in the data — 170 s and 257 s — so a longer replacement is cut off there.
| What | File | Notes |
|---|---|---|
| Ripe-plant wisps |
particles/aroma.json → textures/particle/aroma_0.png … aroma_3.png (8×8) |
the frames play in order over a wisp's life; a pack may list more |
| Decarboxylator, Infuser, Hemp Press screens |
textures/gui/container/decarboxylator.png, infuser.png, hemp_press.png (256×256) |
the arrows, flames and bars are drawn from regions of the same sheet: keep them where they are |
| Hemp Bed |
textures/entity/bed/hemp.png (64×64, vanilla's bed layout) |
the bed has no block model: it is drawn like vanilla's beds |
| Hemp boats |
textures/entity/boat/hemp.png, textures/entity/chest_boat/hemp.png (vanilla's layouts) |
|
| Hemp signs |
textures/entity/signs/hemp.png, textures/entity/signs/hanging/hemp.png, textures/gui/hanging_signs/hemp.png; items item/hemp_planks_sign, item/hemp_planks_hanging_sign
|
|
| Hemp carpet on a llama |
textures/entity/equipment/llama_body/hemp.png (128×64), declared in equipment/hemp_carpet.json
|
|
| Hemp Harness on a happy ghast |
textures/entity/equipment/happy_ghast_body/hemp_harness.png (128×128), equipment/hemp_harness.json; item item/hemp_harness
|
Not on Minecraft 1.21.1. |
| Hemp Shelf |
textures/block/hemp_planks_shelf.png (32×32, vanilla's shelf layout) |
Not on Minecraft 1.21.1. |
| The mod's icon | assets/hempdustry/icon.png |
shown in the loader's mod list |
Items are drawn as on 1.21.11, so everything above holds. Minecraft 26.x draws beds and signs differently, and a few files exist only there:
| Minecraft 1.21.11 | Minecraft 26.x | |
|---|---|---|
| Resource pack format | 75 | 88 on 26.2, 97 on 26.3 |
| Hemp Bed |
textures/entity/bed/hemp.png, drawn by a block entity |
block models models/block/hemp_bed_head.json and _foot.json (parents minecraft:block/template_bed_head and _foot), with seven face textures textures/block/hemp_bed_{head,foot}_<face>.png
|
| Signs |
textures/entity/signs/hemp.png and hanging/hemp.png
|
the same, plus the block textures textures/block/hemp_planks_sign.png and hemp_planks_hanging_sign.png (32×32) and the edit screen's textures/gui/signs/hemp.png
|
| Powdery mildew | — |
textures/block/<strain>_crop_stage<n>_mildew.png (white powder) and _sulfur.png (a sulfured plant), drawn over the crop by its block state |
| The outfit on babies | — |
textures/entity/equipment/humanoid_baby/hemp_fiber.png and hemp_fiber_dyeable.png
|
| An element that is not shaded |
"shade": false (26.2 too) |
on 26.3, "shade_direction_override": "up"; 26.3 skips shade without a word, and the face comes out a shade darker |
Minecraft changed how items are drawn between 1.21.1 and 1.21.11, so a pack written for one needs rework for the other. The textures and almost every path are the same; these differ:
| Minecraft 1.21.11 | Minecraft 1.21.1 | |
|---|---|---|
| Resource pack format | 75 (min_format/max_format) |
34 (pack_format) |
| How an item picks its model |
items/<id>.json item definitions |
overrides in models/item/<id>.json
|
| Empty or loaded device |
minecraft:condition on minecraft:has_component
|
item property hempdustry:packed (0 or 1) |
| Per-strain art |
range_dispatch on hempdustry:strain
|
overrides on hempdustry:strain, listed in ascending order (they match on ≥, last match wins) |
| The strain's colour | the hempdustry:strain tint source in the definition |
tinted by the mod on layer1 (tint index 1), with no tint while empty |
| Bong in hand |
items/<id>.json picks the 3D model by display context |
models/item/<id>_in_hand.json (parent block/<id>), with overrides on hempdustry:packed, hempdustry:drawing and hempdustry:draw
|
| Worn shirt and pants | textures/entity/equipment/humanoid{,_leggings}/hemp_fiber{,_dyeable}.png |
textures/models/armor/hemp_fiber_layer_1.png, _layer_2.png, hemp_fiber_dyeable_layer_1.png, _layer_2.png
|
| Worn beanie | models/item/hemp_beanie_worn.json |
models/item/hemp_beanie_worn_band.json and _crown.json (same texture) |
| Llama carpet | textures/entity/equipment/llama_body/hemp.png |
textures/entity/llama/decor/hemp.png |
| Grow Lamp chain | vanilla's copper_chain
|
textures/block/grow_lamp_chain.png and _s
|
| Hemp Shelf, Hemp Harness | yes | not in 1.21.1 |
The tint contract — layer0 as drawn, layer1 the load — is the same on both.
See also: Datapacks · Custom Strains · Translating · Stability Promise
Hempdustry 2 by Warlon Mhite · Documents version 2.1.0 · Code AGPL-3.0, art and music CC BY-NC-SA 4.0 · Discord · Report a bug Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.
Getting started
- Installation
- Getting Started
- FAQ
- Minecraft 26.2 and 26.3
- Minecraft 1.16.5 and GanjaCraft
- Minecraft 1.18.2 and Hemp-Craft
Growing
Smoking
Hash
Kitchen
Building
Reference
Servers & modpacks
- Server Guide
- Configuration
- Config builder ↗
- Commands
- Modpack Guide
- Tags
- Datapacks
- Custom Strains
- Resource Packs
Developers
Contributing
About