Skip to content

Resource Packs

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

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

Basics

  • Everything is under assets/hempdustry/. The mod's jar is a zip file: open it and copy what you want to replace from assets/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 from models/; the model names the textures. On 1.21.1 the model models/item/<id>.json is the start, with overrides. 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).

Items

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.

Blocks

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).

Crops

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.

The smoking gear's tint

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.

Per-strain art

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.

The bong

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.

The hemp outfit

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 from textures/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.

The Grow Lamp under shaders

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.

The banner pattern

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").

Paintings

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 and music

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.ogg is 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.png and music_disc_robadob.png, with their labels in the lang keys jukebox_song.hempdustry.moonlight and .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.

Everything else

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

Differences on Minecraft 26.2 and 26.3

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

Differences on Minecraft 1.21.1

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

Clone this wiki locally