-
Notifications
You must be signed in to change notification settings - Fork 0
26.2 Player Toggle and Persistence
π Repository Source Disclaimer: The documentation in this Wiki reflects the current source code state in the repository, which may include recent unreleased commits or developmental features ahead of public release builds on CurseForge and Modrinth.
| Feature Infobox | Technical Parameters |
|---|---|
| Interface Bridge | net.instantgratification.magnet.IMagnetPlayer |
| Mixin Target |
net.minecraft.world.entity.player.Player (PlayerMixin.java) |
| Default Client Keybind |
\ (Backslash) β key.ig_magnet.toggle
|
| Key Category |
key.category.ig_magnet.magnet (Magnet, Let me get that!) |
| Network Payload |
MagnetTogglePayload (ig_magnet:toggle) |
| NBT Codec Storage |
ValueOutput / ValueInput under tag "ig_magnet_enabled"
|
| Lifecycle Events |
ServerPlayConnectionEvents.JOIN, ServerPlayerEvents.COPY_FROM, ServerPlayerEvents.AFTER_RESPAWN
|
In multiplayer servers and modpacks, individual players often have different preferencesβbuilders may wish to pause item attraction while decorating, while miners want maximum vacuum power.
Magnet, Let me get that! implements an individualized, per-player toggle state that is 100% persistent across world reloads, deaths, respawns, and dimension teleportation.
[CLIENT ACTION]
Player Presses Toggle Keybind ('\')
|
v
[LOCAL STATE UPDATED]
client.player -> isEnabled = !isEnabled
Actionbar Overlay: "Item Magnet: Enabled/Disabled"
|
v
[C2S PACKET TRANSMISSION]
ClientPlayNetworking.send(MagnetTogglePayload)
|
v
[SERVER RECEIVER]
context.server().execute(() -> {
((IMagnetPlayer) player).ig_magnet$setMagnetEnabled(val);
})
|
+----------------------------+----------------------------+
| |
v v
[NBT DATA PERSISTED] [LIFECYCLE HOOKS WIRED]
ValueOutput.putBoolean("ig_magnet_enabled") - JOIN: S2C Sync
ValueInput.getBooleanOr("ig_magnet_enabled", true) - COPY_FROM: Retain on Death
- AFTER_RESPAWN: Fresh Entity S2C Sync
-
Default Key:
GLFW_KEY_BACKSLASH(\), avoiding keyboard conflicts with common map mods and inventory utilities. -
Dynamic Key Type Helper: Uses
ig_magnet$getKeyboardType()to safely resolveInputConstants.Type.KEYBOARDwith graceful fallback toKEYSYMacross varying Fabric Loader snapshots. -
Instant Visual Feedback: Toggling triggers a localized actionbar toast:
-
chat.ig_magnet.enabled:"Item Magnet: Enabled" -
chat.ig_magnet.disabled:"Item Magnet: Disabled"
-
Player toggle settings are saved directly to the player's .dat world save file using Minecraft 26.2's ValueOutput and ValueInput data pipelines:
// Saving to Player NBT
@Inject(method = "addAdditionalSaveData", at = @At("TAIL"))
private void ig_magnet$addAdditionalSaveData(ValueOutput output, CallbackInfo ci) {
output.putBoolean("ig_magnet_enabled", this.ig_magnet$enabled);
}
// Loading from Player NBT
@Inject(method = "readAdditionalSaveData", at = @At("TAIL"))
private void ig_magnet$readAdditionalSaveData(ValueInput input, CallbackInfo ci) {
this.ig_magnet$enabled = input.getBooleanOr("ig_magnet_enabled", true);
}When a player dies in Minecraft, the game creates a brand-new ServerPlayer entity upon respawn. The mod guarantees zero state loss:
-
ServerPlayerEvents.COPY_FROM: Copies the boolean toggle fromoldPlayertonewPlayerimmediately upon entity cloning. -
ServerPlayerEvents.AFTER_RESPAWN: Automatically transmits an S2CMagnetTogglePayloadto the client once the new player entity connects, keeping the client HUD in sync. -
ServerPlayConnectionEvents.JOIN: Syncs the player's saved NBT state to the client upon joining a dedicated server or LAN world.
Magnet, Let me get that! β’ Developed by Dasik (Rifaditya) β’ Licensed under GNU GPLv3
Documentation reflects active repository source code. Features may precede public releases on CurseForge/Modrinth.
- π 26.2 Overview
- Gameplay Mechanics
- Administration & Config
- Technical & Development
- π 26.1.2 Overview
- Gameplay Mechanics
- Administration & Config
- Technical & Development