wh_npcs-forge-1.20.1-1.0.0.jar
Curse Maven Snippet
What's new

Without Honor: NPCs, Update 1.0.0
I get modern developers who keep adding feature after feature and pushing the release back. I could do that forever too, but I think it’s finally time. The main thing about 1.0.0 is that the mod now supports three versions: Forge 1.20.1, NeoForge 1.21.1 and Fabric 1.21.1. All future updates will come out on all of them at once. An enormous amount of tedious work went into this, so please put this version through its paces and share your impressions and any bugs you find. But besides a ton of unexciting technical stuff, there are some fun new features too.
In the next version, I’ll go through your suggestions, polish up 1.0.0, and take a shot at the long-awaited TaCZ integration for 1.20.1.
🤫 Before you update
- Client and server must both run 1.0.0. 0.9.x clients can't join a 1.0.0 server.
- Back up your world and exports. Rolling back to 0.9.x isn't supported: dialogues, profiles and presets are now saved in a new format, and NPC reactions live under a new key.
Minecraft 1.21.1: NeoForge and Fabric

- Three builds of one version: Forge 1.20.1, NeoForge 1.21.1 and Fabric 1.21.1. Features are the same; integrations differ. Fabric has no Iron's Spells, Epic Fight or Etched, since those mods have no Fabric versions for 1.21.1. Accessories on Fabric go through Trinkets instead of Curios. Sable ships are 1.21.1 only, ragdolls are NeoForge only.
- Files travel both ways. Dialogues with triggers, profiles and presets open in both 1.20.1 and 1.21.1. A file from a newer mod version gives a warning on import, not an error.
- The server config on 1.21.1 is shared by all worlds: config/wh_npcs-server.toml (on 1.20.1 each world has its own). A world moved from 1.20.1 keeps using its old serverconfig/wh_npcs-server.toml. Delete that file to switch to the shared one. On Fabric, config edits apply after you restart the world.
Reactions: "When → If → Then" rules

I replaced the four old reaction lists (hurt, death, right-click, approach) with rules. A rule has three parts: WHEN is an event with filters, IF is a set of conditions, THEN is a chain of steps with branches. On top of that come "To" (who receives the steps) and "Frequency". The editor opens with the "Reactions →" button on the "Behavior" tab.
- 33 events. About the NPC itself: hurt, died, crossed a health threshold, got a kill, saved by a totem, fight started and fight over, following, riding, schedule point, dialogue, trade, timer, changed dimension. About nearby players: came near and walked off, right-clicked the NPC, killed a mob, died, picked up, dropped, used an item, crafted, mined a block, stats (jumps, sleep, fishing, chests and about twenty other game counters), joined, respawned. About the world: a creature died, an NPC fell, entered a biome, weather changed, time of day (including your own HH:MM), the NPC spotted a creature.
- Event filters: radius, "Which player" (any, the leader, not the leader), "In sight only", creatures and biomes by id and by group (monsters, undead, bosses, ocean, Nether and more). "More ▸" holds "Every Nth time" and "Within, s".
- Conditions: all dialogue conditions plus 8 new ones: "NPC state", "Event creature", "Distance", "Biome", "Dimension", "Light level", "Players nearby", "Player pose". The new ones, except "Event creature", also work in dialogues and triggers.
- Steps: all dialogue actions plus new ones: "Run away", "Look at", "Apply effect to NPC", "Play sound at NPC", "Knock down" (with ragdolls). There is logic as well: "If…" with "yes" and "no" branches, "Pick at random" (up to 8 options with weights), "Stop here". "Run command" can run without a player, as the NPC with permission level 2.
- Placeholders in texts and commands: @ player, @ npc and event roles: @ subject (the attacker, the victim, the creature spotted), @ item, @ place, @ amount, @ count. Commands get ids instead of names.
- "To": the triggering player (default), the nearest, the leader, everyone near (up to 8, each separately) or no one. With no player around, a rule stays quiet unless "OK without player" is checked. "Frequency": a cooldown in seconds, a limit per game day, per life or in total, a chance, and a count that is shared or kept per player. While the NPC has a dialogue open, new rules stay quiet unless "Also during dialogue" is checked.
- The editor lays out the chain by itself: "+" between steps, a right-click menu, copying rules and steps between NPCs, Ctrl+C/V/D, undo up to 30 edits. Limits: 64 rules, 32 steps per rule, 16 conditions per list.
- Templates (12 of them: greets players, says goodbye, fears a creature, praises kills, calls for help and more) ask for the key setting right after you insert them. "Check" finds mistakes and takes you to the node. "Test ▾" runs a rule right now: "Dry run" only lists the steps, "For real" performs them. "Log" shows what is going on with the NPC's rules: fired, waiting for its cooldown, chance failed, a condition was false.
- Old reactions are read automatically and shown as ordinary rules. They still fire while a dialogue is open, as before. The old "Reactions" screen is gone; the death emote moved to "Death scene →" in the reaction editor.
- Server load. In a world with no rules, reactions add a single check. Sensors (players nearby, creatures, biome, weather) run only on NPCs that have such rules. An NPC gets at most 8 events per second. The server config has four new settings: reactionsEnabled, reactionScanBudget, reactionsMaxPerTick, reactionCommands.
Water, ladders and an NPC's own boat

