Skip to content

26.1.2 Architecture and Mixins

Rifa edited this page Aug 22, 2026 · 1 revision

🧩 Architecture & Mixin Targets (MC 26.1.2)

πŸ“Œ 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.

Architecture Infobox Technical Parameters
Root Package net.instantgratification.magnet
Mixin Configuration src/main/resources/magnet.mixins.json
Access Widener src/main/resources/magnet.accesswidener
Compatibility Level JAVA_25
Total Mixin Classes 2 (MixinEntity, PlayerMixin)

🌳 Package Architecture Tree

net.instantgratification.magnet/
β”œβ”€β”€ IMagnetEntity.java                  # Entity interface for NoClip & magnetization flags
β”œβ”€β”€ MagnetCommand.java                  # Server command registration (/magnet toggle)
β”œβ”€β”€ MagnetManager.java                  # Entity scanning & spatial execution loop
β”œβ”€β”€ MagnetMod.java                      # Mod initializer & packet receivers
β”œβ”€β”€ MagnetModClient.java                # Client initializer, Ctrl+M keybind & overlay toast
β”œβ”€β”€ MagnetMovement.java                 # Trajectory vector math, lerp velocity & particles
β”œβ”€β”€ MagnetPlayerState.java              # Thread-safe ConcurrentHashMap player toggle storage
β”œβ”€β”€ MagnetTogglePayload.java            # Network packet record & StreamCodec composite
β”œβ”€β”€ SecondaryVisionCheck.java           # Granular block raycasting (Flora, Block Entities, Glass)
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ ClothConfigScreenHelper.java    # Cloth Config Fabric GUI builder
β”‚   β”œβ”€β”€ MagnetConfig.java               # JSON configuration storage & POJO fields
β”‚   └── ModMenuIntegration.java         # Reflection-safe ModMenu API entrypoint
β”œβ”€β”€ mixin/
β”‚   β”œβ”€β”€ MixinEntity.java                # Injects NoClip and gravity cancellation into Entity
β”‚   └── PlayerMixin.java                # Injects tick execution & instant pickup into Player
└── registry/
    └── ModGameRules.java               # DynamicGameRuleManager registrations

πŸ“‹ Mixin Injection Target Breakdown

1. net.instantgratification.magnet.mixin.MixinEntity

Targets net.minecraft.world.entity.Entity and implements IMagnetEntity.

Injected Method Injection Target Point Action & Behavior
ig_magnet$decrementNoClipTicks @Inject(method = "tick", at = @At("HEAD")) Decrements noClipTicks countdown by 1 per tick when active.
ig_magnet$preventPushOut @Inject(method = "moveTowardsClosestSpace", at = @At("HEAD"), cancellable = true) Cancels vanilla push-out velocity if noClipTicks > 0 on server.
ig_magnet$forceNoClipOnMove @Inject(method = "move", at = @At("HEAD")) Caches originalNoPhysics and forces entity.noPhysics = true if noClipTicks > 0.
ig_magnet$restoreNoPhysicsAfterMove @Inject(method = "move", at = @At("RETURN")) Restores entity.noPhysics = originalNoPhysics after move completes.
ig_magnet$conditionalCancelGravity @Inject(method = "applyGravity", at = @At("HEAD"), cancellable = true) Cancels gravity downward acceleration only when item is inside a solid block.

2. net.instantgratification.magnet.mixin.PlayerMixin

Targets net.minecraft.world.entity.player.Player.

Injected Method Injection Target Point Action & Behavior
ig_magnet$tick @Inject(method = "tick", at = @At("HEAD")) Invokes MagnetManager.tick(player) on the server each game tick.
ig_magnet$expandPickupArea @ModifyVariable(method = "aiStep", at = @At("STORE"), ordinal = 0) Expands pickup bounding box (pickupArea.inflate(range)) when ig:magnet_instant is true.

πŸ”— Related Wiki Documentation

Clone this wiki locally