Command Block Staff 0.4.5 dev build 1 NeoForge
Curse Maven Snippet
What's new
0.4.5-dev1 — dev build
Everything since 0.4.0, first build out the door
Warning: Nothing here has been played outside a compiler. Electrify, the Defense Wall and the first-person beam all changed this week - test on a copy of your world, not your main one.
Everything since 0.4.0. The largest release so far: Create: Aeronautics support, the staff usable
in your off hand, a menu of our own, execute raycast, a settings screen that can be navigated, an
ability lock that actually locks, and the handler cut from 8481 lines to 1418.
Added
Other mods
Create: Aeronautics support. Grab one of its physics contraptions with the Beam and steer it by look, freeze it in place with Electrify plus right-click, thaw it with the un-electrify key, and rotate or lock what you are carrying.
All of it through reflection, deliberately. The simulated mod that owns those contraptions is
NeoForge and 1.21.1 only, while this add-on builds against 1.21 and ships for Fabric as well, and its
classes are not published to any public Maven — so a compile-time dependency would tie the build to a
jar that cannot exist on half the targets and does not exist as anything but a file path anywhere
else. Nothing is bundled, and with the mod absent every call is a no-op. Methods are found by name and
by handing them the real objects to see which overload accepts them, never by naming Minecraft classes:
the one we want is spelled one way under NeoForge's production mappings, another under Fabric's, and a
third in dev.
The staff aims at what it is holding. In first person the model tilts toward whatever it currently controls — a beamed mob, a beamed player, a held surface, a carried contraption. Create: Aeronautics does this with its physics staff and it reads well: the staff visibly aims at the thing rather than sitting in a fixed pose while something floats around. The angles are relative to where the camera points and clamped, because a small lead reads as aiming and a large one reads as the staff having come loose.
The staff itself
The staff works in your off hand. It used to be read out of the main hand in about eighty places, and off-hand use was blocked outright because half-supporting it was worse than not supporting it — the shield and the beam fired from the off hand while every keybind, packet and tick still looked at the main hand, so adjusting, releasing and the staff light all quietly did nothing. One helper now answers "which hand is it in", and every existing check reads the same as before while starting to work when the staff is in the other hand.
A tooltip on the staff — one line idle, the whole control list on Shift, only for a staff with a command block in it. Keys are read back from your actual bindings, so rebinding cannot make it lie. Contraption controls are listed only when the mod that provides them is installed.
Quickbinds. The bindable-action system reworked and renamed, with its own screen and its own key
(Open Quickbinds). Each action mirrors what the built-in key already does rather than
reimplementing it, so there is one copy of the behaviour and the two cannot drift apart.
Ride HUD — a flat greyscale image of your actual staff above the hotbar while you ride it. It is
the real model, rod, head and whatever is socketed in it, rendered once into an offscreen buffer and
kept as a sprite. Creative and survival keep separate positions, because survival stacks health and
hunger above the hotbar and creative does not. A white rider figure built from your own skin pixels
ships with it but is off by default (rideHudShowRider).
Commands
execute raycast <block|entity|item|all> run <command> — a staff-only addition to the custom
command language. It answers the thing that is genuinely awkward in vanilla: acting on what you are
looking at. Vanilla can select by area, by tag, by score, but "that one, under my crosshair" needs a
marker entity or a chain of positioned/facing gymnastics. The staff already knows where you aim,
so the line just says so — execute raycast entity run kill.
Command beams — short-lived beams fired at everything a command hit, drawn by the same renderer as the Beam ability, so a kill looks like the staff striking rather than like a separate effect that happens to point the same way.
Effect billboards — vanilla's own status-effect widgets floating over whoever the staff just affected.
A kill confirmation prompt, with a per-player preference to skip it. The prompt is decided on the server, where the kill happens; the preference is yours, so the client reports it on join and whenever it changes.
A server-side blacklist — blocked blocks and blocked command words. The word list applies the instant you type it rather than on Save: the rest of that screen is values you are still adjusting, but a blocked word is a rule, and bundling the two is how a rule ends up looking like it did not save.
Abilities
Fill: Replace — a third fill mode beside Solid and Air. It changes only the blocks that are already there and leaves the air alone, which is what lets you re-skin a building without filling in the rooms inside it. Separately switchable in the ability tree, so a server can disable that one mode without disabling Fill.
Tab + right-click changes the current mode's sub-mode — Place / Replace / Air inside Single Block, solid / air inside Fill, Move / Resize inside Move Surface, and the shape inside Shaper. The hint appears only where a sub-mode exists, and the click is only swallowed when there was something to change.
A projectile bar for Normal and Advanced modes — the same row of buttons Control mode has, in the same corner of the screen, stepped through with Tab + scroll. It holds no selection of its own: every frame it asks what is actually selected, so the bar, the launcher and the V menu cannot disagree.
Food joins the control-projectile pool. It is the one projectile you can catch and throw back without hurting anybody, and it was the one you could not keep.
Beam: "No need to hold" — client setting, off by default. Grab something, let go of right-click, and it stays on the beam until you click again.
Electrify reveal range — client setting, 4 to 30 blocks, 10 by default. Electrification is permanent until cleared, so a world played in for a while accumulates plenty, and drawing all of it at once is both unreadable and expensive.
The advanced electrify outline — the game's own glow traced around every part of the model rather than a bounding box. It follows the model exactly, which a box can never do.
Three Electrify server switches — show particles (on), deals damage (off), reacts to copper (off). The last two are switches over behaviour that already existed: electrified copper and water have always shocked everything within five blocks. Off by default because they change the game.
Interface
A mod menu of our own, on the title screen and the pause screen. Configure (Server settings / Client settings), Modrinth, CurseForge, Report an issue. The button is placed the way Create places its own — anchored by a widget's label rather than by geometry, so it stays put across window resizes and GUI-scale changes, and it drops one row when Create's own button is in that spot. Server settings is greyed with a reason on hover instead of failing after you click it, and the two reasons differ: from the title screen there is no server to ask; in a world without permission there is one that will refuse.
Settings grouped by ability. Three tabs — General, Abilities, HUD — with Abilities carrying a second row: Beam, Electrify, Placement, Projectile, Shield, Commands, Mixed. It replaces a "Custom" tab of eighteen unrelated sliders in which nothing told you which ability a setting belonged to.
Search and Show all, on the client screen and the server screen alike. Sub-tabs answer "where does this live", which is the right question once you know the answer; search is for "I know it is called something like wobble". The server screen gains the ability row the client one already had.
A floating panel of an ability's own settings, over the Projectile, Placement, Shield and Commands screens. Change arrow speed without leaving the launcher, opening settings, finding the tab and coming back. Drag it by its header bar, stretch it by the left, right and bottom edges, and the edge under your pointer lights up so you can tell they are grabbable. Client settings only — a server-authoritative value is not a client's to change. Switch for the whole thing in Mixed.
A drifting watermark behind the ability screens — an even sheet of white marks leaning 30 degrees, sliding forever towards the bottom right, under a dark wash.
Hue sliders for the ability boxes, selected and unselected, 0 to 360. A hue turn rather than a tint, so the frame and the highlights survive instead of going dark with the colour.
The HUD hides with F1. F1 is the screenshot key — it hides the hotbar, the crosshair, chat, everything — and an overlay that keeps drawing through it is the one thing ruining the shot, which is exactly the situation for a mod whose HUD is the interesting part of the frame.
Cosmetic
The Crown of King Orange shows on four-legged mobs. Vanilla draws head equipment through a
renderer bound to ModelWithHead, and a pig's model does not implement it — so the crown really was
on the pig and nothing ever put it on screen. Vanilla's own head-item pipeline, pointed at the head
part instead of at the interface, so the crown's authored display entry applies exactly as it already
did on a player.
Changed
- The bottom ability row moves aside for the off-hand slot when the staff is in your off hand — by 29 pixels, the width of the vanilla texture rather than a number that looked about right. Left-handed players get the mirror of it for free.
- A switched-off ability goes dark in the HUD — frame, title, icon and number together — and the ability scroll steps straight over it to the next one that works. An ability with modes counts as gone only when every mode under it has gone.
- With every ability switched off, nothing is drawn as selected. Highlighting a box that cannot do anything says the wrong thing.
- The veil over a disabled box is drawn in three bands, leaving the four corner pixels clear, so it does not square off corners the art deliberately rounds.
/commandstaff settingsno longer vanishes for non-operators. A gated command does not exist for anyone else, so typing it returned "Unknown command" — which reads as a broken mod rather than as a permission you lack. The check moved inside where it can say so; the screen still re-checks server-side before applying anything.- Electrified sparks stop after under a second instead of streaming from every electrified entity every tick, forever, in every dimension. Sparks announce that something became electrified; the reveal outline is what says it still is.
- Custom projectiles are not on the quick bar. They stay in the launcher, where they can be named and edited; on a bar you scroll past mid-fight they would mean scrolling through however many you have defined to reach the four that are always there.
- Settings screens flow into up to four columns as the list needs them, centred as a block, with rows per column taken from the window height instead of a fixed eight.
- The quickbind screen stops typing when you are plainly done: clicking empty space or a key slot drops the caret, so the next key you press becomes the binding instead of landing in the search box.
- The settings background follows where you are — it dims the world in-game and stays opaque in the main menu, where there is nothing worth showing through.
- The scroll hints disappear entirely when "Adjust needs its key" is off, rather than just dropping the key name. With the setting off there is no gesture left to teach.
Removed
- Shift + right-click no longer cycles Single Block or Fill modes. Tab + right-click already did both, so this removes a duplicate rather than a capability — and the shift version meant that sneaking near a ledge quietly changed what your next click would do.
- The
now: {mode}tail on the Single Block hint, and the per-mode hints that taught a different key for each sub-mode. Four ways to do one thing was the problem the gesture was meant to solve. - The control-pool bitmask — a packet, a client object and a registration for a feature that had lost its reader and, it turned out, never had a writer either.
- The menu-layout and ride-HUD gizmos. A debug tool left in a release is a debug tool somebody eventually opens by accident.
Fixed
- The ability lock actually locks. Disabling an ability only stopped it if it went through
use()— which is why Beam looked like the only one that respected the lock, Beam being the oneuse()ability. Everything else has at least one action driven by a packet instead: Commands casts through one, Electrify has its own click packet, the defence wall is pushed, released and re-grabbed by packets, and none of them asked whether the ability was switched off. Twenty-two more packets now check. Config, sync and request packets are left alone on purpose: reading a structure list is not doing the thing. - Show all on the server settings screen left the ability row up. It hides now, under the same two conditions as the client's — Show all on, or a search typed — and the strip it leaves says why it is empty.
- The settings panel moved sliders you never touched. It forwarded every drag to every row, and a slider takes its value straight from the pointer's x without asking whether the pointer is near it, so the smallest movement while a button was down sent every slider to the cursor. It now remembers which row took the click and forwards to that one alone.
- The mod-menu button never appeared on the pause screen in a real game. It was matched with
javaClass.simpleName, which works in the development runtime and matches nothing once the class is remapped — the same trap as a mixin without a refmap. - The mod-menu button walked down the screen on every resize. A screen re-runs
initon resize, the search for "Create's button" looked for a 20×20 square in the left gutter, and our button is a 20×20 square in the left gutter — so each resize found the previous one and placed a new one under it. - A crash when a frame had nothing to draw. Holding shift out of electrify range took the game down: the buffer throws when it is empty rather than drawing nothing. Having nothing to draw is a normal outcome, not an error. Guarded in seven renderers.
- The advanced electrify outline had been tried once before and appeared to do nothing. The hook was never the problem: entities were being dropped from the electrified set every tick by the other dimensions' ticks, so there was never anything to outline.
- The mod-menu logo was drawn with the overload that crops at 1:1 rather than scaling, so it was showing the top-left corner of a 1024-wide image.
- Pressing the Change Ability Mode key inside Shaper scrolled through shapes instead of cycling placement modes.
- The scrollbar on the Blocks tab was drawn but never grabbable.
- The search box says
Search, with a capital S, on both settings screens.
Internal
CommandBlockHandler: 8481 → 1418 lines, across thirteen files underinternal/staff/handler/ability/. Every moved body was checked character-for-character against the original and the set of names other files reach through the handler was held fixed, so no packet, mixin or screen had to be rewritten. The first seven rounds only moved companion members, which is why the handler stayed six thousand lines with seven abilities supposedly moved out — each feature's state left and its behaviour stayed. The second half fixed that.- An ability is an object now, not a number.
StaffAbilitywith six implementations, andStaffAbility.ALLas the only place that knows how many exist. Before, adding a seventh meant finding ten separate places that checked the number, and forgetting one compiled perfectly and simply did not work. - 1138 unused imports removed, then 23 more that only the IDE's symbol resolution could see; 379 blank lines closed up after the slicing; 32 delegates that no longer had callers.
This mod has no additional files