- On the surface. Currents push an NPC gently instead of carrying it off. In water an NPC swims at player speed, floats chin-deep and turns smoothly. An NPC swimming after a player no longer keeps turning back.
- The "Swimming →" screen on the "Behavior" tab gathers everything about water. "Board player's boat" moved there too.
- "Dive after the leader" (on): when the leader goes under, the NPC dives after them and swims lying flat, like a player. In the top block of water it swims upright. "Walk on the bottom" (on): when the leader walks along the bottom, the NPC walks beside them and swims over obstacles.
- "Uses up air" (off, experimental): the NPC uses up air, surfaces to breathe, can drown and drinks Water Breathing from its belt on its own. Where there is nowhere to surface, a teleport to air saves it. "Stays under in combat" (off): while there is an enemy, the NPC fights underwater and risks drowning.
- Ladders. NPCs climb ladders and vines on their own: up and down, onto a ledge, in from above and from the side, through a trapdoor. Following, the path to a schedule point and chasing use ladders when there's no other way. The "Ladders" button: "When needed" (default), "By accident" (climbs only when it bumps into one, like before) and "Never".
- Own boat ("Summon its own boat", off). The player is in a boat, and the NPC can't get in with them: no room, a chest boat, or the NPC is too far. Then the NPC summons its own boat and follows, keeping its place behind; it gives way and lands next to the player on shore. Once there's room in the player's boat, it switches over. You can pick any vanilla or modded boat in the pack; unusual ones (Boatload's furnace and large boats, Small Ships and the like) don't qualify. Nobody can get into the NPC's boat; it can't be damaged and disappears like a pet. Log out in a boat and back in, and the NPC is back in its boat.
- "Wait here" on water. With its own boat, the NPC waits in it at anchor, and the current doesn't carry it off.
- For pack makers: the item tag wh_npcs:own_boats adds a boat that its mod doesn't put in #minecraft:boats, and wh_npcs:own_boats_excluded removes a boat from the choice.
Hunger and food

