Skip to content

👁️ Line of Sight & Obstruction Mechanics (MC 26.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.

Feature InfoboxTechnical Parameters
Primary Vision Enginenet.dasik.social.api.vision.PlayerVisionTracker
Secondary Vision Enginenet.instantgratification.magnet.SecondaryVisionCheck
Spherical Field of View$360.0^\circ$ (Full omnidirectional perception)
Contact Distance Tolerance$0.3\text{ m}$ target contact threshold
Memory Retention Tagig_magnet$isMagnetized() / ig_magnet$setMagnetized()
Momentum Ruleig:magnet_keep_moving_if_unseen = true
Granular Filter RulesTransparent blocks, Flora, Block Entities

📖 Dual-Pass Vision Pipeline ​

                                +---------------------------+
                                |    TARGET ITEM DETECTED   |
                                +-------------+-------------+
                                              |
                                              v
                              +-------------------------------+
                              |    PRIMARY PASS (360° LOS)    |
                              |   PlayerVisionTracker.canSee  |
                              +---------------+---------------+
                                              |
                        +---------------------+---------------------+
                        |                                           |
                   [VISIBLE]                                   [OBSTRUCTED]
                        |                                           |
                        v                                           v
      +-----------------------------------+               +--------------------+
      |     SECONDARY PASS (GRANULAR)     |               |   MOMENTUM CHECK   |
      |     SecondaryVisionCheck.canSee   |               | keepMovingIfUnseen |
      +-----------------+-----------------+               +---------+----------+
                        |                                           |
            +-----------+-----------+                     +---------+---------+
            |                       |                     |                   |
        [PASS]                   [BLOCKED]            [MAGNETIZED]      [UNMAGNETIZED]
            |                       |                     |                   |
            v                       v                     v                   v
    +---------------+       +---------------+     +---------------+   +---------------+
    |  PULL ITEM &  |       | REJECT / STOP |     | CONTINUE PULL |   | REJECT PULL   |
    | SET MAGNETIZED|       +---------------+     +---------------+   +---------------+
    +---------------+

🔍 Pass 1: Primary 360° Spherical Line-of-Sight Check ​

java
boolean canSee = net.dasik.social.api.vision.PlayerVisionTracker.canSee(player, entity, (double) range, 360.0);
  • Omnidirectional FOV: $360.0^\circ$ field of view allows items to be pulled from all angles without turning the camera.
  • 0.3m Contact Margin: Prevents edge-case raycast rejection when items are nestled in corner blocks.

🌿 Pass 2: Granular Block State Filtering (SecondaryVisionCheck) ​

java
public static boolean canSee(Player player, Entity target, boolean blockTransparent, boolean blockFlora, boolean blockEntities)
  1. Flora & Foliage (ig:magnet_blocked_by_flora): Checks BushBlock (grass, flowers, crops) and LeavesBlock.
  2. Interactive Block Entities (ig:magnet_blocked_by_block_entities): Checks state.hasBlockEntity() (Chests, Shulkers, Beds).
  3. Transparent Blocks (ig:magnet_blocked_by_transparent): Raycasts against state.getVisualShape(...) (Glass, Panes, Slabs).

🚀 Momentum Continuity (keepMovingIfUnseen) ​

  • Once seen, ((IMagnetEntity) entity).ig_magnet$setMagnetized() marks the entity.
  • If ig:magnet_keep_moving_if_unseen = true, the item continues moving even if it temporarily loses line of sight.

⚙️ Relevant Configuration & GameRules ​

GameRuleTypeDefaultDescription
ig:magnet_los_onlyBooleantrueRequires line-of-sight visibility to attract items.
ig:magnet_keep_moving_if_unseenBooleantrueContinues pulling magnetized items if LOS is broken mid-flight.
ig:magnet_blocked_by_transparentBooleanfalseIf true, glass and transparent blocks obstruct line of sight.
ig:magnet_blocked_by_floraBooleanfalseIf true, grass, leaves, and flowers obstruct line of sight.
ig:magnet_blocked_by_block_entitiesBooleanfalseIf true, chests, beds, and block entities obstruct line of sight.

Official documentation & web portal for Dasik Igaijinn mods.