Skip to content

⚡ Modo de Coleta Instantânea (MC 26.1.2)

📌 Aviso sobre o Código-Fonte do Repositório: A documentação nesta Wiki reflete o estado atual do código-fonte no repositório, que pode incluir commits recentes ainda não lançados ou recursos em desenvolvimento antes das compilações públicas oficiais no CurseForge e Modrinth.

Infobox do RecursoParâmetros Técnicos
Classe do Sistemanet.instantgratification.magnet.mixin.PlayerMixin
GameRule de Habilitaçãoig:magnet_instant (Padrão: false)
GameRule de Raioig:magnet_range (Padrão: 12, Intervalo: 1..64)
Ponto de Injeção@ModifyVariable(method = "aiStep", at = @At("STORE"), ordinal = 0)
Variável AlvoCaixa de Colisão de Coleta do Jogador (AABB pickupArea)

📖 Visão Geral da Coleta Instantânea

No Minecraft 26.1.2, o Modo de Coleta Instantânea elimina o tempo de viagem dos itens expandindo a caixa de colisão de coleta do jogador em Player.aiStep(), alimentando instantaneamente os drops no inventário do jogador através dos manipuladores de coleta nativos do vanilla.

+-----------------------------------------------------------------------------------+
|                            TICK DO JOGADOR NO VANILLA: aiStep()                   |
+-----------------------------------------------------------------------------------+
                                          |
                                          v
                +---------------------------------------------------+
                |   PlayerMixin.ig_magnet$expandPickupArea()        |
                |   pickupArea = pickupArea.inflate(range);         |
                +---------------------------------------------------+
                                          |
                                          v
+-----------------------------------------------------------------------------------+
|               EXECUÇÃO VANILLA ItemEntity.playerTouch(Player)                     |
|   - Empilhamento nativo de inventário e coletas parciais                          |
|   - Animação de coleta e sons do vanilla (item.pickup / entity.experience_orb)   |
|   - Disparo de estatísticas e conquistas nativas                                  |
|   - Retenção de itens excedentes em caso de inventário cheio                      |
+-----------------------------------------------------------------------------------+

🧩 Implementação Arquitetural (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;
}

⚙️ Configurações Relevantes & GameRules

GameRuleTipoPadrãoDescrição
ig:magnet_instantBooleanfalseSe verdadeiro, os itens teletransportam-se imediatamente para o jogador em vez de voar.
ig:magnet_rangeInteger12Raio em blocos para a área de coleta expandida.
ig:magnet_enabledBooleantrueAlternância principal de todo o mod.

🔗 Documentação da Wiki Relacionada

Official documentation & web portal for Dasik Igaijinn mods.