HomeJavaModsEIZZOs-NPCs
EIZZOs-NPCs
EIZZOs-NPCs — screenshot 1EIZZOs-NPCs — screenshot 2

EIZZOs-NPCs

Packet-Based NPC System with intelligent movement, branching dialogue, combat mechanics, and per-player state tracking.


🎯 Features

🤖 Advanced NPC System

🎭 Dialogue System

⚔️ Combat & Tracking

🎨 Customization

💰 Reward Integration


📝 Commands

Command Permission Description
/npc eizzo.npcs.admin Open NPC list GUI
/npc help - Show help menu
/npc debug eizzo.npcs.admin Toggle debug particles (8-block cube visualization)
/npc create <id> <name> eizzo.npcs.admin Create new NPC at your location
/npc list eizzo.npcs.admin Open NPC list GUI
/npc delete <id> eizzo.npcs.admin Permanently delete NPC
/npc set <id> <property> <value> eizzo.npcs.admin Set NPC properties (see below)
/npc tp <id> [world x y z yaw pitch] eizzo.npcs.admin Teleport NPC to your location or coords
/npc addcmd <id> <command> eizzo.npcs.admin Add interaction command/action
/npc clearcmds <id> eizzo.npcs.admin Clear all commands from NPC
/npc dialog <id> <node> [token] [player] Admin/Token Execute dialogue node (console use requires player arg)

NPC Set Properties

Property Type Description
name String Display name (supports MiniMessage)
type EntityType Mob type (VILLAGER, ZOMBIE, SKELETON, PLAYER, etc.)
skin String Player username or PNG filename in skins/ folder
trackingmode NONE/STILL/FOLLOW Tracking behavior
trackingrange Double Detection range in blocks
hostile true/false Attacks players in range
cape true/false Show cape for PLAYER type NPCs
collision true/false Players can collide with NPC
npccollision true/false NPCs collide with other NPCs
flying true/false No gravity, 3D movement
returntospawn true/false Returns to spawn when player leaves range
nametag true/false Nametag visibility
sound Sound key or "none" Sound on interaction (e.g., ui.button.click)
godmode true/false Takes no damage
respawndelay Integer Ticks before respawn after death (20 = 1 second)
runmode op/console/player Command execution mode
location world x y z yaw pitch Manual location setting

🔐 Permissions

Permission Description
eizzo.npcs.admin Full access to all NPC commands and editor GUIs

Note: All commands except /npc help require admin permission. Dialogue execution requires either a valid session token OR admin permission.


🛠️ Configuration

Main Config (config.yml)

config-version: 1.1

tracking:
  max-range: 50.0              # Server-side culling range (cube)

database:
  type: "sqlite"               # "sqlite" or "mysql"
  host: "localhost"
  port: 3306
  database: "minecraft"
  username: "root"
  password: ""
  pool-size: 10                # MySQL only

logging:
  dialogue-to-console: true    # Log dialogue executions

rewards:
  enabled: true
  max-amount: 1000.0           # Maximum reward per kill
  use-vault: true              # Enable Vault economy
  use-eizzos-tokens: false     # Enable EIZZOs-Tokens
  vault-message: "<green>+ ${amount} <gray>(NPC Kill)"
  token-message: "<gold>+ {amount} {currency} <gray>(NPC Kill)"

Database


🎬 Interaction Mechanics

Player Interactions

Combat System

Weapon Damage Scaling:

Hostile Mode:


💬 Dialogue System

Dialogue Actions

Actions are executed in order, one per line in dialogue nodes:

Action Format Description
[msg] [msg] Hello %player%! Send formatted NPC message
[wait] [wait] 2.5 Pause dialogue for N seconds
[sound] [sound] entity.villager.ambient Play sound effect
[choice] [choice] Option1=next_node | Option2=another Show clickable buttons (generates tokens)
[listen] [listen] [world] x y z Wait for player to move to specific block
[reward] [reward] Give Vault/Token rewards to player
[home] [home] world x y z yaw pitch Teleport NPC to location
[jump] [jump] Apply upward velocity (1.6 blocks/tick)
[set] [set] property1=value; property2=value Override NPC properties for this player

