🧩 CustomiZer — Complete Plugin Documentation
A single Minecraft plugin that handles resource packs, custom items, swords, armors, blocks, pickaxes, harvester hoes, GUI menus, and a full progression system — all from config files.
📦 Resource Pack
Auto-generates and serves your resource pack via HTTP. Supports packs folder, custom model data, 1.21.4+ items/ format.
🎁 Custom Items
17+ action types: heal, fly, commands, economy, job boosters, effects, god mode, and more.
⚔️ Rarity Swords
5-tier rarity system with unique textures per tier, lifesteal, elemental damage, and status effects.
🛡️ Custom Armors
Leather armors with custom colors, full armor set bonuses, and integrated resource pack support.
🧱 Custom Blocks
Note-block based custom blocks with break restrictions, drops, sounds, and particles.
⛏️ Custom Pickaxes
Leveling pickaxes with radius mining, vein mining, bonus drops, and hold effects.
🌾 Harvester Hoes
Multi-crop harvest hoes with economy rewards, Jobs XP, and auto-replant per level.
🏆 Progression
Mastery tracks, daily/weekly missions, prestige system, reforge station, and gem sockets.
📋 Requirements
| Dependency | Type | Purpose |
|---|---|---|
| Paper / Purpur 1.21+ | Required | Server platform |
| Vault | Soft | Economy (money rewards, reforge costs) |
| PlaceholderAPI | Soft | Custom placeholders in messages and lore |
| Jobs Reborn | Soft | XP from breaking custom and vanilla blocks |
| WorldGuard | Soft | Region-based XP/money multipliers |
| ModelEngine | Soft | Merges ModelEngine resource packs automatically |
| ItemsAdder | Soft | ItemsAdder block reward detection (optional) |
settings.yml. The plugin boots fine without any of them.⌨️ Commands & Permissions
| Command | Permission | Description |
|---|---|---|
/z | cxp.use | Main command — reload, get, give, list, gui, reforge |
/z reload | cxp.reload | Reloads all config files and rebuilds the resource pack |
/z get <type> <name> | cxp.use | Get a custom item, sword, armor, block, harvester, or pickaxe |
/z give <player> <type> <name> | cxp.give | Give a custom item to another player |
/z gui | cxp.gui | Opens the main category GUI |
/zrepair | cxp.repair | Repair all custom items in your inventory |
/zmastery [player] | cxp.mastery | View mastery track progress |
/zmissions | cxp.missions | Open the mission board |
/zprestige | cxp.prestige | Prestige when all mastery tracks reach level 100 |
/zreforge | cxp.reforge | Open the reforge station GUI |
/zsocket add [count] | cxp.socket.add | Add 1–4 socket slots to the held item |
/zsocket extract | cxp.socket | Remove and destroy the first socketed gem, freeing the slot |
/zsocket info | cxp.socket | Show socket count and socketed gems on the held item |
/z info <type> <name> | cxp.admin | Show model data, CMD, and metadata for any item, sword, armor, block, harvester, or pickaxe |
/zpack zip | cxp.admin | Rebuild the resource pack in memory and push it to all online players |
/zpack reloadpacks | cxp.admin | Rescan the packs/ folder, re-assign model data, then rebuild the pack |
/zpack fonts | cxp.admin | List every registered font image with its pack:id and Unicode codepoint |
/zpack font <pack> <id> | cxp.admin | Preview a font image in your action bar |
/zpack gui <packName> [namespace] | cxp.admin | Generate a GUI background pack from PNGs in gui_input/<packName>/ |
/zpack rank <packName> [namespace] | cxp.admin | Generate a rank badge / icon pack from PNGs in rank_input/<packName>/ |
/zpack item <packName> [namespace] [material] | cxp.admin | Generate a flat 2-D item pack from PNGs in item_input/<packName>/ |
/zpack block <packName> [namespace] [material] [sound] | cxp.admin | Generate a custom block pack from PNGs in block_input/<packName>/ |
/zpack armor <packName> [namespace] | cxp.admin | Generate an armor set pack from layer + icon PNGs in armor_input/<packName>/ |
📦 Resource Pack System
CustomiZer handles the entire resource pack pipeline automatically — no external hosting needed.
🌐 Built-in HTTP Server
On startup the plugin spins up a lightweight HTTP server on a configurable port (default 7270). The resource pack is served at http://<your-ip>:<port>/<hash>.zip. Players receive it automatically on join via the setResourcePack API.
🔄 Hot Reload Without Restart
Running /zpack zip or /z reload rebuilds the pack in memory and updates the live HTTP handler — the server never needs a restart. The new pack hash triggers a fresh download on the next player join.
📐 Dual Format Output
The pack is written in both formats simultaneously:
- Old format —
assets/minecraft/models/item/<material>.jsonwithoverrides[]— works on all versions including 1.21.8. - New format —
assets/minecraft/items/<material>.jsonwithrange_dispatch— required for 1.21.4+ priority rendering.
🗂️ Includes Folder
Place any extra resource pack inside plugins/CustomiZer/includes/ and it will be merged into the generated pack automatically on every build. Perfect for adding custom sounds, textures, or fonts from other tools.
resourcepack.modelengine: true is set in config.yml.material.isBlock() and uses the block/<name> parent automatically to avoid missing textures.🗂️ Pack Manager (packs/ folder)
Drop any pack folder into plugins/CustomiZer/packs/ and CustomiZer integrates it automatically. Packs ship their own configs and textures — no editing of core plugin files required.
📁 Pack Structure
Each pack folder contains a configs/ directory for YAML definitions and a resourcepack/ directory with textures, models, and fonts.
🔤 Namespace
Every pack declares its own namespace in the info.namespace field of each config file. All items, blocks, and assets are scoped to that namespace to avoid conflicts between packs.
🎨 Font Images
Packs can declare font images for GUI overlay textures. Scale, position, and horizontal offset are all configurable — and can be overridden globally in customfonts.yml.
🔗 Category Integration
Pack items appear in the in-game GUI under their category tab alongside configured items. Categories are defined in a configs/category.yml inside the pack.
📂 Complete Pack Folder Layout
This is the exact structure the plugin expects. Drop your pack folder into plugins/CustomiZer/packs/ and run /zpack reloadpacks then /zpack zip.
packs/
└── my_pack/
├── configs/
│ ├── my_items.yml ← items / blocks / font_images definitions
│ ├── category.yml ← optional: GUI category for this pack
│ └── subfolder/ ← configs can be nested in subdirectories
│ └── more_items.yml
│
└── resourcepack/
├── pack.mcmeta ← required Minecraft pack metadata
└── assets/
└── <namespace>/ ← must match info.namespace in your YMLs
├── models/
│ ├── item/ ← .json model files for items
│ └── block/ ← .json model files for blocks
└── textures/
├── item/ ← .png textures for items
├── block/ ← .png textures for blocks
└── custom/ ← textures for font images (any subpath)
info.namespace: gem_ranks, textures must be under assets/gem_ranks/textures/. A mismatch means textures silently fail to load.📄 pack.mcmeta (required)
Place this file at resourcepack/pack.mcmeta. Use pack_format: 34 for Minecraft 1.21+.
{
"pack": {
"pack_format": 34,
"description": "My Pack"
}
}
🔑 Registry — Auto-assigned IDs
The plugin automatically assigns Custom Model Data integers (starting at 30100) to every item and block and Unicode PUA codepoints (starting at U+EC00) to every font image. These assignments are persisted in packs/.registry.yml — they never change between restarts, so existing items in player inventories remain valid.
/zpack reloadpacks (rescans and re-assigns IDs) then /zpack zip (rebuilds and pushes the pack to players). /z reload does both in one command.🖼️ Font Images — GUI Overlays
CustomiZer supports custom GUI overlay images using Minecraft's bitmap font system. This lets you render full-texture images inside inventory titles — perfect for custom GUI backgrounds, rank badges, icons, and HUD overlays.
📂 Step 1 — Where to put the texture
Font textures are .png files placed inside the pack's resourcepack at:
resourcepack/assets/<namespace>/textures/<your-path>.png
The <your-path> value is whatever you write in the config's path: field (the .png extension is added automatically). Examples:
| path: value | Actual file location |
|---|---|
bronze_amethyst_i | resourcepack/assets/gem_ranks/textures/bronze_amethyst_i.png |
custom/30main_gui/gui1 | resourcepack/assets/iavegas/textures/custom/30main_gui/gui1.png |
ranks/gold_rank | resourcepack/assets/my_pack/textures/ranks/gold_rank.png |
/zpack fonts. Double-check the namespace folder matches info.namespace in your YAML.📄 Step 2 — Declare it in configs/
Create a YAML file anywhere inside configs/ (e.g. configs/my_fonts.yml). You can mix font images with items in the same file, or keep them separate.
info:
namespace: gem_ranks # must match assets/<namespace>/ folder
font_images:
ba_i: # unique ID for this font image
path: "bronze_amethyst_i" # path under textures/ (no .png)
scale_ratio: 12 # rendered height in pixels
y_position: 9.5 # ascent — distance from text baseline
permission: bronze_amethyst_i # optional: permission to display in GUI
show_in_gui: true # optional: show in font browser GUI
Full field reference:
| Field | Required | Description |
|---|---|---|
path | Yes | Path to the PNG relative to assets/<namespace>/textures/, without the .png extension |
scale_ratio | Yes | Rendered height in game-pixels. Set this to the texture's natural pixel height for a 1:1 render. For a 176px-wide GUI texture, 176 fills the inventory width exactly. |
y_position | Yes | Ascent (vertical offset). 14 aligns the image to the top of a standard inventory frame. Smaller values move the image down. |
permission | No | Permission node required to see this image in in-game GUIs |
show_in_gui | No | true to display this font image in the GUI browser. Default: false |
🔤 Step 3 — Apply the pack
After saving the files, run these two commands as admin:
/zpack reloadpacks— scans the pack and assigns a Unicode codepoint to each font image/zpack zip— rebuilds the resource pack and sends it to online players
You can verify registration with /zpack fonts (lists all font IDs + their Unicode codepoints) and preview any single image with /zpack font <pack> <id> (shows it in your action bar).
✏️ Global Overrides — customfonts.yml
Override any font image's scale, position, and horizontal shift from plugins/CustomiZer/customfonts.yml without touching the pack itself. Useful for fine-tuning third-party packs.
fonts:
gem_ranks: # pack folder name
ba_i: # font image ID
scale_ratio: 14
y_position: 10
x_position: -4 # horizontal pixel shift (not available in pack config)
🪄 Pack Generators — Make Packs Without Coding
CustomiZer includes built-in pack generators that create a complete, ready-to-use resource pack just from PNG images you drop into a folder. No JSON files, no YAML editing, no coding required. The plugin figures everything out from your image files and produces all the configs automatically.
1. Drop your PNG files into the correct input folder (see each section below).
2. Run the generator command in-game as an admin.
3. Run
/zpack reloadpacks then /zpack zip.Done — the pack is live and players receive it automatically.
🖼️ GUI Backgrounds
Full-width inventory overlay images. Auto-scales to fit the 176px inventory width.
🏅 Rank Badges
Small inline icons for chat, scoreboard, and lore. Rendered at natural pixel height.
🎁 Flat Items
One PNG = one item. Generates a flat 2-D item with full YAML config.
🧱 Custom Blocks
Auto-detects top/side texture splits. Generates 6-face block configs with REAL_NOTE placement.
🛡️ Armor Sets
Drop layer + icon PNGs per set. Generates armors_rendering + all armor piece items.
🖼️ GUI Background Generator — /zpack gui
Use this to create custom inventory background images — the large full-width textures that slide behind a chest or furnace GUI. Used by packs like iavegas.
📁 Step 1 — Put your PNG in the right folder
Create this folder if it doesn't exist, then drop your PNG inside:
plugins/CustomiZer/gui_input/<packName>/ └── my_gui.png ← your background image
- Replace
<packName>with any name you want, e.g.my_casino_gui. - You can put multiple PNGs in the folder — each becomes its own GUI image.
- The PNG should be the same width as a Minecraft inventory (176px wide at 1× scale, or any multiple of that).
⌨️ Step 2 — Run the command
/zpack gui <packName> /zpack gui <packName> <namespace> ← optional: custom namespace, defaults to packName
The plugin reads your PNG dimensions, auto-calculates the scale_ratio so the image fills the full 176px inventory width, and generates:
plugins/CustomiZer/packs/<packName>/— drop-in pack folder (ready for reloadpacks)plugins/CustomiZer/gui_output/<packName>.zip— portable ZIP to share or archive
✅ Step 3 — Apply and use
/zpack reloadpacks /zpack zip
To use the image as a GUI title background in gui.yml:
title: "<shift:-8><font_image:my_casino_gui:my_gui>"
Preview it instantly in-game: /zpack font <packName> <id>
<shift:-8> shifts the image 8 pixels left so it aligns with the left edge of the inventory frame. Adjust the number if your image looks off-center.🏅 Rank Badge Generator — /zpack rank
Use this to create small inline icons — rank badges, clan logos, status icons — that appear in chat, scoreboards, item lore, or inventory titles. Used by packs like gem_ranks.
📁 Step 1 — Put your PNGs in the right folder
plugins/CustomiZer/rank_input/<packName>/ ├── gold_rank.png ├── silver_rank.png └── bronze_rank.png
- Each PNG = one rank badge. The filename (without
.png) becomes the badge ID. - Make your images small — 12–20px tall works best for chat alignment.
⌨️ Step 2 — Run the command
/zpack rank <packName> /zpack rank <packName> <namespace> ← optional namespace
The generator uses the image's natural height as the scale_ratio (so a 12px-tall PNG renders at 12px), sets y_position: 9.5 to align with the chat baseline, and adds a permission field per badge.
✅ Step 3 — Apply and use
/zpack reloadpacks /zpack zip
Insert a badge anywhere that accepts MiniMessage tags (chat prefix, lore, title):
<font_image:my_ranks:gold_rank> PlayerName
Each badge also gets a permission node equal to its filename (e.g. gold_rank). Gate display in your chat plugin using that node.
🎁 Item Generator — /zpack item
Use this to create custom inventory items — ingots, raw materials, quest items, consumables, anything that looks like a flat 2-D sprite. Used for packs like ultimate_armors (ingots, raw ore).
📁 Step 1 — Put your PNGs in the right folder
plugins/CustomiZer/item_input/<packName>/ ├── blood_ingot.png ├── raw_blood.png └── solar_ingot.png
- Filename (without
.png) = item ID. Underscores become spaces in the display name (blood_ingot→Blood Ingot). - Use standard Minecraft item texture sizes: 16×16 or 32×32.
⌨️ Step 2 — Run the command
/zpack item <packName> /zpack item <packName> <namespace> <material> ↑ material defaults to PAPER — change to e.g. DIAMOND for a different base glow
✅ Step 3 — Apply and use
/zpack reloadpacks /zpack zip
Give items to players or yourself:
/z give <player> item blood_ingot /z get item solar_ingot
Open the generated config at packs/<packName>/configs/<packName>.yml to add lore, actions, crafting recipes, etc.
🧱 Block Generator — /zpack block
Use this to create custom placeable blocks that appear as solid cubes in the world. Used for packs like blossom_studios (decorative wood beams, stone tiles, etc.).
📁 Step 1 — Name your PNGs correctly
The generator auto-detects texture splits based on filename suffixes. You have two options per block:
| Files you provide | Result |
|---|---|
oak_beam.png only | Same texture on all 6 faces (full cube) |
oak_beam_top.png + oak_beam.png | Top & bottom = _top, four sides = bare name |
oak_beam_top.png + oak_beam_side.png | Top & bottom = _top, four sides = _side |
plugins/CustomiZer/block_input/<packName>/ ├── oak_beam.png ← sides (or all-faces if no _top exists) ├── oak_beam_top.png ← top & bottom ├── stone_tile.png ← all 6 faces identical (no _top provided) └── spruce_beam_top.png ← top/bottom for spruce_beam (sides use spruce_beam.png or spruce_beam_side.png)
⌨️ Step 2 — Run the command
/zpack block <packName> /zpack block <packName> <namespace> <material> <sound>
| Argument | Default | Options |
|---|---|---|
namespace | same as packName | any lowercase name |
material | PAPER | any Bukkit material (held item appearance) |
sound | stone | stone, wood, metal, dirt, sand |
✅ Step 3 — Apply and use
/zpack reloadpacks /zpack zip /z give <player> block oak_beam ← gives the item; right-click to place
Open packs/<packName>/configs/<packName>.yml to adjust hardness, sounds, and drops. To set what drops when mined, add an entry in blocks.yml:
blocks:
oak_beam:
pack_id: "<packName>:oak_beam"
display_name: "Oak Beam"
drops:
- item: OAK_LOG
amount: 1
chance: 100
🛡️ Armor Set Generator — /zpack armor
Use this to create a complete wearable armor set — helmet, chestplate, leggings, boots — with custom inventory icons and worn overlay textures. Used for packs like elitecreatures.
📁 Step 1 — Create one subfolder per armor set
plugins/CustomiZer/armor_input/<packName>/
└── my_armor_set/ ← one folder per set; folder name = set ID
├── layer_1.png ← REQUIRED — worn overlay: body, arms, feet
├── layer_2.png ← REQUIRED — worn overlay: leggings only
├── helmet.png ← optional inventory icon
├── chestplate.png ← optional inventory icon
├── leggings.png ← optional inventory icon
└── boots.png ← optional inventory icon
layer_1.pngandlayer_2.pngare the worn textures players see when the armor is equipped. Make them in Blockbench or any armor texture editor.- The icon PNGs are what shows in the inventory slot. Standard 16×16 or 32×32.
- You can have multiple set subfolders under one
<packName>— all sets get merged into a single pack file.
⌨️ Step 2 — Run the command
/zpack armor <packName> /zpack armor <packName> <namespace> ← optional namespace, defaults to packName
The generator produces a config with:
- An
armors_renderingblock linkinglayer_1andlayer_2to the set ID - An item entry per piece you provided (helmet/chestplate/leggings/boots) with
specific_properties.armor.slotset correctly
✅ Step 3 — Apply and use
/zpack reloadpacks /zpack zip /z give <player> armor my_armor_set_chestplate
Open packs/<packName>/configs/<packName>.yml to optionally enable leather color tinting:
armors_rendering:
my_armor_set:
color: '#8c196c' ← hex colour shown on the leather base layer
use_color: true ← set to true to enable tinting
🎁 Custom Items
Items can be defined in two ways: via the main plugins/CustomiZer/items.yml (gameplay actions), or via a pack config inside packs/<pack>/configs/ (resource pack textures/models for any item type).
📦 Pack Item Config (configs/*.yml)
This is the format for defining items inside a pack folder. The plugin reads all .yml files recursively from configs/. Every file that has an items: section is processed.
info:
namespace: my_pack # must match the assets/<namespace>/ folder
items:
my_item: # unique item ID within this namespace
display_name: "My Item" # shown in-game (color codes supported)
resource:
material: PAPER # base Minecraft material
generate: false # false = use an existing model JSON
model_path: item/my_item # path relative to assets/<namespace>/models/
# (no .json extension needed)
To auto-generate a simple flat item model from a texture (no model JSON needed):
items:
bronze_coin:
display_name: "Bronze Coin"
resource:
material: PAPER
generate: true # plugin generates the model automatically
model_path: item/bronze_coin # resolves to textures/item/bronze_coin.png
Full resource: field reference:
| Field | Required | Description |
|---|---|---|
material | Yes | Base Minecraft material — e.g. PAPER, DIAMOND_SWORD, LEATHER_HORSE_ARMOR |
generate | No | true = auto-generate a flat item/generated model from the texture at model_path. false = use the model JSON at models/<model_path>.json |
model_path | Yes | When generate: true — path to the texture PNG under textures/. When generate: false — path to the model JSON under models/. Both relative to assets/<namespace>/, no extension needed. |
model_id | No | Force a specific Custom Model Data integer. Omit to let the plugin auto-assign one (recommended). |
📂 Where to put the texture / model
Given namespace: my_pack and model_path: item/my_item:
| generate: | File to provide | Full path |
|---|---|---|
true | Texture PNG | resourcepack/assets/my_pack/textures/item/my_item.png |
false | Model JSON + textures it references | resourcepack/assets/my_pack/models/item/my_item.json |
📄 Main items.yml (action items)
Right-click action items are configured in plugins/CustomiZer/items.yml. Fields:
NAME— Display name (color codes supported)MATERIAL— Vanilla Minecraft material (e.g.PAPER,DIAMOND)LORE— List of lore linesCMD— Custom model data integer (links to resource pack texture)COOLDOWN— Seconds before the item can be used againDURATION— Effect duration in seconds (for effect actions)AMOUNT/MAX_AMOUNT— For money/random money actionsCOMMAND— Console command to run (%player%placeholder)ACTION— What the item does (see table below)
⚡ Item Actions
| Action | What it does | Extra fields |
|---|---|---|
| COMMAND | Runs a console command when used | COMMAND |
| HEAL | Restores the player to full health | — |
| JUMP | Applies Jump Boost effect | DURATION |
| SPEED | Applies Speed effect | DURATION |
| REGEN | Applies Regeneration effect | DURATION |
| STRENGTH | Applies Strength effect | DURATION |
| LUCK | Applies Luck effect | DURATION |
| POISON | Poisons the player (curse item) | DURATION |
| GOD | Toggles Resistance + Saturation + Regeneration | — |
| FLY | Toggles flight for the player | — |
| MONEY | Deposits a fixed amount to the player's balance | AMOUNT |
| RANDOMMONEY | Deposits a random amount within a range | AMOUNT, MAX_AMOUNT |
| JOBSBOOSTER | Applies a Jobs XP multiplier for a duration | JOB_BOOST_MULTIPLIER, JOB_BOOST_DURATION |
| UNCLAIM | Scans chunks in a radius and unclaims them | AREA |
| DIE | Instantly kills the player | — |
| NONE | Item with no action (decoration, key item, trophy) | — |
⚔️ Custom Swords (swords.yml)
Custom swords support a 5-tier rarity system. Each tier can have a completely different custom model data value, meaning a different texture. Players upgrade their sword's rarity to unlock better stats and visuals.
🎨 5 Rarity Tiers
Common → Rare → Epic → Legendary → Mythical. Each tier has its own CMD (texture), name, and lore.
💉 Lifesteal
Configure a percentage of damage dealt to be returned as health (e.g. lifesteal: 0.10 = 10%).
🔥 Elemental Damage
Assign an elemental type (Fire, Ice, Lightning…) that triggers special effects on hit.
✨ Hit Effects
Apply potion effects to enemies or yourself on hit, each with a configurable chance and duration.
📄 Sword Config Structure
type— Minecraft material (e.g.IRON_SWORD)lifesteal— 0.0–1.0 fraction of damage returned as HPelemental_damage— Element name stringeffects-enemy— Map of effect → chance + duration applied to the hit targeteffects-self— Map of effect → chance + duration applied to the attackerrarity.common / rare / epic / legendary / mythical— Per-tiercustom_model_data,name, andlore
🛡️ Custom Armors (armors.yml)
Custom armors use leather armor with specific RGB dye colors to match your resource pack textures. Each piece (helmet, chestplate, leggings, boots) is individually configured.
📄 Armor Config Structure
color— RGB integer for the leather dye color (e.g.16711680= red)custom_model_data— CMD for each armor piecedisplay_name— Display name per piecelore— Lore lines per pieceattributes— Vanilla attribute modifiers (armor, armor_toughness, attack_damage…)
✨ Armor Set Bonuses (sets.yml)
When a player equips all pieces of a configured armor set, a set bonus activates. Bonuses can include persistent potion effects, stat boosts, and broadcast messages.
🧱 Custom Blocks
Custom blocks use Minecraft's note-block system — each unique instrument + note combination maps to a Custom Model Data value, providing hundreds of unique block textures with no client mod required.
📦 Pack Block Config (configs/*.yml)
Blocks are items with a specific_properties.block section. The item ID, texture, and model are registered just like a regular item, but the block placement behavior is added below:
info:
namespace: my_pack
items:
custom_ore:
display_name: "Custom Ore"
resource:
material: PAPER # underlying item material
generate: true # auto-generate cube model from 6 textures
textures: # [top, bottom, north, south, east, west]
- block/custom_ore_top
- block/custom_ore_bottom
- block/custom_ore_side
- block/custom_ore_side
- block/custom_ore_side
- block/custom_ore_side
specific_properties:
block:
placed_model:
type: REAL_NOTE # uses the note-block placement system
break_particles: BLOCK # particle type on break
directional_mode: NONE # NONE / LOG (4 rotations) / AXIS (2 rotations)
cancel_drop: false # true = don't drop the item when broken
hardness: 3.0 # mining resistance
sound:
break:
name: "BLOCK_STONE_BREAK"
volume: 1.0
pitch: 1.0
place:
name: "BLOCK_STONE_PLACE"
volume: 1.0
pitch: 1.0
specific_properties.block field reference:
| Field | Description |
|---|---|
placed_model.type | Always REAL_NOTE for pack blocks (note-block state system) |
placed_model.break_particles | Particle type on break — e.g. BLOCK, ITEM |
placed_model.directional_mode | NONE — no rotation; LOG — 4 face directions; AXIS — 2 axis directions |
cancel_drop | false = drop the item when broken; true = suppress the drop |
hardness | Mining resistance (float). Matches vanilla block hardness values. |
sound.break / sound.place | Bukkit sound name + volume + pitch played on break/place |
📂 Where to put the block textures
Given namespace: my_pack and generate: true with textures listed as block/custom_ore_top:
resourcepack/assets/my_pack/textures/block/custom_ore_top.png resourcepack/assets/my_pack/textures/block/custom_ore_bottom.png resourcepack/assets/my_pack/textures/block/custom_ore_side.png
If using generate: false, provide a model JSON at resourcepack/assets/my_pack/models/<model_path>.json that references your textures.
🔨 Break Restrictions
Configure allowed tools with break_with in blocks.yml. Supports vanilla materials, HAND, and custom pickaxe IDs.
📦 Custom Drops
Each block entry in blocks.yml can define extra drops: items from items.yml, pack items, or vanilla materials — with amount ranges and drop chances.
🔊 Sound & Particle
soundeffectonmined and visualeffectonmined fire when the block is broken, regardless of reward config.
🗺️ Persistence
All placed pack blocks are saved to pack_blocks.yml and survive server restarts with correct texture state restored.
💰 Block Rewards (xp_values in blocks.yml)
The xp_values section in blocks.yml maps block IDs to rewards given when a player breaks them. Supports both custom pack blocks and vanilla Minecraft blocks.
| Field | Description |
|---|---|
name | Friendly block name used in messages |
jobsxp | Jobs Reborn XP awarded on break |
job | Jobs job name receiving the XP (e.g. Miner) |
money | Vault economy money deposited on break |
points | Jobs points awarded on break |
cancel-vanilla-drops | true = suppress default drops; false = keep them alongside rewards |
soundeffectonmined | Bukkit Sound name played on break |
visualeffectonmined | Particle effect name spawned on break |
bannedtools | Tools that cannot break this block (vanilla blocks only) |
Drops | Extra reward drops — type VANILLA, CMODELDATA, or COMMAND — each with a chance, message, and drop value |
jobsxp, money, and points when WorldGuard integration is enabled.🌍 Ore Generator (generators.yml)
CustomiZer can automatically inject blocks into newly generated chunks — custom ores, decorative pack blocks, or vanilla blocks — without any external plugins. Supports vanilla blocks, your own CustomiZer pack blocks, and ItemsAdder blocks.
📋 Block ID Formats
| Format | Example | What it places |
|---|---|---|
minecraft:<MATERIAL> | minecraft:gold_ore | Any vanilla Minecraft block — use the Bukkit material name in lowercase after the colon |
<packName>:<itemId> | blossom_studios:oak_beam | A CustomiZer pack block — must be a block registered in packs/ with placed_model.type: REAL_NOTE |
<namespace>:<id> | myitems:custom_ore | An ItemsAdder custom block — ItemsAdder plugin must be installed |
📄 generators.yml — Full Config Reference
worlds_populators:
my_custom_ore:
block: blossom_studios:oak_beam # block ID — see formats above
worlds:
- world # exact world folder name
replaceable_blocks:
- STONE # Bukkit material names (uppercase)
- DEEPSLATE
biomes: [] # empty = any biome
# or list specific biomes: [PLAINS, DESERT, FOREST]
chance: 70.0 # 0–100 — % probability each vein attempt places a block
amount: 8 # vein placement attempts per newly generated chunk
max_height: 45 # highest Y this ore can generate
min_height: -60 # lowest Y (use negative for deepslate layer)
| Field | Required | Description |
|---|---|---|
block | Yes | Block ID to place — see formats table above |
worlds | Yes | List of exact world folder names where this generator runs |
replaceable_blocks | Yes | Bukkit material names (uppercase) this ore can replace. Only blocks of these types will be overwritten. |
biomes | No | Restrict to specific biomes (uppercase, e.g. PLAINS). Empty list [] = generate in any biome. |
chance | Yes | 0–100 percent. Probability that each vein attempt actually places a block. 100 = always place, 50 = 50% chance per attempt. |
amount | No | Number of vein placement attempts per newly generated chunk. Default: 6. Higher = denser ore generation. |
min_height | Yes | Lowest Y level the ore can generate at. Use negative values for deepslate layers (e.g. -60). |
max_height | Yes | Highest Y level the ore can generate at. |
⚡ Quick Examples
Dense ore deep underground, any biome:
my_deep_ore: block: minecraft:ancient_debris worlds: [world] replaceable_blocks: [NETHERRACK] biomes: [] chance: 40.0 amount: 3 min_height: -58 max_height: 16
CustomiZer pack block, plains only:
blood_ore: block: ultimate_armors:blood_ore worlds: [world] replaceable_blocks: [STONE, ANDESITE, GRANITE] biomes: [PLAINS] chance: 60.0 amount: 5 min_height: 10 max_height: 50
pack_blocks.yml — they show the correct texture, prevent note-block physics corruption, and drop the correct items when broken, just like player-placed blocks.⛏️ Custom Pickaxes (pickaxes.yml)
Custom pickaxes level up as players mine with them. Each level unlocks better stats, abilities, and visual upgrades via changing custom model data.
📊 Level System
Each level requires a set number of blocks mined (blocks_required). On level-up, CMD changes to show a new texture and a message is sent.
🔲 Radius Mining
radius and height_radius control how many extra blocks are broken in a cube around the target block.
⚗️ Hold Effects
effect_on_hold applies a potion effect while the pickaxe is in the main hand (e.g. Haste).
🎁 Bonus Drops
bonus can add extra drops (vanilla items or custom items) with a configured chance per level.
📋 Lore Placeholders
Pickaxe lore lines support dynamic placeholders that update as the pickaxe levels up:
{level}— Current level number{blocks_mined}— Total blocks mined with this pickaxe{blocks_required}— Blocks needed to reach the next level{progress}— Visual progress bar
🌾 Harvester Hoes (harvesterhoes.yml)
Harvester hoes automatically harvest crops in a configurable area. They also reward money and Jobs XP per crop harvested, with different amounts per crop type.
📄 Hoe Structure
type— Vanilla hoe materialdisplay_name,lore— Cosmeticscustom_model_data— Resource pack texturelevels— Map of level keys, each with radius, money per crop, XP per crop, and specific drop overrides per crop type (WHEAT, CARROT, POTATO, etc.)abilities— Per-level abilities (e.g. auto-replant, fortune multiplier)
🏆 Mastery System
Players gain mastery XP by performing in-game activities (breaking blocks, killing mobs, crafting, etc.). Mastery is split into multiple tracks, each with 100 levels. Reaching level 100 in all tracks unlocks Prestige.
📈 Multiple Tracks
Each track represents a different skill area. Players can specialize or grind all tracks simultaneously.
🎖️ Level Rewards
Configurable rewards per mastery level milestone — commands, items, money, or effects.
📊 Leaderboards
View mastery progress for yourself or any online player with /zmastery [player].
🔌 PlaceholderAPI
Mastery levels and track progress are exposed as PAPI placeholders for use in scoreboards, chat, and holograms.
📋 Mission System
Players complete daily and weekly missions to earn rewards. Missions reset on a configurable schedule and are displayed in a paginated GUI.
| Feature | Details |
|---|---|
| Mission types | Break blocks, kill mobs, mine specific ores, use items, and more |
| Reset schedules | Daily and weekly — configurable reset times |
| Rewards | Commands, economy money, custom items, mastery XP |
| GUI | Paginated mission board with progress bars and completion status |
| Completion message | Broadcast message sent to the player on mission completion |
⭐ Prestige System
When a player reaches level 100 in all mastery tracks, they can prestige. Prestiging resets all mastery levels to 0 but grants a permanent prestige tier displayed in their profile.
/zprestige confirm after the initial command to prevent accidental resets.🔮 Reforge System
Players can reforge custom items at the reforge station to apply random modifiers that boost stats. Each reforge costs a configurable amount of in-game currency.
🎲 How Reforging Works
- Open the reforge station via
/zreforgeor the GUI. - Place the item you want to reforge in the station slot.
- Pay the reforge cost (Vault economy).
- A random modifier is applied — modifiers can change attack damage, speed, defense, or apply special effects.
- Re-roll as many times as desired to chase the modifier you want.
💎 Gem Socket System
Items can have gem sockets added to them. Players insert gem items into sockets to permanently boost the item's stats.
| Command | What it does |
|---|---|
/zsocket add <count> | Admin command — adds socket slots to the held item |
/zsocket info | Shows how many sockets the held item has and what gems are socketed |
/zsocket extract | Removes and destroys the gem in slot 1, returning the socket slot |
| Right-click gem on item | Inserts the gem into the first available socket slot |
🗃️ GUI System (gui.yml)
All GUIs are fully configurable from plugins/CustomiZer/gui.yml. Every category, subcategory, and pagination button can have a custom material, CMD, name, lore, slot, and decoration.
📂 Category Menu
The main category GUI shows buttons for each content type: Items, Swords, Armors, Blocks, Pickaxes, Harvesters, and Cosmetics. Clicking a category opens a subcategory menu.
📑 Subcategory Tabs
Each category has two tabs:
- Configured Items — items defined in the main plugin config files (items.yml, swords.yml, etc.)
- Pack Items — items coming from installed packs in the packs/ folder
Both tabs are independently paginated. Each category has its own subcategory configuration (title, materials, slots) in gui.yml.
🎨 Decoration & Borders
Each GUI section supports a configurable background item (fills empty slots) and a border item (fills the GUI frame). Both can be any material with a custom CMD.
📄 Pagination
When item count exceeds the available slots, pagination is enabled automatically. Previous-page, next-page, and close buttons are all individually configurable per category with custom materials, CMD, name, and slot position.
🔌 Integrations
💰 Vault
All economy rewards (block breaks, item use, reforge costs) go through Vault. Compatible with any economy plugin that supports Vault.
⚒️ Jobs Reborn
Breaking blocks configured in xp_values awards Jobs XP directly to the player's job progression. Both custom pack blocks and vanilla blocks supported.
🗺️ WorldGuard
Region-based XP and money multipliers, dividers, and time-based boost schedules. Configure per-region reward scaling without touching individual block configs.
📊 PlaceholderAPI
Exposes mastery levels, prestige tier, and other player stats as PAPI placeholders for scoreboards, chat formatting, and holograms.
🎭 ModelEngine
If ModelEngine is installed, its resource pack is automatically merged into the CustomiZer-generated pack so you never have two conflicting packs.
🧊 ItemsAdder
Optional integration for detecting ItemsAdder custom blocks in reward events. Can be disabled entirely in settings.yml.
⚙️ Settings & Config Files
| File | Purpose |
|---|---|
config.yml | Server IP/port for resource pack, language, hotbar/bossbar toggles, WorldGuard region multipliers |
settings.yml | Toggle integrations: itemsadder_support, worldguard_integration_support, jobs_support (all default false) |
blocks.yml | Custom placeable blocks (break restrictions, drops, sound/particle) + xp_values block rewards |
items.yml | Custom right-click items and their actions |
swords.yml | Custom swords with rarity tiers |
armors.yml | Custom leather armor sets |
sets.yml | Armor set bonus definitions |
pickaxes.yml | Leveling custom pickaxes |
harvesterhoes.yml | Harvester hoe definitions |
generators.yml | World ore/block generator — define custom block injection rules per world, biome, height range, and chance |
gui.yml | All GUI layouts — sizes, titles, button materials/slots, decoration, pagination |
customfonts.yml | Global overrides for pack font image scale/position (takes priority over pack configs on every startup) |
rarity.yml | Rarity tier definitions and display names |
lang/en.yml lang/fr.yml | All plugin messages in English and French |
packs/ | Drop-in pack folders (each with configs/ and resourcepack/) |
includes/ | Extra resource pack files merged into the generated pack |
models/ | JSON model files for custom pickaxes |
/z reload. To rebuild only the resource pack without a full config reload, use /zpack zip. Neither requires a server restart.