NOROMC Plugin Suite
The full documentation for every NOROMC feature: Citizens-backed NPCs with branching dialogue and in-game quest authoring, the chunk claiming economy, jump pads, the AdvancedEnchantments keybind system, and the ender dragon spectate ride. Every feature documented here exists both in the combined NOROMC plugin and, where noted, as its own focused standalone plugin (NORONPCs, NOROMCClaims, NOROMCEconomy, NOROMCJumpPads) with the exact same commands and file formats.
| Plugin | Feature | Depends on |
|---|---|---|
NOROMC.jar | Everything on this page, combined. | AdvancedEnchantments (hard); Citizens, Vault (soft) |
NORONPCs.jar | NPCs, dialogue, quests only. | Citizens (hard); Vault (soft) |
NOROMCClaims.jar | Chunk claiming only. | Vault (soft, for money purchases) |
NOROMCEconomy.jar | Minimal Vault economy provider. | Vault (hard) |
NOROMCJumpPads.jar | Jump pads only. | none |
ItemEditFull.jar | Item editing, custom weapons, and 150+ bindable abilities. | none |
dialogues.yml or
quest-definitions.yml. For anything more than a one-off tweak, it's almost
always faster to open the file, paste from the examples on this page, and run
/noronpc dialogue reload or /noronpc quest reload than to type a
long chat command.
Getting Started
- Install Citizens on your server. It's a
hard dependency for the standalone NORONPCs plugin, and a soft dependency for
the main NOROMC plugin (if it's missing, NOROMC just disables
/noronpcand keeps everything else running). - Optionally install Vault plus an economy plugin (EssentialsX, etc.) if you want quest rewards to actually pay out. Without one, quests still complete, the payout is just skipped with a console note.
- Drop the plugin jar in your server's
plugins/folder and start the server. Two data files get created on first run:data/dialogues.ymlanddata/quest-definitions.yml(the latter seeded with 5 example quests so there's something to look at immediately). ItemEdit is bundled inside the main NOROMC jar, so/ieworks right away without a separate download. - Stand where you want your first NPC and run
/noronpc create Guide.
Permissions
| Node | Default | Covers |
|---|---|---|
noromc.npc.admin |
op | Everything that authors or edits state: create, skin,
mobtype, scale, goto, all
dialogue subcommands, all record subcommands,
quest create, quest delete, quest reload. |
noromc.npc.quest |
true (everyone) | Read-only/self-service quest actions: quest list,
quest start, quest progress. |
noromc.claims.use |
true (everyone) | /claims, in both the main NOROMC plugin and the standalone
NOROMCClaims plugin. |
noromc.claims.admin |
op | /claimsadmin (standalone NOROMCClaims plugin only; the
combined NOROMC plugin uses noromc.admin instead, below). |
noromc.bind |
true (everyone) | /bind, the AdvancedEnchantments keybind menu. |
noromc.enderdragon.admin |
op | /enderdragonsetspawn, /enderdragonspectate. |
noromc.admin |
op | Main NOROMC plugin's /admin: Claim Chunk balance management and
/admin givejumpad. |
noromc.economy.admin |
op | /economy (alias /eco), standalone NOROMCEconomy plugin. |
noromc.economy.balance |
true (everyone) | /balance (alias /bal), standalone NOROMCEconomy plugin. |
jumpad.admin |
op | /givejumpad, standalone NOROMCJumpPads plugin only. |
itemedit.use |
true (everyone) | /ie, the visual item editor and all subcommands. |
itemedit.admin |
op | /ie reload, ability configuration reload. |
Creating & Customizing NPCs
An NPC starts as a copy of you: a PLAYER-type entity wearing your name. From there you can reskin it as any player, turn it into any mob, lock it as a baby, and resize it.
# Spawn an NPC named "Guide" at your feet
/noronpc create Guide
# Give it a real player's skin
/noronpc skin Guide Notch
# ...or turn it into a mob instead
/noronpc mobtype Guide zombie
/noronpc mobtype Guide cow baby # baby/adult variant, locked so it won't grow up
# Resize it (1.0 = vanilla size, works on mobs AND player-skinned NPCs)
/noronpc scale Guide 1.6
mobtype <name> player baby is rejected: players don't have
a baby variant. The command tells you if the entity type doesn't support it.
Movement: goto vs record
There are two completely different movement systems, built for two different jobs. Picking the right one matters.
/noronpc goto <npcName>
One-off, dynamic pathing. Sends the NPC to your current position using Citizens' real pathfinder. It dynamically routes around whatever's in the way right now: swims through water, takes stairs and doors, avoids walls. Good for "send this NPC over here" on demand.
/noronpc goto Guide stop cancels it mid-walk.
/noronpc record
Exact, looping motion capture. Records your exact position every single tick while you walk/jump/fly/swim/fall, then replays those same frames on a loop forever by teleporting the NPC through them, with no pathfinding involved, so it reproduces literally anything you did, including things Citizens' navigator could never compute on its own (a jump across a gap, a flight path, going underwater).
/noronpc record start
# ... walk/fly/jump/swim the route you want the NPC to loop ...
/noronpc record stop Guide
# or: /noronpc record status (check progress mid-recording)
# or: /noronpc record abort (discard without applying it anywhere)
Recording captures every tick, so a route is dense and precise but not tiny: it caps at roughly 20 minutes (24,000 waypoints) with a chat warning once you're close, just so a forgotten open recording can't grow forever.
NPC Command Reference
| Command | Access | Notes |
|---|---|---|
/noronpc create <name> | admin | Spawns at your location. |
/noronpc skin <npc> <playerName> | admin | Forces the NPC to PLAYER type first. |
/noronpc mobtype <npc> <entityType> [baby|adult] | admin | Any Bukkit EntityType name. |
/noronpc scale <npc> <value> | admin | 0.0625 to 16, 1.0 = normal size. |
/noronpc goto <npc> [stop] | admin | Real-time pathfind to you, or cancel. |
/noronpc dialogue create <id> | admin | Empty dialogue, ready for lines. |
/noronpc dialogue addline <id> <text...> | admin | Appends one line. Supports & colour codes. |
/noronpc dialogue addchoice <id> <targetId|end> <label...> | admin | Clickable response, offered after the lines finish. |
/noronpc dialogue assign <npc> <id> | admin | What plays on right-click. |
/noronpc dialogue reload | admin | Re-reads dialogues.yml from disk. |
/noronpc record start | admin | Begins capturing your movement. |
/noronpc record stop <npc> | admin | Applies the capture to that NPC as a looping path. |
/noronpc record abort | admin | Discards the in-progress capture. |
/noronpc record status | admin | Waypoint count / elapsed time so far. |
/noronpc record cancel <npc> | admin | Clears an NPC's stored path entirely. |
/noronpc quest create talk <id> <npcName> <reward> <name...> | admin | Talk-to-NPC objective. |
/noronpc quest create kill <id> <entityType> <amount> <reward> <name...> | admin | Kill-N-mobs objective. |
/noronpc quest create collect <id> <material> <amount> <reward> <name...> | admin | Hold-N-items objective. |
/noronpc quest create reach <id> <radius> <reward> <name...> | admin | Uses your current position as the target. |
/noronpc quest delete <id> | admin | Removes a quest definition. |
/noronpc quest assign <npc> <id> | admin | Makes that NPC hand out (auto-start) the quest on talk. |
/noronpc quest reload | admin | Re-reads quest-definitions.yml from disk. |
/noronpc quest list | player | Every defined quest with its id and reward. |
/noronpc quest start <id> | player | Begins tracking progress for that player. |
/noronpc quest progress | player | Your active/completed quests. |
Writing Dialogue
A dialogue is an ordered list of lines, played one at a time on a configurable delay
(npc.dialogue-line-delay-ticks in config.yml, 20 ticks = 1
second by default). Lines support vanilla & colour codes and are only
parsed at send time, so the raw text you type is exactly what's stored.
/noronpc dialogue create hello
/noronpc dialogue addline hello &eWelcome, traveler.
/noronpc dialogue addline hello &eI don't get many visitors out here.
/noronpc dialogue assign Guide hello
Right-clicking the assigned NPC now plays those lines in order, in chat and in the action bar (see Action Bar Mirror), and turns the NPC to face whoever it's talking to.
Branching Choices
A dialogue can end in one or more clickable responses instead of just stopping. Each choice either jumps into another dialogue (which can itself end in more choices, letting you build a real conversation tree by chaining dialogues together) or ends the conversation.
/noronpc dialogue create hello
/noronpc dialogue addline hello &eWelcome, traveler. Care to hear about work?
/noronpc dialogue addchoice hello quest_offer &aTell me more
/noronpc dialogue addchoice hello end &7No thanks
/noronpc dialogue create quest_offer
/noronpc dialogue addline quest_offer &eThere's a pest problem in the fields.
/noronpc dialogue addline quest_offer &eKill a few zombies and I'll make it worth your while.
/noronpc dialogue assign Guide hello
The target of a choice must already exist (or be the literal word end);
the command validates this and refuses to save a choice pointing nowhere.
dialogues.yml Reference
This is exactly what the commands above produce. Hand-editing this file and running
/noronpc dialogue reload is usually the fastest way to write more than a
couple of lines.
dialogues:
hello:
lines:
- "&eWelcome, traveler. Care to hear about work?"
choices:
- label: "&aTell me more"
target: quest_offer
- label: "&7No thanks"
# no "target" key = ends the conversation
quest_offer:
lines:
- "&eThere's a pest problem in the fields."
- "&eKill a few zombies and I'll make it worth your while."
choices: []
| Field | Type | Meaning |
|---|---|---|
lines | list of strings | Played in order, one per tick-delay interval. |
choices | list | Optional. Presented once lines finishes. |
choices[].label | string | The clickable text shown to the player. |
choices[].target | string, optional | Another dialogue id to chain into. Omit to end the conversation. |
Action Bar Mirror
Every dialogue line is sent to both chat and the action bar, formatted as:
[EntityType] Name&8:&r Message
The [EntityType] tag (e.g. [Zombie]) is shown for mob-type
NPCs and skipped entirely for PLAYER-skinned NPCs, since the name alone already reads as
a person.
Creating Quests
Quests are authored entirely in-game or via YAML; nothing requires touching Java
code or restarting the server. Every quest boils down to four things: an
id (a short, unique, lowercase key you invent, like
welcome or pest-control), an objective
(what the player has to do), a reward (in whatever currency Vault is
hooked up to), and an optional name (what's actually shown to
players). There are four objective types, each with its own
quest create variant, covered one at a time below.
pest-control turns
into "Pest Control" with no extra typing. That means the shortest possible quest is
just an id, a target, and one or two numbers, nothing else. Type a name only when
you actually want something different from the id.
1. Talk to an NPC
Syntax: /noronpc quest create talk <id> <npcName> <reward> [name...]
# Full form, with a custom display name
/noronpc quest create talk welcome Guide 100 &6A Warm Welcome
# Shortest form: name is skipped, so it becomes "Welcome" automatically
/noronpc quest create talk welcome Guide 100
2. Kill N of a mob type
Syntax: /noronpc quest create kill <id> <entityType> <amount> <reward> [name...]
# "pest-control" becomes the name "Pest Control" automatically
/noronpc quest create kill pest-control zombie 10 250
3. Hold N of an item at once
Syntax: /noronpc quest create collect <id> <material> <amount> <reward> [name...]
/noronpc quest create collect treasure-hunt diamond 5 500
4. Reach a location
Syntax: /noronpc quest create reach <id> <radius> <reward> [name...].
Stand exactly where you want the target to be before running this: it uses your
current position, there's no separate "set location" step.
/noronpc quest create reach long-walk 10 750
Whichever way you write it, the description shown in /noronpc quest list
is generated automatically from the objective (e.g. "Kill 10 zombies.");
there's no separate description field to keep in sync either.
Made a mistake? Just delete it and try again.
/noronpc quest delete pest-control
/noronpc quest create kill pest-control zombie 15 300
Prefer editing a file over typing commands?
Every quest created this way is just a normal entry in
data/quest-definitions.yml (see the reference
below). For more than a couple of quests, open that file directly, copy an existing
entry, tweak the values, and run /noronpc quest reload to pick up the
change with no restart. Commands and hand-editing are two doors into the exact same
data; use whichever is faster for what you're doing right now.
Tab-completion only suggests what actually makes sense
Typing /noronpc quest create kill <id> and pressing tab now only
suggests actual living mobs (zombies, cows, skeletons, etc.) instead of every single
EntityType Minecraft has, including boats, minecarts, item frames and the
like, that could never be "killed" for a quest anyway. The amount and
reward arguments also suggest a handful of sensible numbers
(1, 5, 10, 25, 64 and 50, 100, 250, 500, 1000) so you can tab
through a whole quest without typing a single digit, while still being free to type any
custom number instead.
Linking an NPC as a quest giver
/noronpc quest assign <npcName> <questId> makes that NPC
hand the quest out itself: the first time a player talks to it, if they haven't already
started that quest, it auto-starts for them (right alongside whatever dialogue is
assigned) and they get the usual "Quest started" message. No more needing to already
know a quest's id and type /noronpc quest start yourself — talking to
the right NPC is enough.
/noronpc quest create talk welcome Guide 100 &6A Warm Welcome
/noronpc quest assign Guide welcome
Live Quest Bossbar
Every online player with at least one active (started, not yet completed) quest sees a
bossbar across the top of their screen showing that quest's name and progress, e.g.
Pest Control (4/10). It refreshes once a second, so a kill, a picked-up
item, or reaching a marked location shows up on the bar within a second — no need
to run /noronpc quest progress to check.
If a player has more than one quest active at once, the bar cycles between them every 5 seconds instead of only ever showing one. The bar disappears entirely once a player has no active quests, and is cleaned up automatically when they log out.
Objective Types
| Type | Target | Completed when… | Checked |
|---|---|---|---|
TALK_TO_NPC | an NPC name | the player right-clicks that NPC. | on right-click |
KILL_ENTITY | an EntityType | the player's kill count on that mob reaches the amount. | on EntityDeathEvent |
COLLECT_ITEM | a Material | the player is holding that many at once (not consumed). | polled once/second |
REACH_LOCATION | world + x/y/z + radius | the player stands within radius blocks. | polled once/second |
quest-definitions.yml Reference
quests:
welcome:
name: A Warm Welcome
description: Talk to Guide.
objective-type: TALK_TO_NPC
objective-target: Guide
objective-amount: 1
reward-amount: 100
pest-control:
name: Pest Control
description: Kill 10 zombies.
objective-type: KILL_ENTITY
objective-target: ZOMBIE
objective-amount: 10
reward-amount: 250
long-walk:
name: The Long Walk
description: Travel to the marked location.
objective-type: REACH_LOCATION
objective-amount: 1
reward-amount: 750
world: world
x: 0.0
y: 64.0
z: 0.0
radius: 10.0
| Field | Applies to | Notes |
|---|---|---|
name | all | Shown in quest list / progress. |
description | all | Free text; the in-game command auto-generates this, but hand-edits are respected. |
objective-type | all | One of TALK_TO_NPC, KILL_ENTITY, COLLECT_ITEM, REACH_LOCATION. |
objective-target | all except REACH_LOCATION | NPC name / EntityType / Material name, matching objective-type. |
objective-amount | all | How many kills/items/talks needed. Always 1 for talk & reach. |
reward-amount | all | Paid via Vault on completion; skipped (with a console note) if no economy plugin is installed. |
world, x, y, z, radius | REACH_LOCATION only | The target point and how close counts as "there." |
Full Examples
Everything from the default seed data, ready to copy into quest-definitions.yml:
quests:
welcome:
name: A Warm Welcome
description: Talk to Guide.
objective-type: TALK_TO_NPC
objective-target: Guide
objective-amount: 1
reward-amount: 100
pest-control:
name: Pest Control
description: Kill 10 zombies.
objective-type: KILL_ENTITY
objective-target: ZOMBIE
objective-amount: 10
reward-amount: 250
treasure-hunt:
name: Treasure Hunt
description: Collect 5 diamonds.
objective-type: COLLECT_ITEM
objective-target: DIAMOND
objective-amount: 5
reward-amount: 500
delivery-run:
name: Delivery Run
description: Bring an emerald to Courier.
objective-type: TALK_TO_NPC
objective-target: Courier
objective-amount: 1
reward-amount: 400
long-walk:
name: The Long Walk
description: Travel to the marked location.
objective-type: REACH_LOCATION
objective-amount: 1
reward-amount: 750
world: world
x: 0.0
y: 64.0
z: 0.0
radius: 10.0
Claims: Claim Chunks & Currency
A chunk-claiming system with its own virtual currency, "Claim Chunks," separate from any server economy. Available as part of the main NOROMC plugin or as the standalone NOROMCClaims plugin; both use identical commands and data formats.
Setting (config.yml under claims:) | Default | Meaning |
|---|---|---|
starting-balance | 25 | Claim Chunks a new player starts with. |
base-cost | 1 | Claim Chunks to claim one chunk. |
cost-increase-per-claim | 0 | Extra cost per chunk already owned (0 = flat cost for every claim). |
max-claims-per-player | 2 | Hard cap on separate claims a player can own. Applies equally to everyone, no op/staff bypass. |
purchase-base-price | 5000 | Real-money starting price for buying Claim Chunks via Vault. |
purchase-price-multiplier | 2 | Multiplier applied to the price for every Claim Chunk already held/claimed (exponential climb). |
The /claims GUI: "Nearby Chunk Claims"
Permission noromc.claims.use (default true). A 54-slot (6 rows × 9
columns) GUI: the top 5 rows are a spatial chunk grid, the bottom row is a fixed
control bar.
The chunk grid
Each pane is exactly one chunk, laid out relative to the direction you were facing when you opened the menu (snapped to the nearest cardinal direction). It does not re-rotate live while the menu stays open; reopen it after turning to reorient.
| Pane | Meaning |
|---|---|
| Nether Star | Your current chunk, whatever its claim status. |
| Trial Spawner icon | A Trial Chamber chunk. Cannot be claimed. |
| Light gray pane | Unclaimed: shows coordinates, cost, and your balance. |
| Lime pane | Claimed by you. Click to open its management menu. |
| Orange pane | Claimed by someone else. |
Footer control bar (row 6)
| Slot | Item | Opens |
|---|---|---|
| 3 | Your player head | Purchase Claim Chunks menu (real money via Vault). |
| 5 | "Claiming With" | Which claim newly-claimed chunks get added to. |
| 7 | "Your Claims (N)" | Every claim you own or are a member of. |
| 9 | "Claim Trading" | Server-wide marketplace of claims listed for sale. |
Purchasing Claim Chunks with real money
Requires Vault plus an economy provider (EssentialsX, NOROMCEconomy, etc.). Without one, the menu still opens but blocks the purchase. Buying more than one at once prices every unit in the batch at the same rate as the last one, so buying in bulk is never cheaper per-unit than buying one at a time.
Managing a Claim
Opened by clicking your own claimed chunk, or from "Your Claims." A 4-row (36-slot) menu:
| Slot | Item | Does |
|---|---|---|
| 1 | Barrier | Back to the grid. |
| 5 | Slime block | Center coordinates, chunk count, owner, your rank, member list. |
| 9 | Emerald | Opens the trading menu. |
| 11 | Bed | Teleport to the claim's home. |
| 13 | Ender pearl | Claim warps (currently just "Home"). |
| 21 | Gold ingot | Shard Bank balance (N/500). |
| 25 | Owner's head | Read-only member/rank list. |
| 28 | TNT | Delete just the chunk you opened this menu from. |
| 36 | Oak door | Delete the entire claim, all chunks included. |
Trading & Marketplace
A claim's Trading menu shows Status: Unlisted or
Status: Listed plus a category. Listing walks you through a Category
picker (Farm / Mob Grinder / Home, easily
extended); once listed, it shows up in every player's /claims marketplace
browse menu (slot 9 of the footer). The marketplace is currently read-only: browsing
works, but ownership transfer plus payment isn't wired up yet.
Borders & Entry/Exit Subtitles
Claiming a chunk starts a particle wall around it that runs indefinitely (survives server restarts). Green sparkles for your own claim, purple dust for someone else's. Adjacent claimed chunks in the same claim merge into one outline around the whole connected cluster instead of drawing a border around every individual chunk.
Walking across a claim boundary shows a subtitle (no title line):
| Event | Text |
|---|---|
| Entering your own claim | ♦ Entering your claimed land ♦ |
| Exiting your own claim | ♦ Exiting your claimed land ♦ |
| Entering someone else's claim | ♦ Entering <owner>'s claimed land ♦ |
| Exiting someone else's claim | ♦ Exiting <owner>'s claimed land ♦ |
Claims Admin Commands
| Command | Plugin | Permission |
|---|---|---|
/admin claims add <username> <count> | NOROMC (combined) | noromc.admin |
/admin claims remove <username> <count> | NOROMC (combined) | noromc.admin |
/admin claims set <username> <count> | NOROMC (combined) | noromc.admin |
/claimsadmin <add|remove|set> <username> <count> | NOROMCClaims (standalone) | noromc.claims.admin |
All work on offline players (via Bukkit.getOfflinePlayer) as long as
they've played on the server before, and count must be a non-negative
whole number.
Economy (Vault Provider)
The standalone NOROMCEconomy plugin: a minimal Vault
Economy implementation, just a flat per-player money balance with no
banks, shops, homes, kits, warps, or multi-world balances. Exists purely so NOROMC's
Purchase Claim Chunks menu (and anything else reading Vault's Economy
service) has a real currency to charge against.
| Command | Alias | Permission | Does |
|---|---|---|---|
/economy <give|take|set> <username> <amount> | /eco | noromc.economy.admin (op) | Admin balance management. |
/balance [username] | /bal | noromc.economy.balance (true) | Check your own balance, or anyone else's with the argument. |
starting-balance: 0
currency-symbol: "$"
currency-name-singular: "Dollar"
currency-name-plural: "Dollars"
Data lives in data/balances.yml (UUID to balance), managed
automatically and not meant for hand-editing while the server runs.
Jump Pads
Available as part of the main NOROMC plugin (/admin givejumpad) or as the
standalone NOROMCJumpPads plugin (/givejumpad, permission
jumpad.admin). Both behave identically.
Command syntax
# Vertical-only pad: <block> <up_force>
/admin givejumpad stone 32
# Directional pad: <block> <horizontal_blocks> <direction> [up_force]
# If up_force is omitted, the configured default-upward-force is used.
/admin givejumpad stone 32 north 16
# Standalone plugin uses the same arguments:
/givejumpad stone 32 north
Placing that item registers the block's exact location, jump force, and direction.
Walking or jumping onto it launches the player. With no direction set, horizontal
velocity is left untouched; with a direction set, the player is pushed the requested
number of horizontal blocks while in the air, capped by horizontal-speed.
gravity: 0.08 # converts up_force into launch velocity
horizontal-speed: 3.6 # max horizontal blocks/tick for directional pads
default-horizontal-blocks: 32 # horizontal distance if none is given per-item
default-upward-force: 16 # up force if a directional pad omits the 4th arg
relaunch-cooldown-ms: 500
ambient-particle: CLOUD
ambient-particle-interval-ticks: 20
launch-particle: CLOUD
launch-particle-count: 20
launch-sound: ENTITY_SLIME_JUMP
launch-sound-volume: 1.0
launch-sound-pitch: 1.0
/bind Keybind Abilities
Main NOROMC plugin only, permission noromc.bind (default true). Lets a
player open a GUI, pick hotbar keys 1–9, and bind an AdvancedEnchantments ability
detected on their currently equipped gear to that key. Pressing the bound number
afterwards fires the ability without changing their held item.
/bind: a 3-row GUI opens, slots 1–9 in the middle row (gray = unbound).- Click an unbound slot: a picker lists AE abilities currently on your gear.
- Click one: it's bound, and that slot turns lime green.
- Press the corresponding number key: the ability fires, your held item never visibly changes.
Config (config.yml): whitelist-mode (default true)
restricts binding to the keybind-enchants list; set false to allow any AE
ability on the player's gear, including passive ones.
Ender Dragon Spectate Ride
Main NOROMC plugin only, permission noromc.enderdragon.admin (default
op). Puts a player on a rideable, harmless ender dragon using ordinary vanilla
creative-flight controls (WASD, Space, Sneak), since a real passenger seat doesn't
work for a dragon (EntityDamageByEntityEvent, block-break, and explosion
events are all cancelled for it, so it can't hurt anyone or break terrain).
# Set the one global spawn point for future rides
/enderdragonsetspawn
# Spawn a dragon there and put a player on it; run again on the same player to end the ride
/enderdragonspectate Notch
Combat Feedback
Main NOROMC plugin only, no permission gate (applies to all combat). Two passive visual effects, no commands involved:
- Floating damage numbers: a red
-Npop-up on every hit, on both mobs and players. - Mob health bars: a heart-based bar appears above a hit non-player mob, follows it, and stays visible for roughly 3 seconds after the last hit before disappearing again.
ItemEdit (Custom Items)
Main NOROMC plugin only (also available as the standalone ItemEditFull
plugin). Permission itemedit.use (default true). Lets players and admins
build custom items with lore, enchantments, attributes, flags, and over 150 bindable
abilities pulled from the abilities/ and config.yml files.
Quick commands
/ie # Opens the visual editing GUI
/ie rename <name> # Supports & color codes and MiniMessage tags
/ie lore add <text>
/ie lore set <line> <text>
/ie lore remove <line>
/ie lore clear
/ie enchant <enchantment> <level>
/ie unbreakable <true|false>
/ie flag <add|remove|clear> <flag>
/ie attribute <add|remove|clear> <attr> [val]
/ie hidetooltips [true|false]
/ie give [player] <weapon_key>
/ie reload # Reload config, weapon.yml, and abilities (itemedit.admin)
Abilities
Abilities are split into four categories: attack,
defense, mining, and passive. You can stack up
to 10 non-attack abilities on an item, and up to 255 attack abilities for massive
scaling.
/ie ability list
/ie ability add <attack|defense|mining|passive> <ability> [count]
/ie ability remove <ability>
/ie ability clear
Per-item ability tuning
Override any ability parameter on the held item without touching the global config.
/ie custom <ability> <param> <value>
# Example: make this item's lava_spit cooldown 2.5 seconds
/ie custom lava_spit cooldown 2.5
weapon.yml template
Define premade weapons that can be given with /ie give <weapon_key>.
weapons:
ember_blade:
material: BLAZE_ROD
display-name: "&6Ember Blade"
lore:
- "&7Forged in magma."
custom-model-data: 1
abilities:
- lava_spit
- fire_aura
abilities/*.yml files and the abilities: section of
config.yml for every cooldown, damage, radius, and duration value.
Walkthrough: A Complete Quest Chain
Putting NPCs, branching dialogue, and quests together: a guide who offers a job, and a courier who pays out once you deliver.
# 1. Spawn the two NPCs
/noronpc create Guide
/noronpc skin Guide Notch
# walk to where Courier should stand, then:
/noronpc create Courier
# 2. Write Guide's branching dialogue
/noronpc dialogue create guide_hello
/noronpc dialogue addline guide_hello &eWelcome, traveler. Care to hear about work?
/noronpc dialogue addchoice guide_hello guide_offer &aTell me more
/noronpc dialogue addchoice guide_hello end &7No thanks
/noronpc dialogue create guide_offer
/noronpc dialogue addline guide_offer &eBring an emerald to Courier and you'll be rewarded.
/noronpc dialogue assign Guide guide_hello
# 3. Write Courier's dialogue
/noronpc dialogue create courier_hello
/noronpc dialogue addline courier_hello &eGot that emerald for me?
/noronpc dialogue assign Courier courier_hello
# 4. Create the quest (talking to Courier completes it, but only if
# the player is holding an emerald at that moment)
/noronpc quest create talk delivery-run Courier 400 &6Delivery Run
# 5. Players start it themselves
/noronpc quest start delivery-run
TALK_TO_NPC quests whose id is exactly delivery-run require an
emerald in the player's inventory at click time (it's never consumed), a small
hardcoded example of how "hand something over" objectives can layer on top of the base
talk-to-npc check.
config.yml Reference
npc:
# Ticks between each line of an NPC's dialogue when a player right-clicks it (20 = 1s).
dialogue-line-delay-ticks: 20
Building & ProGuard
All plugins build with mvn clean package. The main NOROMC
plugin's pom.xml now runs ProGuard during the package phase
to obfuscate class and member names. Shrinking and optimization are disabled; only
renaming runs, because Bukkit and AdvancedEnchantments access large parts of the
plugin through reflection and static analysis can't see those entry points.
Local dependencies that must be installed first
AdvancedEnchantments and Citizens are not on public Maven repositories, so install them into your local Maven repo once per machine:
mvn install:install-file -Dfile="AdvancedEnchantments-9.22.7.jar" ^
-DgroupId=net.advancedplugins -DartifactId=AdvancedEnchantments -Dversion=9.22.7 -Dpackaging=jar
mvn install:install-file -Dfile="Citizens-2.0.43-b4228.jar" ^
-DgroupId=net.citizensnpcs -DartifactId=citizensapi -Dversion=2.0.43-b4228 -Dpackaging=jar
ProGuard JDK home
ProGuard needs a JDK that ships jmods. The pom.xml sets a
default proguard.jdk.home; override it on other machines with:
mvn clean package -Dproguard.jdk.home=C:/Path/To/JDK
What's New
- ProGuard obfuscation: the main NOROMC jar is now obfuscated at build time (rename only, shrink/optimize off).
- Citizens dependency added: NPC/dialogue/quest system now uses Citizens as a hard dependency in NORONPCs and a soft dependency in NOROMC.
- ItemEdit integration: full item editor with 150+ abilities, custom weapons, lore, enchantments, attributes, and per-item ability tuning.
- Combat feedback: floating damage numbers and temporary heart health bars above hit mobs.
- Jump pad overhaul: 4-argument directional pads with configurable horizontal distance and default upward force.
- Claim price multiplier: real-money Claim Chunk purchases now scale by
purchase-price-multiplierinstead of a flat step. - Max claims cap:
max-claims-per-playerlimits how many separate claims each player can own. - Branching dialogue: choices that chain into other dialogues instead of a single flat line list.
- Action bar mirror: every dialogue line also shows in the action bar with an entity-type tag.
/noronpc dialogue reload&/noronpc quest reload: hand-edit the YAML, reload, done. No restart, no retyping chat commands.- Conversation overlap fix: re-clicking an NPC mid-dialogue now cleanly restarts instead of stacking lines.
- NPC faces the player when a conversation starts.
- Dynamic quest authoring: the quest list is no longer a hardcoded Java constant;
quest create/deleteauthor real quests live. /noronpc goto: real-time pathfinding to a point (swims, avoids obstacles), separate from the exact-replay recording system.- Frame-replay recording: recorded paths reproduce jumps, flight, and swimming exactly, instead of Citizens' ground-only pathfinder trying (and failing) to approximate them.
/noronpc scale: resize any NPC, including player-skinned ones, via the vanillageneric.scaleattribute.- Baby/adult mob variants via Citizens' own persistent
Agetrait. - Optional quest names:
quest createno longer requires typing a display name; skip it and the id becomes the name automatically (pest-controlto "Pest Control"). - Live quest bossbar: every player with active quests sees a bossbar showing the current one's name and progress, cycling through all of them every 5 seconds if more than one is active.
- Quest-giver NPCs:
/noronpc quest assign <npc> <questId>links an NPC to a quest so talking to it auto-starts that quest, instead of requiring players to already know its id. - Smarter kill-quest tab-completion:
quest create killnow only suggests actual living mobs (not boats, minecarts, item frames, etc.), and the amount/reward arguments suggest sensible defaults. - Debounced quest-progress saves: progress changes (kills, item counts, location checks) are batched and flushed to disk every 30 seconds instead of writing
quests.ymlsynchronously on every single change, reducing main-thread disk I/O under load.