promotional bannermobile promotional banner

Peak's possession

This mod allows operators control players or mobs (with abilities) from a vanilla client. The optional client adds exact input, the target’s HUD, full inventory control, and shared first-person views. Supports addons, Curios, Pehkui, GeckoLib, MineColonies
Back to Files

possess-4.1.2.jar

File namepossess-4.1.2.jar
Uploader
PeakwarriorPeakwarrior
Uploaded
Nov 8, 2026
Downloads
1
Size
193.2 KB
Mod Loaders
NeoForge
File ID
9517265
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:peaks-possession-1782050:9517265"

Learn more about Curse Maven

What's new

Added

  • Click-and-drag item distribution in the possessor's interactive inventory screen: left (even split), right (one item each), middle (creative fill) - sent as the real vanilla START/ADD/END protocol.
  • Creative middle-click: clones a creative stack onto the cursor (creative possessee only).
  • Generic menu buttons: the enchanting table's three rows, showing their real lapis/level cost.
  • Anvil rename box: a real, live text field; typing sends the new name to the server as you go.
  • GUI mirroring: opening the possessor's inventory view also opens the real inventory screen on the possessee's own client (if they have the module). Whether they can close/click it follows the existing target-input lock ("possess control").
  • Fire mirroring: the possessor's HUD shows the real vanilla fire overlay whenever the possessed target is on fire, via ScreenEffectRenderer.renderFireOverlay (not a reimplementation).
  • Enchantment/potion/terrain-aware possessed movement (TerrainSpeed.java, new):
    • Swift Sneak - now reads the real SNEAKING_SPEED attribute instead of a flat 0.3.
    • Depth Strider - approximated via the WATER_MOVEMENT_EFFICIENCY attribute.
    • Soul sand / honey block (and the Movement Efficiency attribute's interaction with them) - read live via Entity#getBlockSpeedFactor() (reflection).
    • Cobwebs / sweet berry bushes / powder snow - read live via Entity#stuckSpeedMultiplier (reflection).
    • Speed/Slowness potions and Soul Speed already worked automatically; confirmed, not changed.
  • Momentum tracking / ice sliding: horizontal momentum (Session#vx/vz) is now carried between ticks. A no-op on ordinary ground; on ice/packed ice/blue ice the target keeps sliding after input stops (TerrainSpeed#momentumGrip), applied to both players (Driver) and mobs (MobDriver).
  • /possess swap <player1> <player2>: cross-wires two players' real input (movement, look, jump, sneak, sprint) so each one's body is driven by the OTHER's keys, while both stay in their own first-person view the whole time - no spectating, no camera swap. Requires BOTH players to have the client module (allowSwap config). /possess unswap ends it. Built as entirely separate code (SwapPair/SwapSessions/SwapDriver), so the existing possession feature was not touched.

Fixed

  • Shared/unlocked control mode only properly freed the target for operators using the client module; an operator on plain flight input still had their own computed falling physics fight the target's real movement even while unlocked. Both input paths now hand off identically.
  • Removed a dead interactable field from ForceScreenPayload that nothing on the client ever read (the real lock state always came from a different packet) - one source of truth now instead of two that could disagree.
  • The mirrored inventory screen was being torn down and recreated every ~2 second heartbeat; it's now only (re)opened on an actual state change.
  • Removed a targetMenuInputAllowed helper that was never called and implied a server-side protection that doesn't exist (no NeoForge event can intercept that packet without a mixin).
  • Cross-feature conflict: a normal possession could be started on (or by) a player currently in an active /possess swap, which would have fought the swap's own teleports on the same body every tick. Both directions are now blocked.
  • Swap rubber-banding: a swapped player's own client was still fully predicting its own WASD/jump/sneak locally, fighting the server's per-tick override from their partner's keys. The same local-input suppression already used for a locked possession target now also covers swap participants.

This mod has no additional files