Dialogue Once Mode

When enabled, tracks which nodes each player has viewed:

Token Security


🚶 Movement & Physics

Tracking Modes

Mode Behavior
NONE NPC doesn't track; stays at spawn
STILL Rotates head to face player but doesn't move
FOLLOW Pathfinds toward player with collision avoidance

Physics Constants

Collision System


🎨 Skin System

Player Skins

/npc set <id> skin Notch

Custom PNG Skins

  1. Place PNG file in plugins/EIZZOs-NPCs/skins/
  2. Run /npc set <id> skin filename.png
  3. Plugin uploads to Mineskin API for texture conversion
  4. Texture applied to NPC automatically

📦 Equipment & Armor

Equipment is stored per-slot in the database:


💰 Reward System

Vault Economy

rewards:
  use-vault: true
  vault-message: "<green>+ ${amount} <gray>(NPC Kill)"

EIZZOs-Tokens Integration

rewards:
  use-eizzos-tokens: true
  token-message: "<gold>+ {amount} {currency} <gray>(NPC Kill)"

Reward Limits

# In NPC properties
rewardLimit: 10  # Max 10 claims per player (0 = unlimited)

📚 Examples

Simple Merchant NPC

/npc create merchant "Merchant Bob"
/npc set merchant type VILLAGER
/npc set merchant trackingmode STILL
/npc set merchant trackingrange 5
/npc set merchant sound entity.villager.trade
/npc addcmd merchant [opengui] merchant_shop

Hostile Guard NPC

/npc create guard "Castle Guard"
/npc set guard type ZOMBIE
/npc set guard hostile true
/npc set guard godmode false
/npc set guard trackingmode FOLLOW
/npc set guard trackingrange 15
/npc set guard vaultreward 50.0

Quest NPC with Dialogue

Create an NPC with branching dialogue:

  1. Create NPC:

    /npc create questgiver "Quest Master"
    /npc set questgiver type PLAYER
    /npc set questgiver skin Notch
    /npc set questgiver trackingmode STILL
    
  2. Edit via GUI:

    • Sneak + Right-Click the NPC
    • Navigate to "Dialogue Editor"
    • Create start node:
      [msg] <yellow>Greetings, traveler!
      [wait] 1.5
      [msg] <gray>I have a quest for you.
      [choice] Accept Quest=quest_accept | Decline=quest_decline
      
  3. Add Follow-Up Nodes:

    • quest_accept node:
      [msg] <green>Excellent! Bring me 10 diamonds.
      [sound] entity.player.levelup
      [player] quest accept diamond_quest
      [reward]
      
    • quest_decline node:
      [msg] <red>Perhaps another time...
      [sound] entity.villager.no
      

Moving NPC with Physics

Create an NPC that jumps to a platform:

/npc create jumper "Parkour Pro"
/npc set jumper type PLAYER
/npc addcmd jumper [msg] Watch this!
/npc addcmd jumper [wait] 1
/npc addcmd jumper [jump]
/npc addcmd jumper [wait] 1
/npc addcmd jumper [home] world 100 75 200 0 0

IMPORTANT: When using [home] or [jump] in dialogue, the plugin automatically clears cached location to prevent snap-back bugs.


🔧 Troubleshooting

NPC not spawning?

NPC snapping back to spawn?

Dialogue choices not working?

Skin not loading?

Combat not working?

Rewards not giving?

NPCs not tracking players?


⚠️ Important Notes

Critical Gotchas

  1. Per-Player Health: Killing an NPC for one player doesn't affect other players' views
  2. Packet-Based: NPCs are not actual entities; Bukkit.getEntity() won't find them
  3. Spectator Exemption: Spectator players never trigger tracking/combat
  4. Config Indentation: YAML is extremely sensitive; use 2 spaces, never tabs
  5. Dialogue Timeouts: 60-second timeout on [choice]/[listen] actions
  6. Token Dependency: Soft dependency on EIZZOs-Tokens; logs warning if missing

Range System

Database


📄 License

Part of the EIZZOs plugin suite for Minecraft multiplayer networks.


Version: 1.1.1 Minecraft: 1.21.1 (Paper) Author: EIZZO

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more