Skip to content

✨ Attraction des Orbes d'Expérience (MC 26.1.2)

📌 Avertissement sur le Code Source du Dépôt : La documentation de ce Wiki reflète l'état actuel du code source dans le dépôt, qui peut inclure des commits récents non publiés ou des fonctionnalités en développement avant les versions publiques sur CurseForge et Modrinth.

Encadré TechniqueParamètres Techniques
Classe d'Entité Ciblenet.minecraft.world.entity.ExperienceOrb
Classe Gestionnairenet.instantgratification.magnet.MagnetManager
GameRule d'Activationig:magnet_affects_xp (Par défaut : true)
Requête d'Analyseplayer.level().getEntitiesOfClass(ExperienceOrb.class, area, Entity::isAlive)
Type de ParticuleParticleTypes.ELECTRIC_SPARK
Régulation des ParticulesPartagée avec les objets via ig:magnet_max_particle_sources

📖 Mécaniques d'Attraction de l'Expérience

Dans Minecraft 26.1.2, les orbes d'expérience (ExperienceOrb) bénéficient de la même logique d'aspiration instantanée que les objets au sol.

+------------------+    getEntitiesOfClass      +-----------------------+     MagnetMovement.pull     +--------------------+
| AABB Scan Joueur | -------------------------> | List<ExperienceOrb>   | --------------------------> | Collecte Joueur    |
+------------------+                            +-----------------------+                             +--------------------+
                                                            |
                                                            v
                                                [Applique NoClip Phase-Shift]
                                                [Applique Vecteur Vélocité Lerp]
                                                [Particules d'Étincelles Régulées]

⚡ Mouvement de Succion & Traversée de Phase

  1. Phase Shifting (NoClip) : Les orbes d'expérience traversent les parois de roche ou de minerai grâce à ((IMagnetEntity) orb).ig$setMagnetNoClip().
  2. Interpolation de Vélocité : Les orbes accélèrent de manière fluide vers la position des yeux du joueur selon les pourcentages de vitesse et d'accélération configurés.
  3. Filtrage Ligne de Visée : Lorsque ig:magnet_los_only est actif, les orbes doivent être visibles par le joueur ou disposer de l'élan de magnétisation actif.

🛡️ Prévention du Lag & Mutualisation des Particules

java
int maxParticleSources = ModGameRules.getInt(player.level(), ModGameRules.MAGNET_MAX_PARTICLE_SOURCES);
int particleSourceCount = 0;

for (ExperienceOrb orb : orbs) {
    boolean shouldSpawnParticles = false;
    if (particleSourceCount < maxParticleSources) {
        shouldSpawnParticles = true;
        particleSourceCount++;
    }
    MagnetMovement.pull(orb, player, shouldSpawnParticles);
}
  • Sources Max de Particules : Seules les $N$ premières entités par tick génèrent des traînées visuelles.
  • Repli Sécurisé Client : Dans MagnetMovement.java, si le niveau n'est pas un ServerLevel, l'émission se replie proprement sur level.addParticle(...).

⚙️ Configuration & GameRules Pertinentes

GameRuleTypeValeur par DéfautDescription
ig:magnet_affects_xpBooléentrueDétermine si l'aimant attire les orbes d'expérience.
ig:magnet_particlesBooléentrueBascule principale pour les effets de particules.
ig:magnet_particle_countEntier1Nombre d'étincelles émises par entité et par tick de particule.
ig:magnet_max_particle_sourcesEntier5Nombre maximal d'entités autorisées à émettre simultanément.

🔗 Documentation Connexe

Official documentation & web portal for Dasik Igaijinn mods.