Everything you need to know to load Xenon Hub and get the most out of it. Start here if it is your first time, or jump to a specific section if you are looking for something particular.
Xenon Hub runs entirely through your executor. Paste the loader below into the console after joining a Jujutsu Shenanigans server and run it. That is all there is to it.
Open Roblox and get into a Jujutsu Shenanigans server. Wait for it to fully load before you do anything else.
Open your executor and attach it to Roblox. Wave is the most compatible option but others work too.
Paste the script above into the console and hit execute. The UI opens automatically on the Auto Block tab.
Go to UI Settings and use the SaveManager section to save your config. It loads automatically next time.
Most features work on any UNC compliant executor. A small number of the more advanced features need specific functions that not every executor provides.
| Executor | Compatibility |
|---|---|
| Potassium | Full support, recommended (paid) |
| Velocity | Full support, recommended (free) |
| Astroid | Full Support (New executor) |
| Delta | Full Support, recommended (Mobile) |
| Others | Works if UNC compliant, some features may be limited |
When the script loads it checks what your executor supports and shows a notification if anything is missing. Features that need those functions get quietly disabled rather than breaking everything else.
After executing you will see the Obsidian UI. Press
Y by default to open and close it. You can change this
keybind in the UI Settings tab.
Auto block watches every character in the game and blocks incoming attacks for you based on what animations they are playing. It handles a wide range of situations including multi hit combos, grabs, projectiles, and domain exposure.
| Setting | What it does | Default |
|---|---|---|
| Max Distance | How far away enemies trigger a block | 30 studs |
| Chase Distance | Distance limit for dash and chase animations | 50 studs |
| Anti Fake Dist | Max reach for melee validation checks | 16 studs |
| Facing Angle | How directly the enemy must face you for melee to count | 100 degrees |
| Hold After Hit | Seconds to stay blocking after getting hit | 0.3 seconds |
Lock on keeps you facing your target automatically. It runs every frame so it stays accurate even through dashes and fast movement. Prediction is optional but makes a noticeable difference if you turn it on.
You can combine multiple methods at once using the extra methods dropdown. Most people run Camera plus Character together.
The Lock Target Filter section in the Misc tab lets you build a whitelist or blacklist of players. Whitelist mode means only listed players can be locked. Blacklist mode excludes specific players from targeting. Useful for protecting friends or focusing specific enemies in a team fight.
There are two versions. The standard one triggers after divergent fist animations play and handles timing automatically. The legit version (premium) dashes around the target on an arc first, lands behind them, then fires the black flash at the right moment so it looks like a player doing it.
Record any sequence of button presses and save it. Play it back on demand with a keybind or from the UI. Combos save to files so they persist between sessions and can be shared with other people.
Hit Start Recording in the Combo tab. From that point every key press and click gets captured including timing.
Click M1, press ability keys, dash, whatever. Everything is recorded exactly as you do it including any pauses between inputs.
Click Stop Recording, type a name in the box, and hit Save. The file saves automatically and shows up in the combo select dropdown.
Pick it from the dropdown, set a keybind if you want, and press play. Speed and stop conditions are adjustable from the same tab.
The Advanced Combo tab has its own simple scripting language for when you need more than a recorded replay. You can add conditions, loops, waits, lock on commands, and more. This is a full reference for every command.
| Syntax | What it does |
|---|---|
| { | Start combo lines |
| } | End combo lines |
| // | Note line, script will ignore it |
| Command | What it does |
|---|---|
| checkchar(name) | Only continue if your current character is this name |
| lockclosest(number) | Lock to nearest enemy. You can set max distance optionally |
| lockselected() | Lock to the player you picked in dropdown (LBB / AB) |
| settarget(mode_or_name) | Pick target by mode or by name |
| unlock() | Remove lock target |
| Command | What it does |
|---|---|
| key(name, number) | Press a key, optional hold time |
| press(name, number) | Same as key |
| m1() | Left click attack |
| m2() | Right click attack |
| block() | Hold block |
| unblock() | Stop blocking |
| Command | What it does |
|---|---|
| wait(number) | Wait this many seconds |
| waitforanimend() | Wait until attack animation is done |
| waitforattackanim() | Same as waitforanimend() |
| waithit(number) | Wait for hit. Default timeout is 1.25 |
| stopif(condition) | Stop combo if condition is true |
| if(condition) then (command) | Run command only if condition is true |
These check your own character state. You can use either the full name or the shorthand alias.
| Condition | What it checks |
|---|---|
| inult | You are in ult |
| dead | Your character is dead |
| needburst / burst | You can use burst while stunned or ragdolled |
| ragdolled / ragdoll | You are ragdolled |
| stunned / stun | You are stunned |
| blocking / block | You are blocking |
| notblocking / unblocking | You are not blocking |
| lowhp | Your HP is low (35% or less) |
| whiffed / whiff | Your last attack missed |
| thirdparty | Another enemy is close |
| hitanim / hit | Hit animation was found |
Add enemy at the end to check the enemy state instead
of your own.
| Condition | What it checks |
|---|---|
| inultenemy | Enemy is in ult |
| deadenemy | Enemy is dead |
| needburstenemy / burstenemy | Enemy can burst while stunned or ragdolled |
| ragdolledenemy / ragdollenemy | Enemy is ragdolled |
| stunnedenemy / stunenemy | Enemy is stunned |
| blockingenemy / blockenemy | Enemy is blocking |
| notblockingenemy / unblockingenemy | Enemy is not blocking |
| lowhpenemy | Enemy HP is low (35% or less) |
| whiffedenemy / whiffenemy | Enemy missed (same whiff check logic) |
| thirdpartyenemy | Enemy has another player close |
| hitanimenemy / hitenemy | Enemy has hit animation or hit state |
1 2 3
4 r q
f e
space w
a s
d
playadvcombo(raw) reads your combo one line at a
time.
The script automatically detects mobile and adjusts how it works. Lock on targets the closest player to the center of the screen rather than the mouse position. Ability buttons fire by slot number instead of keyboard keys.
In the UI Settings tab, pick any toggles from the Show on Mobile dropdown. Then click Toggle Mobile UI to put draggable buttons on the screen for each one. You can move them around by dragging, and lock their positions once they are where you want them.
Everything saves into the XenonHub folder inside your executor workspace. Here is what each file does.
| File | Purpose |
|---|---|
| XenonHub/JJS/*.json | Named UI configs saved from the SaveManager |
| XenonHub/combos/*.json | Saved combo recordings |
| XenonHub/mobiletoggles.json | Which toggles show as mobile buttons |
| XenonHub/mobilepositions.json | Where you dragged the mobile buttons |
| XenonHub/tplocations.json | Custom saved teleport positions (premium) |
| XenonHub/JJS/Songs/ | Audio files for the Hakari music replacement |
JJS changes animation IDs when they patch things. The script gets updated to match. Just re execute and you will be on the latest version.
Use the whitelist mode in the Lock Target Filter section to restrict it to specific players. Or enable Locked Target Only in the Auto Block tab so everything respects the same target.
Try lowering the Dash Delay slider by 0.05 at a time until it lands. Higher ping usually needs a lower delay value. Enable Auto Angle as well since it helps the approach path.
A notification on load will list any functions your executor does not have. Features that need those functions get disabled. Switching to Wave fixes most of these cases.
Adjust the speed multiplier in the Combo tab. Higher values speed up playback. If inputs are dropping, enable Wait For Animation so each step waits for the previous attack to finish before moving on.