A new screen: "Behavior" → "Hunger & Food →". Everything is off by default.
- ""Feels hunger": its own food bar from 0 to 20 with saturation, like a player's. An empty bar has no penalty. "Drains in" ranges from 1 to 240 minutes (20 by default), three times faster in combat, while running and in water. "Eats when food level is below" defaults to 12 of 20.
- Food: up to 6 kinds in slots, and it never runs out. Food effects roll with the same chances as for a player (golden apple, rotten flesh). Only effects listed in the food's properties apply, so a chorus fruit doesn't teleport the NPC, and effects the item applies itself (suspicious stew, modded wine) don't reach the NPC.
- "Heals slowly when well fed": at food level 18 or higher, a hurt NPC regains 1 health every 4 s.
- How it eats: food in hand, crumbs, sound. It doesn't eat in combat or for 15 s after, while fleeing, while talking or trading, in water, on a ladder or asleep. When following the leader, it eats during stops, and on the move only when very hungry. A sip of a potion interrupts eating.
- An NPC in a custom pose (the "Pose" tab or a schedule point's pose) doesn't eat. With Emotecraft, it also doesn't eat while it has an idle or schedule point emote. The screen warns about that.
- For pack makers: NPCs never eat food from the item tag wh_npcs:npc_food_excluded, and it doesn't show up in the picker. The tag ships empty; a datapack can add any food to it.
Potion Belt
- The healing threshold and the pause between healing potions are now set separately for combat and out of combat: 40% and 5 s, 80% and 15 s. Only healing has a pause.
- "Drink like a player" (off): the NPC drinks for 1.6 s with sips and the potion in hand, walks slower and doesn't attack. Off means it drinks instantly, as before.
Odds and ends

- Shift+RMB on a companion NPC toggles "wait / follow me again". The red "stay here" button in the dialogue window is gone.
- "Crouch with the player" (off): when the leader sneaks, the NPC crouches too. Sculk sensors don't hear it, and mobs notice it from closer.
- Companions leave the End together with the player: after the credits they appear next to them.
- After going through a portal, an NPC can enter a portal again after 5 s (it used to be 15 s).
- Schedule points remember their dimension. An NPC in another dimension skips such a point instead of walking to the same coordinates there. The list shows a colored dimension icon next to each point.
- **The trade window closes by itself if the NPC dies, disappears or changes dimension, and if the buyer moves more than 8 blocks away. Payment goes back to the inventory. While the window is open, the NPC stands still and looks at the buyer.
- Trade counters reset only when the list of deals has actually changed.
- Clone Book: right-click an NPC with the book to save it to the book as a preset (operators only).
- List of NPCs in the world. Clicking the NPC icon next to a dialogue or the counter next to a faction opens a list of all such NPCs, unloaded ones included, with search and sorting. "TP" takes you to the NPC, "✎" opens its editor. Every way of teleporting to an NPC (/whc tp, "Global NPCs") lands you in the same spot: in front of the NPC, facing it.
- Sable ships (NeoForge and Fabric). An NPC stands and walks on deck, follows the player on a moving ship, and if it falls behind it teleports right onto the deck. "Wait here" on a ship holds the post and rides along with the ship. Memorion's Feather, the Relocation Staff and the NPC Spawner work on ship blocks.
- Ragdolls (Sable: Ragdolls, NeoForge only). The ragdoll button on the "Behavior" tab shows up when the mod is installed. "Like mobs": the NPC goes ragdoll whenever ragdoll mods decide so (with Ragdoll Reactions, on a heavy hit) and gets up by itself. "Ragdoll on death": when the NPC dies, its body falls and it dies a couple of seconds later, in place of the death emote. The "Knock down" action and step drop the NPC on command when "Like mobs" is on. Everything is off by default.
Dialogue groups
In the "Dialogues" tab of the NPC editor:
- Groups with a name, a color and an icon. The folder button creates a group and moves the selected dialogues into it. Groups start collapsed, and the collapsed state is remembered. Without groups, the list looks the same as before.
- Multiple selection: Shift for a range, Ctrl for one at a time, Ctrl+A for everything visible (Cmd on Mac).
- Drag and drop: drag dialogues into a group; reorder groups by dragging or with "Move up", "Move down", "Move to top", "Move to bottom".
- Right-click menu on a row, a group header and empty space: open, move to group, rename, add to favorites, pin, export, delete, color and icon, new dialogue in group.
- Deleting several dialogues takes one confirmation that lists the NPCs whose entry points will break. "Export to PC" handles up to 64 dialogues at once.
Writing this, I realize the list is huge, and maybe two and a half people will actually read it. So let’s put it this way: some more stuff got added, and a lot of stuff got fixed. Enjoy the game :D
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

