Expected result#
The console shows NexaSpoofer enabled, the data folder contains generated configuration, and /nexaspoofer status responds.
Follow the practical path from installation to your first fake player, then enable each activity module when you are ready. Every feature guide shows the menu path, command, expected result and the first checks to make when it does not work.
Install the plugin, start the server once, and confirm the licensed runtime loaded before configuring features.
plugins/NexaSpoofer/config.yml; never post your key in a screenshot or support ticket.api-version: 1.21. Use a compatible Paper build and Java 21.plugins/. Do not replace a running jar.license-key in config.yml, save, then restart so startup validation reads the new key./nexaspoofer hooks.The console shows NexaSpoofer enabled, the data folder contains generated configuration, and /nexaspoofer status responds.
Read the first NexaSpoofer error, check Java 21 and the license, then inspect the YAML file named by the error. Continue with Troubleshooting.
Next: complete First Setup. Keep SQLite unless you already have a reason to use shared SQL.
Smart Setup saves required server choices and shows which optional features are configured.
/nexaspoofer setup or /nexaspoofer setup menu. You can also run /nexaspoofer gui, then click Smart Setup./nexaspoofer setup status.READY: configured and usable.PENDING: required choice or item is missing.DEGRADED: limited or optional provider unavailable.NOT_REQUIRED: that optional feature is disabled or unused.INVALID: saved value failed validation.The server process is READY after both target and spawn are set. The overall status may say READY WITH OPTIONAL SETUP while remote AI or other optional features are unused.
Need YAML keys? Use Configuration Files after the first fake works. Next, verify startup.
Check core readiness first, then inspect only the providers needed for the feature you want.
/nexaspoofer setup status and /nexaspoofer status. Overall labels include READY, READY WITH OPTIONAL SETUP and ACTION REQUIRED./nexaspoofer hooks; read the provider capabilities and detail line./nexaspoofer modules, or open Main Menu → Modules./nexaspoofer verify prints the normal report, verify full includes more detail, and verify export creates a redacted support snapshot./nexaspoofer verify test or the feature-specific Manual Intent Tester only when the server is safe for the actions it may perform.A valid license, working storage, at least one fake profile and a usable runtime. AI and third-party providers are optional until enabled.
Follow its detail. Server setup needs a target and spawn; Commerce needs an enabled item and channel. See Troubleshooting.
Next: verify one identity in Your First Fake Player.
Create one profile, spawn it at the saved location, check it, then remove it cleanly.
/nexaspoofer gui → Open Profile Generator from the main menu. Its Count button cycles 10, 25 or 50; run /nexaspoofer generate 1 when you want exactly one test profile./nexaspoofer spawn <name>./nexaspoofer list; try /nexaspoofer say <name> Hello everyone to test public chat./nexaspoofer quit <name>. Use remove <name> only when you intend to delete the saved profile.The profile appears in Fake Players, reports online in /nexaspoofer list, and its NPC is visible at the saved route when physical presentation is available.
Check /nexaspoofer runtime, the saved world, profile NPC Representation and hooks. Tab presentation is separate; see Fake player invisible or missing from tab.
Next: set the daily population curve in Online Count & Schedule.
Roll out one activity at a time so you can identify which setting or provider changes the result.
/nexaspoofer status./nexaspoofer status, hooks, the Web Control Center and /nexaspoofer audit activity 20.Profile and count → chat/AI → provider-backed activity → broader schedule. Pause if a status is unexpected.
Disable its module or pause its Intent Engine controller. Keep provider settings unchanged while you capture status and audit detail.
Next: check Provider Setup and Global Commerce.
Profiles are saved identities with settings and stats. They form the pool from which the scheduler can bring fakes online.
/nexaspoofer generate 10 creates a batch./nexaspoofer list lists online fakes./nexaspoofer spawn <name> spawns one./nexaspoofer quit <name> disconnects but keeps its profile./nexaspoofer remove <name> removes the profile.Profiles persist after restart. Only spawned profiles or profiles selected by schedule count as online.
Check generator output and total profile limit, then refresh Fake Players. See Profile does not spawn.
Choose the target fake population for each hour and let the schedule reconcile it.
/nexaspoofer status and compare current and target counts after an update interval.Online population approaches the current hour's target. A smaller pool or blocked spawn can keep it below target.
Check timezone, hour override, both toggles, available profiles and /nexaspoofer runtime. See Target count does not change.
Choose where physical NPCs may spawn and which worlds or regions they may enter.
The activity pipeline runs enabled behaviors such as chat, welcome, votes and provider-backed actions. Enable supported modules one by one.
/nexaspoofer invisible is not an enable switch. The current command returns the not-ready response. Manage supported behavior in Modules and each feature's settings./nexaspoofer activity and /nexaspoofer modules.Connect an AI provider for contextual replies, or keep the Scripted provider when you do not want an external API.
/nexaspoofer ai status./nexaspoofer ai test <fake> <message> as a player, or Manual Tester → Chat / AI → AI Reply.Provider Status identifies the chosen provider and the test produces a result. Remote AI can remain optional while scripted chat works.
Check provider, key resolution, Base URL, Model and mute status, then test again. See AI scripted fallback or no response.
config.yml. Language and knowledge files are separate; see Configuration Files.The engine chooses a feasible next activity for each fake from its profile, current session and available providers.
/nexaspoofer intent status./nexaspoofer intent inspect <fake> and /nexaspoofer intent logs./nexaspoofer intent force <fake> <type> requests one intent but still respects feasibility and safety checks.ACTIVE evaluates and executes allowed intents.SHADOW records decisions without executing them.DISABLED turns off Intent Engine decisions.An evaluation is queued, then the fake shows a current intent or an idle/rejection reason. Provider activity only runs when the relevant settings and resources allow it.
If an action is infeasible, check its provider and item in Global Commerce; do not force it repeatedly.
Run one production-style action through the dedicated NexaTestBot and inspect each stage.
/nexaspoofer manualtest as a player or click Manual Intent Tester in Main Menu. intenttest is an alias.PENDING waiting; RUNNING in progress.SUCCESS completed; FAILED action or verification failed.BLOCKED precondition/provider/safety prevented it.SKIPPED later stage was not applicable.Lock ordinary fake-player entry while keeping real players and NexaTestBot available. Use the GUI or /nexaspoofer manualtest lock|unlock.
A BLOCKED result may mean a safety check worked. Fix the displayed precondition and check cleanup before retrying.
Optional integrations use detected public APIs. Check the provider and its capabilities before enabling dependent activity.
/nexaspoofer hooks.The intended provider is detected and its needed capability appears in /nexaspoofer hooks.
Check provider version and startup logs, restart, then recheck. See the Provider Matrix.
One shared catalog feeds Auction, Trade and Orders. Set up an item once, then enable only its needed channels.
items.yml entry.The item shows enabled for the chosen channels. Setup readiness stops reporting a missing item when a usable provider and enabled channel exist.
Check /nexaspoofer hooks, the selected provider and economy provider, then verify both item switches.
Continue to Auction, Trade or Orders. The catalog does not place a listing by itself.
Configure fake listings and purchases through the selected native auction provider, shared catalog and stock limits.
/nexaspoofer hooks./nexaspoofer auctionbots, review Economy Safety and enable Auction Activity./nexaspoofer audit auction 20.Use a native Trade provider, shared item definition and profile configured to buy or sell it.
/nexaspoofer hooks./nexaspoofer tradebots; then Fake Players → profile → Trade Editor.yes or evet when prompted to open the native session./nexaspoofer audit trade 20.The native UI opens and the tester reports completion or a blocked result after it closes. Open Empty Trade is expected to be blocked without a real offer.
Complete/cancel the provider UI, confirm offer and fake inventory/balance, then read the result. Scripted AI text alone is not a completed trade.
Create, inspect, deliver or cancel provider-owned orders. The selected provider remains the source of order state.
/nexaspoofer hooks./nexaspoofer audit order 20.The tester re-queries provider state and verifies the lifecycle. Cancel-own-order is blocked when NexaTestBot owns no active order.
Check economy provider, native order capability, item channel and stock. Adapters may support only some operations; do not assume every lifecycle action exists.
Each integration has its own profile editor and Manual Tester page.
/nexaspoofer hooks.Expected: provider interaction/reward result is shown.
/nexaspoofer audit activity 20.Expected: provider/listener receives the native event.
/nexaspoofer hooks.Expected: relay succeeds only with provider/channel configured.
Connect a practice provider and its modes to fake profiles. Queue display and real provider queue actions are separate.
/nexaspoofer practice to see status or /nexaspoofer practice gui to open its menu. In Smart Setup → Practice, choose the detected provider./nexaspoofer hooks.Bot Validation resolves a provider/mode to a valid TrainingBot profile. A queue count alone does not prove a real queue admission.
Check provider mode, mapping and TrainingBot profile. See TrainingBot Setup.
Map each supported Practice mode to a real TrainingBot profile, then bind a fake to that mapping.
/nexaspoofer trainingbot is deprecated; use /nexaspoofer practice./nexaspoofer hooks.Configure fake claim activity through Lands or GriefPrevention, then test create/inspect/delete before enabling it.
/nexaspoofer hooks.Tester reports provider, world, location and size, then confirms deletion. Unsafe placement is blocked.
Check provider readiness, allowed worlds, costs, size and distance constraints. See Lands claim blocked.
Verify the hook before enabling the behavior that depends on it.
/nexaspoofer hooks reports provider, capabilities and detail.Update the provider, read its startup log, restart and recheck. Installed does not mean selected or capable. See the Provider Matrix.
Compare deterministic Intent Engine decisions before enabling autonomous actions.
/nexaspoofer simulationlab run 10m 42 requests ten minutes with seed 42./nexaspoofer simulationlab status after the queued run completes.Inspect fake profiles, conversations, intent history, activity and provider-backed systems in the embedded dashboard.
/nexaspoofer panel; it prints RUNNING/OFFLINE, URL and last error.Operations Center loads at the URL printed by the command and refreshes live snapshots.
Read the last error, inspect web/web-panel.yml, port and allowed origins. Use localhost first; do not disable authentication to expose it.
web/web-panel.yml. The panel exposes /api/v1 and a live event stream. See docs/web-panel.md.Make one change, apply the matching reload/restart boundary, and verify the affected feature.
/nexaspoofer reload for supported config, messages and menu changes.SQLite is the default for one server. MySQL or MariaDB can be configured for shared persistence.
storage.type: sqlite in config.yml unless you have a migration plan./nexaspoofer storage and /nexaspoofer status; confirm profiles load after restart.config.yml, restart, and keep the old backup until the new DB is verified.A single server does not need distributed ownership. Proxy display counts and fake ownership transfer solve different problems.
network.yml on participating backends./nexaspoofer network and /nexaspoofer proxy; confirm owner and destination.Increase activity only after measuring the server with its real player load and provider set.
/nexaspoofer status.You can identify the workload change and metrics return toward baseline when that module is paused.
Pause the newest module, reduce target and inspect logs before raising memory. See RAM or tick time increases.
Short paths for common goals. Leave unrelated modules disabled.
Start with the symptom. Run the command shown, follow the menu path, then repeat the verification.
Check: Java 21, first console error and /nexaspoofer license.
Fix: replace the placeholder key in config.yml, correct named YAML errors, then restart. Never share the key.
Verify: plugin completes enable and /nexaspoofer status responds. See Installation and License.
Check: /nexaspoofer setup status and Smart Setup → Server & NPC.
Fix: set Player Count and save NPC Spawn in the intended world. Optional integrations can remain NOT_REQUIRED.
Verify: server setup row reads READY. See First Setup.
Check: /nexaspoofer list, /nexaspoofer runtime, route and hooks.
Fix: confirm profile exists, world/location is allowed and NPC Representation is correct. Tab presentation is separate; check TAB/ProtocolLib hook.
Verify: profile is online and NPC appears in allowed world. /nexaspoofer invisible is not ready. See First Fake Player and NPC Locations.
Check: current hour/timezone, override, Auto Join and saved profile count.
Fix: set the target with left-click or reset inherited hour with right-click. Enable Auto Join after spawn is ready and generate enough profiles.
Verify: compare current/target in /nexaspoofer status after an update interval. See Schedule.
Check: /nexaspoofer ai status, AI provider, key, Base URL, Model and mute state.
Fix: correct required fields and run one AI test or Manual Tester AI Reply.
Verify: provider status identifies the selected route; scripted reply is not proof remote AI worked. See AI Chat.
Check: /nexaspoofer intent status, intent inspect <fake> and intent logs.
Fix: follow the displayed reason, check provider/item and use ACTIVE if execution is expected. Repeated force requests do not bypass feasibility.
Verify: evaluate once and read the next trace. See Intent Engine and Simulation Lab.
Check: hooks, setup status, provider capabilities, item master/channel and remaining stock.
Fix: select a capable provider, enable exact channel and review Economy Safety on staging.
Verify: rerun matching scenario and confirm provider state. See Global Commerce and feature guides.
Check: native session is still open and the offer contains a configured item.
Fix: finish/cancel the UI, confirm fake inventory/balance, then read the result after close. Empty offer should be blocked.
Verify: provider transaction and /nexaspoofer audit trade 20. See Trade.
Check: Manual Tester Test Setup → Crate Location/Key, profile Crate Editor and provider hook.
Fix: use a valid test crate/key; check whether prior attempt consumed it.
Verify: provider log and test result. See Crates.
Check: hooks, Practice mode mapping, TrainingBot profile list and bot Validation.
Fix: map each bot-enabled mode to an existing profile; enable Practice Activity and the selected bot.
Verify: Queue Test or Manual Tester shows a native provider session. See Practice and TrainingBot.
Check: claim hook, selected provider, enabled world and test stage detail.
Fix: move the test anchor to an allowed point; review distance, size and provider costs.
Verify: Create → Inspect → Delete on staging. See Claims.
Check: server MSPT/TPS, /nexaspoofer status, latest module and Web Control Center System.
Fix: pause newest activity, reduce online target, compare metrics; do not raise limits before finding the source.
Verify: metrics return toward baseline. See Performance.
Check: /nexaspoofer panel URL and last error.
Fix: inspect web/web-panel.yml, port, token and allowed origins; start with localhost.
Verify: command reports RUNNING and printed URL loads. See Web Control Center.
Still stuck? Follow the Support Checklist and include exact command, expected result and actual result.
Use the GUI for routine setup and these commands for quick checks, focused actions and support reports.
/spoof and /fakeplayer also point to /nexaspoofer./nexaspoofer opens GUI for a player; console sees status.gui, setup, setup status.status, hooks, modules, license, storage.verify [full|test|export] for checks/report.generate <count>, list, spawn <name>.quit <name|all> disconnects; remove <name> deletes.say <name> <message> tests chat.runtime [test|cleanup] checks runtime.ai [status|mute|unmute]; ai test <fake> <message> is player-only.intent status|list|logs.intent inspect <fake>.intent pause|resume|cancel|evaluate <fake>.intent force <fake> <type>.manualtest or intenttest opens tester for a player.auctionbots and tradebots open activity menus; practice gui opens Practice, while practice shows status.simulationlab run <duration> <seed>.panel starts dashboard and prints URL.audit [type] [limit], reload.trainingbot is deprecated.Add the root prefix to subcommands: /nexaspoofer intent status. Console can run status and diagnostics; menu commands require a player.
Permission names and defaults come from plugin.yml. Admin nodes default to op; grant only what each staff role needs.
nexaspoofer.admin inherits only child nodes explicitly listed in plugin.yml; it is not a wildcard./lp group helper permission set nexaspoofer.admin.status true
/lp group helper permission set nexaspoofer.admin.hooks true
/lp group helper permission set nexaspoofer.admin.verify true
/lp group tester permission set nexaspoofer.admin.manualtest true
/lp group tester permission set nexaspoofer.admin.audit truenexaspoofer.admin.gui, .setup, .status, .hooks, .modules..generate, .spawn, .list, .quit, .remove..ai, .intent, .manualtest, .simulationlab..auction, .trade, .commerce, .practice, .crate..panel, .network, .storage, .audit.nexaspoofer.bypass.hidden and .bypass.cooldown are for trusted admins.Check exact feature nodes in src/main/resources/plugin.yml. The root admin node defaults to op.
Each bundled YAML file owns one settings category. These are the current resources shipped by NexaSpoofer; old one-file examples from earlier releases may no longer be active.
| File | Owns | Notes |
|---|---|---|
config.yml | License, setup state, target, module toggles, player counts, schedules, AI/chat, activity, storage, safety and runtime policy. | Core settings. Finish Smart Setup before expecting profile provisioning. |
hooks.yml | Optional plugin integrations, provider priorities/selections, adapter capabilities and TrainingBot provider/mode mappings. | Provider choice and integration settings live here. |
items.yml | Commerce item definitions, price modes, market weighting, dynamic-pricing thresholds and per-item stock limits. | Owns shared auction, trade and order item/stock data. |
intent-engine.yml | Engine mode, candidate feasibility and scoring, evaluation pacing, lifecycle, opportunities, resource coordination and chains. | Bundled mode is ACTIVE; SHADOW records decisions without provider mutations. |
personalities.yml | Personality presets and intent scoring modifiers. | Controls behavior style without changing provider safety checks. |
network.yml | Proxy synchronization, server identity, Redis transport, fake-player leases and distribution. | Keep network synchronization disabled until the target proxy/Redis setup is configured. |
web/web-panel.yml | Embedded control-center binding, authentication, origins, history retention, event buffers and view flags. | Bind/port changes require a restart. |
skins.yml | Bundled skin/profile selection and skin source settings. | External skin lookup is cached and performed outside the main-thread gameplay path. |
database/memory.yml | Persistent fake-player memory behavior and retention settings. | SQL data is stored by the selected database backend. |
languages/en/messages.yml and languages/tr/messages.yml own player-facing messages; language knowledge files supply AI context.languages/<language>/scripted.yml owns scripted chat pools and their hook requirements.menus/**/*.yml owns GUI titles, slots, icons, lore, visibility rules and configured menu actions.plugin.yml declares the command, alias and permission surface bundled in the jar.AI provider, model, API-key environment-variable and response settings are part of config.yml; there is no separate root ai.yml in the current resource set.
enabled: true
mode: ACTIVE
evaluation:
idle-min-delay: 3s
idle-max-delay: 8s
lifecycle:
enabled: true
min-wander-before-first-intent: 45s
min-wander-between-intents: 30s
selection:
maximum-candidates: 6Use /nexaspoofer intent mode <DISABLED|SHADOW|ACTIVE> to change the live engine mode, or edit this file for the persisted setting.
Legacy trainingbot.yml and older standalone practice-mapping files are migration inputs. Current provider and TrainingBot mappings are owned by hooks.yml; randomized practice pool membership is stored in fake-profile metadata. The menu file menus/core/safety.yml is a GUI layout, not a separate safety configuration file.
Config and menu reloads merge missing defaults and keep existing values. Restart after changing the jar, license, storage driver/credentials or web-panel bind/port.
Player-facing and admin-facing messages live in language packs. Bundled packs: en and tr. The plugin loads languages/<lang>/messages.yml and languages/<lang>/knowledge.yml.
/nexaspoofer reload. Restart after jar, storage or license changes.Edit the generated language file in the plugin folder, keep placeholders intact, then run /nexaspoofer reload for normal message updates. Switch the active pack with language: "tr" in config.yml.
<gray>[<gold>NexaSpoofer</gold>]</gray> prefix
<red>Error message</red>
<green>Success message</green>
{player} {target} {message} {reason} {key} {detail}languages/en/messages.yml. The generated file contains many more message keys.prefix: "<gray>[<gold>NexaSpoofer</gold>]</gray> "
missing-message: "<red>Missing message: <key></red>"
no-permission: "<red>You do not have permission.</red>"
player-only: "<red>Only players can use this command.</red>"
unknown-command: "<red>Unknown subcommand. Use <yellow>/nexaspoofer help</yellow>.</red>"
feature-not-ready: "<yellow>That feature is planned but not implemented in this part yet.</yellow>"
command-error: "<red>That command could not be completed. Check console for details.</red>"Placeholder safetyKeep placeholders such as <key>, <detail>, {player} and {target} intact. A deleted placeholder renders as raw text instead of crashing.
Theme colorsGlobal theme palette lives in config.yml under theme (primary, secondary, success, warning, error hex colors).
Open the dashboard, then choose the named panel for your task. Player menus open in-game.
/nexaspoofer or /nexaspoofer gui as a player. Console can use status commands.Main Menu → Fake Players → select a profile. Editors cover identity, rank, personality, NPC presentation, Inventory, Practice, Auction, Trade, Economy, Vote, Crate, Claim and Orders.
Server & NPC sets profile, count and spawn. Providers selects integrations. Other pages configure Commerce, Practice, Economy, AI, Claims and LuckPerms Ranks.
Layouts are under menus/. Back up before editing and run /nexaspoofer reload for supported changes.
The persistent nexaspoofer expansion reads service snapshots and does not run database or network work for each placeholder request.
%nexaspoofer_online% # displayed count; alias: total
%nexaspoofer_fake% # active fake-player count
%nexaspoofer_real% # real-player count
%nexaspoofer_target% # current fluctuation target
%nexaspoofer_max% # displayed maximum
%nexaspoofer_tab% # active profiles used by tab state
%nexaspoofer_server_list% # displayed server-list count
%nexaspoofer_profile_count% # stored profile total
%nexaspoofer_ping% # viewed player/fake ping
%nexaspoofer_ai_status%
%nexaspoofer_license%
%nexaspoofer_storage%
%nexaspoofer_runtime_mode%
%nexaspoofer_runtime_provider%
%nexaspoofer_physical_runtime_status%
%nexaspoofer_physical_runtime_available%
%nexaspoofer_physical_active%%nexaspoofer_simulation_mode%
%nexaspoofer_simulation_status%
%nexaspoofer_nms_npc_world_policy%
%nexaspoofer_anchor_world%
%nexaspoofer_practice_status%
%nexaspoofer_practice_queue%
%nexaspoofer_practice_queue_nodebuff%
%nexaspoofer_practice_queue_nodebuff_ranked%
%nexaspoofer_random_practice_status%
%nexaspoofer_random_practice_queue%
%nexaspoofer_random_practice_matches%
%nexaspoofer_trainingbot_status%
%nexaspoofer_leaderboard_balance_1_name%
%nexaspoofer_leaderboard_balance_1_score%Per-kit practice placeholders also support _ranked, _unranked, _min and _max. Leaderboard forms are %nexaspoofer_leaderboard_<metric>_<position>_<name|score|position>%.
%nexaspoofer_economy_status%
%nexaspoofer_economy_vault_status%
%nexaspoofer_economy_total_balance%
%nexaspoofer_economy_average_balance%
%nexaspoofer_economy_top_player%
%nexaspoofer_economy_top_balance%
%nexaspoofer_proxy_status%
%nexaspoofer_proxy_local_fake_online%
%nexaspoofer_proxy_network_fake_online%
%nexaspoofer_proxy_network_displayed_online%Proxy/Redis exposes additional local and network aggregate values. Unknown identifiers return no value. Use the current PlaceholderAPI section in the plugin's feature reference when you need the complete family list.
Each integration explains purpose, required/optional status, setup steps and troubleshooting. Hook detection runs through HookService; a missing or failing hook logs SEVERE/WARNING but never disables the plugin.
softdepend where applicable. Native API bridges are promoted only after target server QA. Check the live registry with /nexaspoofer hooks.Purpose: Routes fake chat actors through NexaChat's formatting pipeline via its public fake-actor API.
integrations.nexachat.enabled: true in hooks.yml./nexaspoofer hooks and confirm the adapter reports ready./nexaspoofer say <name> hello.If the hook reports DISABLED_BY_CONFIG, check the toggle in hooks.yml. API compatibility is reported by the hook; NexaSpoofer does not reflect into NexaChat internals.
Purpose: Sends fake tablist entries with skin, ping and display-name metadata, with batched packet updates and clean removal on reload/disable. Real players receive replayed entries on join.
Troubleshooting: If tab entries do not appear, confirm ProtocolLib supports your server build, check modules.tablist and tablist.enabled, then run /nexaspoofer hooks for the adapter state.
tablist.ping.min/max for believable ping values.Purpose: Registers the %nexaspoofer_*% expansion for scoreboards, TAB, websites and external displays.
/nexaspoofer hooks and confirm placeholder registration.Purpose: NexaAuctions provides market scan, buy, bid and cancel through the native AuctionApiProvider. NexaTrade completes fake-seller trades through NexaTradeApi.completeFakeSellerTrade only. Orders use the provider-owned Order service: NOrder exposes native create, own-cancel and query, while FoOrders and BlazeZ Order fail closed when the required safe public lifecycle artifact/capability is unavailable.
Troubleshooting: Confirm the installed provider build exposes the documented API; /nexaspoofer hooks shows per-provider capability detail.
Purpose: Read-only native market scan hooks for item and price context.
Safety: These providers never mutate the market; auction listing/buying/bidding remains disabled unless a verified native mutation provider is selected.
Purpose: Detected through plugin.isEnabled() and included in auction-activity.hook-priority. Native surfaces appear when the providers expose verified APIs.
Safety: Detected-only plugins provide status; they do not mutate markets on their own.
Purpose: Safe practice queue counts, real queue state reading, kit awareness and bot-match activity surfaces. StrikePractice gets a native queue join, kit and queue state reader plus command adapter.
Safety: NexaSpoofer avoids blind private queue mutation. Placeholder-only and command-safe paths are preferred unless a target API is verified in your environment.
Troubleshooting: If queue counts look wrong, check per-kit min/max values, queue type and whether the target hook runs in placeholder, command or native mode.
Purpose: Spawns mapped TrainingBot-backed opponents from fake profiles, applies rating tiers, saves match results and cleans up after testing or match end.
Troubleshooting: Confirm TrainingBot is installed, the selected provider/mode mapping is configured in hooks.yml, and the referenced global profile exists in TrainingBot. Combat behavior and movement belong inside that plugin's own profile config.
Purpose: Fake crate opening activity through native openCrate APIs, feeding crate chat categories and invisible crate traces.
Setup:
plugins/ExcellentCrates/crates/, CrazyCrates: plugins/CrazyCrates/crates/)./nexaspoofer hooks.runtime.mode: "PHYSICAL"). Spawn one with /nexaspoofer spawn <name> before testing.crate-hooks section to config.yml when you want to change defaults:crate-hooks:
enabled: true
priority:
- "ExcellentCrates"
- "CrazyCrates"
ExcellentCrates:
enabled: true
native-api: true
ignore-restrictions: true # bypass key/permission requirements for fake players
ignore-animation: false # skip the opening animation for faster fake opens
CrazyCrates:
enabled: true
native-api: true
key-type: "free_key"
event-type: "event_crate_force_opened"
crate-id-aliases: # map display names to real crate ids
"Vote Crate": "vote"
command-fallback: # only used when no native provider is available
enabled: true
hooks:
generic:
enabled: false
command: "crate givekey %player% vote 1"
run-as: "CONSOLE" # CONSOLE or PLAYER
require-target-plugin: true
plugin: "ExcellentCrates"Usage: When the activity scheduler runs a crate action, NexaSpoofer reads the provider's crate list, picks the profile's preferred crate (set it in the profile editor's Crate GUI by cycling available crates) or a random one, opens it through the native API and chats a line from activity.actions.crate.messages. Test with the Crate editor Test Crate Open button or /nexaspoofer event crate.
Command fallback placeholders: %player%, %player_uuid%, %crate%, %crate_id%, %reward%. Dangerous commands (op, deop, stop, restart, reload) are always blocked.
Troubleshooting: If the GUI shows No Crates Available, no crates are defined in the crate plugin. If a test open fails silently, the fake player is not spawned as a physical entity.
Full guide: docs/integrations-setup.md.
Purpose: Routes fake vote activity through the selected vote provider's supported native API so the reward plugin receives its normal vote path.
Configuration: Provider selection, service-name allowlist and adapter toggles live under providers.vote in hooks.yml. Command fallback is provider-specific, empty and disabled by default; do not use the retired vote-hooks or fake-votes config blocks.
Usage: Enable vote activity for the profile in the Vote editor, confirm the selected adapter with /nexaspoofer hooks, then test through the Vote editor or /nexaspoofer event vote. The native vote path updates the profile counter and emits NexaVirtualVoteEvent.
Troubleshooting: If the provider is unavailable, check its installation, hook selection and API capability. If the event arrives but rewards do not, verify the reward plugin accepts the service identity and named/offline vote source configured by the server.
MythicMobs: reads active boss data only - no synthetic boss data is generated. Configure mythicmobs-hook.max-active-bosses and boss-identifiers when bosses do not use boss bars.
LuckPerms: resolves prefix/suffix for fake ranks and tab display names.
AuthMe: physical runtime auto-login bridge; keep disabled unless physical mode is actually used.
Purpose: Relays configured combat or practice feed lines when the detected DiscordSRV adapter has a usable API or command path. The integration is disabled by default.
All integration settings belong in hooks.yml, under integrations.discordsrv. Current defaults leave the toggle off, relay command blank and feed flags disabled.
integrations:
discordsrv:
enabled: false
relay-command: ""
relay-combat-feed: false
relay-practice-feed: falseEnable only the feed you use, set the exact server-tested console relay command when needed, then confirm capability state with /nexaspoofer hooks. Keep Discord credentials in DiscordSRV's own configuration. Feed relay follows supported activity; /nexaspoofer invisible is not implemented.
Purpose: Chat-format compatibility, tablist compatibility, economy writes, region queries for movement/spawn filters.
Missing hooks are shown in status output and should never stop startup.
Purpose: Optional packet interception and island-activity placeholders. These surfaces report status and participate where configured; none is required to boot.
Version matrix and the honest status of every integration surface.
| Requirement | Minimum | Notes |
|---|---|---|
| Java | 21 | Hard requirement. Plugin will not enable on older JVMs. |
| Server | Paper/Spigot 1.21 | api-version: 1.21, POSTWORLD load. Full Folia support is not claimed for entity-heavy modules. |
| NexaSpoofer v1.0.0 | 1.21.x + Java 21 | LicenseGate startup validation; ProGuard-obfuscated release. |
| Plugins | Varies | ProtocolLib must match your server version; Vault needs an economy provider. |
| Integration | Status | Behavior |
|---|---|---|
| NexaChat | Native API | Zero-reflection fake actor bridge for formatted fake chat. |
| NexaAuctions | Native API | Market scan, buy, bid and cancel through the local API. |
| NexaTrade | Native API | completeFakeSellerTrade for fake-seller trades. No virtual fallback. |
| EventPractice | Native API | Safe capability detection; no blind private queue mutation. |
| StrikePractice | Native API | Queue join, kit and real queue state reader + command adapter. |
| TrainingBot | Native API | Kit mapping, rating tiers, spawn tests and cleanup. |
| zAuctionHouse / AxAuctions | Native read | Read-only market scan hooks; no mutation or command fallback. |
| TAB | Native API | Tablist layout integration with event handlers. |
| MythicMobs | Native API | Active boss data only; no synthetic boss data. |
| LuckPerms | Native API | Prefix/suffix resolution for fake ranks and tab names. |
| TokenManager | Native API | Token economy operations through the static API. |
| ExcellentCrates / CrazyCrates | Native API | Shared crate hook service for fake crate openings. |
| PlayerPoints | Native (single reflective call) | PlayerPointsAPI via getAPI(), direct calls after. |
| PlaceholderAPI | Optional expansion | Registers the %nexaspoofer_*% expansion. |
| ProtocolLib | Optional adapter | Fake tablist entries with skins and ping. |
| AuthMe | Reflection adapter | Physical runtime auto-login. |
| NuVotifier / VotifierPlus / VotingPlugin | Reflection dispatch | Real VotifierEvent vote dispatch; command fallback when absent. |
| CoinsEngine / ExcellentEconomy | Reflection adapter | Cached MethodHandle against the obfuscated economy plugin. |
| Vault | Detect | Economy service detection and write-through bridge status. |
| DiscordSRV / InteractiveChat / LPC | Detect | Relay, chat format compatibility and prefix-format observers. |
| SuperiorSkyblock2 / BentoBox | Detect | Island activity placeholder surfaces. |
| WorldGuard | Detect | Region query for movement/spawn filtering. |
| packetevents | Detect / scaffold | Optional packet interception. |
| Physical Runtime / NMS Practice NPC | Internal | NMS-based runtime; Minecraft reflection is required and scoped. |
provider-specific native APIs, capability adapters and detection-only hooks. Hook-related exceptions are logged but never disable the plugin.
Premium builds validate a LicenseGate key at startup, before expensive runtime services start. The enable banner shows the license status.
license-key in config.yml, keeping the quotes: license-key: "YOUR-KEY".LICENSE, empty keys and obvious invalid keys are rejected - invalid startup disables the plugin safely.config.yml, not another generated YAML file.license-key: "YOUR-KEY-HERE"
debug: false
color-format: "legacy"/nexaspoofer reload does not re-validate licensing runtime state.Protect the license key and audit credentials, and keep economy risk under explicit control.
license-key out of shared configs and screenshots.api-key-env environment loading.nexaspoofer.admin.emergency and nexaspoofer.admin.spawn.physical should be owner-only.nexaspoofer.bypass.hidden, nexaspoofer.bypass.cooldown) go to trusted staff only.security.op-only-admin or admin-uuid-whitelist for extra restriction.safety:
require-admin-confirmation-for-real-economy: true
real-economy-confirmed: false
max-money-injected-per-day: 500000
max-real-player-purchases-per-day: 25
audit-log:
enabled: trueThese settings are in config.yml. Real-economy actions remain confirmation-gated, caps bound exposure and allowed or blocked actions are recorded in the audit log. Auction/order provider operations still use their verified native APIs.
NexaSpoofer registers NexaSpooferApi through Bukkit Services and exposes a focused IntentEngineApi surface for addon developers.
Optional<NexaSpooferApi> api = NexaSpooferApiProvider.get();
api.ifPresent(service -> {
long fakeOnline = service.fakeOnline();
SpoofCountSnapshot counts = service.countSnapshot();
service.say("ExampleFake", "hello");
});Core profile, count, runtime, hook, storage and AI status methods are available on the service. Newer API methods also expose intent state, setup readiness, resolved settings, player memory, simulation runs, network snapshots, immutable player observations and telemetry.
NexaSpooferAddon.IntentEngineApi for current intent state, explainable snapshots, provider/planner registration and opportunities.Lifecycle events cover fake profile creation, join, quit, removal and the physical runtime path. NexaActivityPreEvent provides the cancellable gate before supported activity execution, while NexaActivityPostEvent reports the result. AI response and count-change events are emitted by their corresponding service paths.
The NexaVirtual* event classes are addon contracts. They are not all emitted automatically: only an implemented module path that explicitly calls an event emits it. The native virtual vote event and delivered fake-chat paths are examples of active event sources. Check the event's source path before relying on it as a complete record of provider activity.
net.ritomasss.nexaSpoofer.api; avoid internal package dependencies.Short answers for server owners.
Yes. The Scripted provider works without a remote API key.
No. Select a provider, configure a Global Commerce item/channel and test it first.
No. Target, profile pool, physical runtime and tab presentation are separate.
Queue presentation and provider-backed actions are separate. Native actions need a usable provider.
Yes. Its descriptor marks Folia support. Check optional providers on your exact server build separately.
SQLite is the default for one server. A multi-backend network needs planned shared storage and ownership.
Product release notes grouped by version. Public notes are written for buyers and server owners, not as raw commit logs.
Initial premium release line for NexaSpoofer.
A reproducible report helps identify the provider or configuration step that failed.
/nexaspoofer verify export first if available.Plugin version:
Server jar and build:
Java version:
Storage backend:
Setup status:
Feature and menu path:
Provider and hook status:
Command or Manual Tester scenario:
Expected result:
Actual result and stage:
Audit output:
First relevant console error:
Changed YAML file names (values redacted):
Community support: discord.gg/fANhQcyA7X. Screenshots help with GUI issues; provider/config failures need exact text output too.