kayjaydee c2b1f3a73b fix(04-bugfix): move wand JSON to Server/Item/Items/ and clone Weapon_Wand_Root template
Empirical findings from HytaleServer.jar decompile + Assets.zip introspection:
- AssetRegistryLoader.loadAssets0() resolves each plugin asset-pack root to
  <root>/Server/, then iterates AssetStores and loads from
  Server/<assetStore.getPath()>/. For the Item AssetStore, path is
  'Item/Items'. So the wand JSON MUST live at Server/Item/Items/.
- The previous src/main/resources/Items/gravityflip_wand.json path was
  never scanned: the loader would look at <jar>/Server/Item/Items/.
- Key function is Item::getId with item.id = blockTypeKey (filename minus
  .json). So file 'gravityflip_wand.json' -> lookup id 'gravityflip_wand'.

JSON content cloned from vanilla Weapon_Wand_Root.json (extracted from
HYTALE SERVER/Assets.zip), which is the minimal wand template:
- Categories: ['Items.Weapons'] -> shows up in builder/creative menu.
- Icon/Model/Texture reuse vanilla wand assets (no custom art shipped).
- PlayerAnimationsId: Wand -> proper holding animation.
- ItemSoundSetId: ISS_Weapons_Wand -> pickup/drop SFX.
- Utility.Compatible=true and Weapon={} keep it functional in builder tools.
- Interactions.Primary/Secondary are inline {Type: GravityFlipWand} objects,
  which the plugin's CodecRegistry(Interaction.CODEC).register call binds
  to GravityFlipWandInteraction.CODEC (04-01 pattern, Finding 3).
2026-04-24 15:34:55 +02:00
S
Description
Gravity Flip lets you create anti-gravity regions on your Hytale server using a wand — no scripting, no file edits, no server restarts. Want to walk on the ceiling? Place two corners, name the region, and flip the world.
274 KiB
Languages
Java 100%