Skip to content

Add God's Mastery item#216

Merged
iwolfking merged 8 commits into
iwolfking:masterfrom
Poor-Mans-Physicist:feature/gods-mastery
Jul 14, 2026
Merged

Add God's Mastery item#216
iwolfking merged 8 commits into
iwolfking:masterfrom
Poor-Mans-Physicist:feature/gods-mastery

Conversation

@Poor-Mans-Physicist

Copy link
Copy Markdown
Contributor

A new consumable that permanently raises the reputation caps of a player by 1, storing it in their player data and allowing charms to take reputations higher than 50. Crafted from the Core of the Vault Gods, a very rare drop from high cycle hyperboss vaults, so it shouldn't really hurt game balance. More of a fun item to grind for, not designed for anything super special at the moment. Currently doesn't have a cap, done on purpose (the soft cap is the hundreds of hours needed to grind that many), but one could be added if you want (i personally like it uncapped).

🤖 Generated with Claude Code

Poor-Mans-Physicist and others added 3 commits July 11, 2026 02:55
- New items: Core of the Vault Gods (inert shaded sphere, glowing 4-color god
  border; drops in the hyper omega injection pool at weight 1 of 613) and
  God's Mastery (4-point god-colored star, shiny awakened center; crafted from
  the core surrounded by 8 Blocks of Omega Pog).
- Shift-right-click consuming God's Mastery permanently raises the player's
  MAXIMUM god reputation with all four Vault Gods by 1 (base 50). It grants no
  reputation itself. The count lives in the player's own PlayerPersisted NBT so
  it survives death/relog and travels with the player file across sub-server
  transfers; an explicit PlayerEvent.Clone copy removes any reliance on Forge's
  built-in persistence.
- Cap plumbing: PlayerReputationData's hardcoded 50s become 50 + mastery via
  ThreadLocal-published caps (read clamp, add guard, Entry clamps), and the
  load-time legacy clamp that rewrote >50 reputation back to 50 on every server
  start is disabled - it would silently erase raised reputations. The armor/
  model unlock threshold deliberately stays at 50. GodReputationItem's max
  check honors the raised cap.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
VaultCharmItem froze charms at 50 two ways: getGodReputation clamped every
read of the stored snapshot at 50, and shouldUpdateItem early-outed whenever
stored and current were both >= 50, so the 10-tick follow-the-holder rescale
never ran for a God's Mastery player (stored 50, current 52). New
MixinVaultCharmItem lifts both constants; the update check reduces to
stored != current, so charms keep resetting to whichever player holds them,
in both directions (a 52-rep charm rescales down for a lower-rep holder).
The rescale math and snapshot flow are untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The two hand-written model jsons had no ModItemModelProvider entries, so the
next runData would have deleted them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@iwolfking iwolfking left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks fine, not sure I am sold on concept or not but I think it is fine enough to add as an additional post game activity.

I am not sold on idea of storing this data in the player's data, but that is more just because all vault/wold's vaults player data is traditionally stored in separate SavedData files and this is a bit different. I think I'd personally prefer to have it the same as usual but it's probably fine really.

I'd like to see the random comments generally removed, the AI glorp comments are generally undesirable. If Claude would like to generate proper Javadoc comments when relevant that would be nice though! This is applicable to the other PRs as well.


CRYSTAL_REINFORCEMENT = new BasicItem(WoldsVaults.id("crystal_reinforcement"), (new Item.Properties()).tab(ModCreativeTabs.WOLDS_VAULTS));
RESONATING_REINFORCEMENT = new BasicItem(WoldsVaults.id("resonating_reinforcement"), (new Item.Properties()).tab(ModCreativeTabs.WOLDS_VAULTS));
CORE_OF_THE_VAULT_GODS = new xyz.iwolfking.woldsvaults.items.CoreOfTheVaultGodsItem(WoldsVaults.id("core_of_the_vault_gods"));

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Class names should never be fully written out like this unless necessary (same class name is used from two different packages in the same class). This is applicable to the other PRs as well. I can address these but would be good to have cleaned up.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll remove the comments and clean up the class names, as well as moving the stored player data. Was vaguely confused on the way it was stored but was worried it wouldn't be properly carried over on death/server restart, but hopefully it should be safe in the SavedData files.

Poor-Mans-Physicist and others added 5 commits July 13, 2026 18:33
Review feedback on iwolfking#216: per-player progression traditionally lives in
separate SavedData files. Counts move from the PlayerPersisted NBT
subtree to PlayerGodMasteryData (woldsvaults_God_Mastery), keyed by
player UUID. The world file survives death/relog/restart on its own, so
the clone-event copier goes away entirely, and the cap no longer
depends on an online-player lookup — reputation changes for offline
players now resolve their real cap instead of assuming base 50.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…Javadoc

Review feedback on iwolfking#216: class names should not be written fully
qualified when a plain import works. Also replaces the God's Mastery
section banner in MixinPlayerReputationData with Javadoc on the two
cap-publishing injectors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Union-resolves the item/datagen registration conflicts with the merged
greedy ticket (iwolfking#215); master's lines are kept verbatim.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Re-sorts the merged lang keys and adds the gods_mastery recipe-unlock
advancement, which the branch was missing (its datagen had never run
with the recipe provider registered).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The empty redirect body speaks for itself; its Javadoc explains why the
legacy clamp is skipped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@iwolfking
iwolfking merged commit e8c739d into iwolfking:master Jul 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants