Skip to content

Possession_Items.json

Unariginal edited this page Sep 4, 2026 · 1 revision

Possession_Items.json

Defines items representing Rotom's appliance "possession" forms (Fan, Heat, Wash, Frost, Mow, and the base Light Bulb) — each one is simultaneously a hand item that can be applied to a matching Pokémon and a placeable block that Pokémon can be applied to (or removed from) in the world. Located at GenesisForms/items/key_items/possession_items.json.

📄 Full default file
{
  "rotom_fan": {
    "placeable": true,
    "species": ["rotom"],
    "feature_name": "appliance",
    "feature_value": "fan",
    "lore": ["<gray>This item can be possessed by a certain pokemon!"]
  },
  "rotom_microwave_oven": {
    "placeable": true,
    "species": ["rotom"],
    "feature_name": "appliance",
    "feature_value": "heat",
    "lore": ["<gray>This item can be possessed by a certain pokemon!"]
  },
  "rotom_lawn_mower": {
    "placeable": true,
    "species": ["rotom"],
    "feature_name": "appliance",
    "feature_value": "mow",
    "lore": ["<gray>This item can be possessed by a certain pokemon!"]
  },
  "rotom_refrigerator": {
    "placeable": true,
    "species": ["rotom"],
    "feature_name": "appliance",
    "feature_value": "frost",
    "lore": ["<gray>This item can be possessed by a certain pokemon!"]
  },
  "rotom_washing_machine": {
    "placeable": true,
    "species": ["rotom"],
    "feature_name": "appliance",
    "feature_value": "wash",
    "lore": ["<gray>This item can be possessed by a certain pokemon!"]
  },
  "rotom_light_bulb": {
    "placeable": true,
    "species": ["rotom"],
    "feature_name": "appliance",
    "feature_value": "null",
    "lore": ["<gray>This item can be possessed by a certain pokemon!"]
  }
}

Top Level

Field Type Description
<item_id> object A single possession item/block, keyed by its own item ID (e.g. rotom_fan). This ID is also the in-game item ID (genesisforms:<item_id>) and doubles as the block ID for its placeable form.

Item Object

Field Type Description
placeable boolean Whether this item's block form can actually be placed in the world. When false, the block is registered but canPlaceAt always rejects placement — the item still exists (and can still be applied by hand to a Pokémon), it just can't be placed down.
species string array The Pokémon species this item can be applied to. Matched case-insensitively; used by canUseOnPokemon for the hand-item interaction.
feature_name string The Cobblemon species feature this item sets — appliance for all default entries.
feature_value string The single feature value this item represents (e.g. "fan", "heat"). Unlike Key_Form_Items.json, this is one value, not a list — each possession item maps to exactly one form. The literal string "null" (used by rotom_light_bulb) represents the base form with no appliance feature present at all.
lore string array Extra lore lines shown on the item's tooltip. Supports MiniMessage tags.

How Possession Works

Each entry here registers two things: a PossessionItem (the hand item) and a PossessionBlock (its placed form, styled as an orange terracotta-based block with the item's own model as an item-display). Both share the same species/feature configuration, but they behave differently.

Applying the item by hand

Right-clicking a matching Pokémon with the item in hand applies it if the Pokémon isn't already in that exact feature_value form:

  1. The feature_name feature is set to this item's feature_value (with an optional delay/animation from a matching form_changes.possessions entry in Events, keyed as <species>_<feature_value>).
  2. If the Pokémon was already carrying a different possession item (tracked internally via persistent data on the Pokémon, not on the item), that previous possession item is returned to the player's inventory (or dropped if the inventory is full) — this is a swap, not a stack.
  3. The new item is recorded as the Pokémon's current possession and one copy is consumed from the player's stack.

If the Pokémon is already in that exact form, using the item does nothing at all — it's not a toggle from the hand item.

The placeable appliance block

Placing the item down (when placeable: true) creates a functional block. Right-clicking the block (while not sneaking) opens Cobblemon's party-select menu and, for the selected Pokémon:

  • If it isn't currently in this block's form, applies the form the same way as the hand item (and swaps out any previous possession item back into the player's inventory).
  • If it is currently in this block's form, the feature is removed entirely — reverting the Pokémon back to its base form.

Note

The party-select prompt opened by the block is currently hard-coded to only list Rotom (pokemon.getSpecies().getName().equalsIgnoreCase("rotom")), rather than reading this item's own species list. For the shipped default file this makes no practical difference — every entry targets Rotom anyway — but if you add a possession item for a different species, its placeable block's party-select menu will still only offer Rotom, not your custom species. This is flagged to support listed species in the future.

See Also

  • Eventsform_changes.possessions section for per-form particle/animation timing, keyed by <species>_<feature_value>.
  • How-It-Works — possession mechanics explained in more depth, including the item/block relationship and persistent-data tracking.
  • Config.jsongeneral_settings.disabled_items to block a possession item, and general_settings.key_item_slots for inventory-slot recognition.

Config Files

─ items/accessories/Accessories.json

─ items/bag_items/Max_Items.json

─ items/bag_items/Tera_Shards.json

─ items/held_items/Held_Battle_Items.json

─ items/held_items/Held_Form_Items.json

─ items/held_items/Z_Crystals.json

─ items/key_items/Fusion_Items.json

─ items/key_items/Key_Form_Items.json

─ items/key_items/Possession_Items.json

Clone this wiki locally