Skip to content

⚡ 즉시 수집 모드 (MC 26.1.2)

📌 저장소 소스 코드 고지 사항: 이 Wiki의 문서는 CurseForge 및 Modrinth의 공개 릴리스 빌드에 앞서 최근에 커밋된 미출시 커밋이나 개발 중인 기능이 포함될 수 있는 저장소의 현재 소스 코드 상태를 반영합니다.

기능 정보 상자기술적 세부 파라미터
시스템 클래스net.instantgratification.magnet.mixin.PlayerMixin
활성화 GameRuleig:magnet_instant (기본값: false)
반경 GameRuleig:magnet_range (기본값: 12, 범위: 1..64)
주입 지점@ModifyVariable(method = "aiStep", at = @At("STORE"), ordinal = 0)
대상 변수플레이어 수집 바운딩 박스 (AABB pickupArea)

📖 즉시 수집(Instant Pickup) 개요

마인크래프트 26.1.2에서 즉시 수집 모드Player.aiStep() 에서 플레이어의 수집 바운딩 박스를 확장하여, 드롭된 아이템을 바닐라 수집 핸들러를 통해 플레이어 인벤토리로 즉각 유입시킴으로써 비행 시간을 완전히 제거합니다.

+-----------------------------------------------------------------------------------+
|                           바닐라 플레이어 aiStep() 틱 처리                         |
+-----------------------------------------------------------------------------------+
                                          |
                                          v
                +---------------------------------------------------+
                |   PlayerMixin.ig_magnet$expandPickupArea()        |
                |   pickupArea = pickupArea.inflate(range);         |
                +---------------------------------------------------+
                                          |
                                          v
+-----------------------------------------------------------------------------------+
|              바닐라 ItemEntity.playerTouch(Player) 파이프라인 실행                 |
|   - 네이티브 인벤토리 스태킹 및 부분 수집 완벽 지원                               |
|   - 바닐라 아이템 획득 애니메이션 및 사운드 (item.pickup / entity.experience_orb)|
|   - 네이티브 통계 및 발전 과제 자동 달성                                          |
|   - 인벤토리 가득 참 방지 및 남은 아이템 안전 보존                               |
+-----------------------------------------------------------------------------------+

🧩 아키텍처 구현 세부사항 (PlayerMixin.java)

java
@ModifyVariable(
        method = "aiStep",
        at = @At(value = "STORE"),
        ordinal = 0
)
private AABB ig_magnet$expandPickupArea(AABB pickupArea) {
    Player player = (Player) (Object) this;
    Level level = player.level();
    
    if (!level.isClientSide()) {
        if (ModGameRules.getBoolean(level, ModGameRules.MAGNET_INSTANT)) {
            int range = ModGameRules.getInt(level, ModGameRules.MAGNET_RANGE);
            if (range > 0) {
                return pickupArea.inflate(range);
            }
        }
    }
    
    return pickupArea;
}

⚙️ 관련 설정 및 GameRules

GameRule타입기본값설명
ig:magnet_instantBooleanfalsetrue 설정 시 아이템이 비행하지 않고 플레이어에게 즉시 순간이동됩니다.
ig:magnet_rangeInteger12확장할 수집 영역의 블록 반경입니다.
ig:magnet_enabledBooleantrue모드 전체를 켜거나 끄는 마스터 스위치입니다.

🔗 관련 Wiki 문서

Official documentation & web portal for Dasik Igaijinn mods.