Skip to content

⚡ インスタント回収モード (MC 26.1.2)

📌 リポジトリソースに関する免責事項: 本 Wiki のドキュメントはリポジトリ内の現在のソースコード状態を反映しており、CurseForge や Modrinth での一般公開リリースビルドに先立つ最新の未リリースコミットや開発中の機能が含まれている場合があります。

機能インフォボックス技術パラメータ
システムクラスnet.instantgratification.magnet.mixin.PlayerMixin
有効化ゲームルールig:magnet_instant (デフォルト: false)
範囲ゲームルールig:magnet_range (デフォルト: 12, 範囲: 1..64)
注入ポイント@ModifyVariable(method = "aiStep", at = @At("STORE"), ordinal = 0)
対象変数プレイヤー回収バウンディングボックス (AABB pickupArea)

📖 インスタント回収の概要

Minecraft 26.1.2 において、インスタント回収モードPlayer.aiStep() 内でプレイヤーの回収バウンディングボックスを拡張することにより、アイテムの移動時間をゼロにし、バニラの回収ハンドラーを通じてドロップをプレイヤーのインベントリへ即時に格納します。

+-----------------------------------------------------------------------------------+
|                            VANILLA PLAYER aiStep() TICK                           |
+-----------------------------------------------------------------------------------+
                                          |
                                          v
                +---------------------------------------------------+
                |   PlayerMixin.ig_magnet$expandPickupArea()        |
                |   pickupArea = pickupArea.inflate(range);         |
                +---------------------------------------------------+
                                          |
                                          v
+-----------------------------------------------------------------------------------+
|               VANILLA ItemEntity.playerTouch(Player) EXECUTION                    |
|   - Native Inventory Stacking & Partial Pickups                                   |
|   - Vanilla Pickup Animation & Sound Events (item.pickup / entity.experience_orb) |
|   - Native Statistics & Advancements Triggers                                     |
|   - Full Container Overflow & Remaining Item Retention                            |
+-----------------------------------------------------------------------------------+

🧩 アーキテクチャ実装 (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;
}

⚙️ 関連設定とゲームルール

GameRuleデフォルト説明
ig:magnet_instantBooleanfalsetrue の場合、アイテムは飛翔せずプレイヤーへ即座にテレポート回収されます。
ig:magnet_rangeInteger12拡張される回収エリアのブロック半径。
ig:magnet_enabledBooleantrueMOD 全体のマスター切り替え。

🔗 関連 Wiki ドキュメント

Official documentation & web portal for Dasik Igaijinn mods.