884a8cea0b
Build / build (push) Has been cancelled
Post-review fixes from the parallel code/security/hotkey/NPC audits. ## #35 — NBT keys (CRITICAL: screens were showing fictional data) ServerEconomyBridge.pushBountySnapshot now reads the actual KubeJS keys: - bnsBountyPool (compound id->1) — was bnsBounties.pool - bnsBountyActive (compound id->{progress,target,reward,...}) — was bnsBounties.active - bnsBountyCompleted (compound id->long cooldown-end-ms) — was bnsBounties.completed - Filters completed by `cooldown-end > now` so old cooldowns drop off ServerEconomyBridge.pushPlotSnapshot now reads server-scope state via KubeJS's MinecraftServer mixin (kjs$getPersistentData) using reflection, no compileOnly dep on KubeJS. Falls back to empty CompoundTag if the method isn't there. Resolves owner names from PlayerList for online players, GameProfileCache for offline. ## #36 — Hub UI + key rebind Single primary key: B opens HubScreen. Direct shortcut keys (K/J/N/H/M) all default to UNBOUND so they no longer compete with the ~100 other pack mods. Audit found M = vanilla Social Interactions + FTB Chunks fullscreen map (hard conflict, removed); H/N collided with Voice Chat toggles (minor, removed); K/J were safe (kept rebindable for power users). New HubScreen routes to the 5 sub-screens via labelled buttons + shows tier/balance/fee at a glance in the header. ## #37 — /bns open <screen> Java-registered Brigadier subcommand at RegisterCommandsEvent time, merges with KubeJS's /bns root. New OpenScreenPacket (S2C) pushes a screen open to the calling player. Screens: hub, tier, bounty, plot, shop, questlog. Suggests valid screens via tab-complete. This unlocks: - Easy NPC dialogue COMMAND actions calling /bns open shop, etc. - FTB Quests reward commands - Command blocks / /trigger objectives - Future scripted intros / tutorials Also: patched /srv/fast/brass-sigil-server/server/config/easy_npc/ security.cfg to allow `bns` in executeAsUserCommandAllowList.ALL. ## #38 — Network hardening - Per-player token bucket on C2S packets (10/s sustain, 20 burst). - All STRING_UTF8 codecs capped: kind=8, args=80, which=16. - Verb whitelist replaced with structured parse: args -> tokens -> per-verb regex validators -> rebuilt command. No more prefix-match surprises if /bns sell syntax expands. - Per-player in-flight guard on tier upgrades (500ms) closes the double-spend race window. - Bridge logs sanitised (control-char-stripped) so a hostile client can't inject newlines/ANSI into server logs. ## Review-driven nits also folded in - Per-player tickCount (was shared static — N-player skew) - VillagerTradeRebalance: try/catch around inner.getOffer; null cost-A passthrough; round-to-nearest denom split (was floor, ~10% price haircut) - SpurHud caches Component refs (avoid 120/s allocation) - ClientBnsState.completedIds now HashSet (O(1) per-frame lookups) - BountyBoardScreen: deleted the empty `if (isActive)` dead branch - Wire-format version bumped 0.2 -> 0.4 (added OpenScreenPacket) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
24 lines
681 B
Properties
24 lines
681 B
Properties
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
|
org.gradle.jvmargs=-Xmx2G
|
|
org.gradle.daemon=true
|
|
org.gradle.parallel=true
|
|
org.gradle.caching=true
|
|
org.gradle.configuration-cache=true
|
|
|
|
# Parchment mappings (parameter names + javadocs)
|
|
parchment_minecraft_version=1.21.1
|
|
parchment_mappings_version=2024.11.17
|
|
|
|
# Environment Properties — must match the live BNS server
|
|
minecraft_version=1.21.1
|
|
minecraft_version_range=[1.21.1]
|
|
neo_version=21.1.228
|
|
loader_version_range=[1,)
|
|
|
|
## Mod Properties
|
|
mod_id=bnstoolkit
|
|
mod_name=Brass and Sigil Toolkit
|
|
mod_license=All Rights Reserved
|
|
mod_version=0.4.0
|
|
mod_group_id=uk.sijbers.bnstoolkit
|