diff --git a/src/main/java/com/mythlane/gravityflip/wand/spike/WandAssetSpike.java b/src/main/java/com/mythlane/gravityflip/wand/spike/WandAssetSpike.java deleted file mode 100644 index 7720566..0000000 --- a/src/main/java/com/mythlane/gravityflip/wand/spike/WandAssetSpike.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.mythlane.gravityflip.wand.spike; - -/** - *

04-00 Spike artifact — NOT WIRED INTO THE PLUGIN.

- * - *

This class is intentionally not referenced from - * {@code GravityFlipPlugin}. It exists purely as an executable-looking - * documentation of the empirical investigation that produced - * {@code .planning/phases/04-wand-commands/04-00-SPIKE-RESULT.md}. - * - *

Locked decision (see SPIKE-RESULT.md): we will not register - * a brand-new {@code Item} asset store from a plugin — no decompiled builtin - * plugin does that, and it risks duplicating the core's Item store. Instead, - * Plan 04-01 will: - * - *

    - *
  1. Subclass {@link com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction} - * as {@code GravityFlipWandInteraction} with its own {@code BuilderCodec}.
  2. - *
  3. In {@code GravityFlipPlugin.setup()}, call: - *
    {@code
    - *       getCodecRegistry(Interaction.CODEC)
    - *           .register("GravityFlipWand",
    - *                     GravityFlipWandInteraction.class,
    - *                     GravityFlipWandInteraction.CODEC);
    - *       }
    - * This is the pattern used by PortalsPlugin:74, CreativeHubPlugin:149, - * InstancesPlugin:158, CraftingPlugin:130, TeleporterPlugin:73, - * ObjectivePlugin:210-211 — 8+ builtin precedents.
  4. - *
  5. Plan 04-02 will identify the concrete vanilla itemID to hand out in - * {@code /gravityflip wand} by iterating - * {@code Item.getAssetStore().getAssetMap()} at runtime (disposable - * probe), then hardcode the chosen itemID (likely a hatchet/axe variant - * that already exposes Primary + Secondary interactions).
  6. - *
- * - *

The code below is illustrative only. It compiles against stubs in - * javadoc and is not invoked. Delete this class at the start - * of Plan 04-01. - * - *

Why VANILLA_COPY and not a brand-new Item JSON?

- * - *

Hypothesised pattern (rejected): - *

{@code
- * // UNPROVEN: no builtin plugin does this for Item.class.
- * getAssetRegistry().register(
- *     HytaleAssetStore.builder(Item.class, Item.ASSET_MAP)
- *                     .setPath("Items")
- *                     .build());
- * }
- * - *

User-confirmed pattern (adopted): - *

- * « On peut copier un item vanilla genre la hache et changer des propriétés - * genre couleur etc. » — 2026-04-23 - *
- * - *

Copy an existing vanilla item (hatchet / pickaxe / sword — anything - * exposing {@code Primary} + {@code Secondary}) and hijack the click - * behaviour via the {@code Interaction.CODEC} registry. Visual polish - * (custom colour / display name) can be layered later without blocking v1. - */ -public final class WandAssetSpike { - - /** Not callable. Not invoked. Documentation-only. */ - private WandAssetSpike() { - throw new UnsupportedOperationException( - "WandAssetSpike is a 04-00 documentation artifact. " - + "See .planning/phases/04-wand-commands/04-00-SPIKE-RESULT.md. " - + "Delete this class at the start of Plan 04-01."); - } -}