Skip to content

🧩 Arsitektur & Target Mixin (MC 26.1.2)

📌 Pernyataan Sumber Kode Repositori: Dokumentasi dalam Wiki ini mencerminkan status kode sumber saat ini di repositori, yang mungkin mencakup komit terbaru yang belum dirilis atau fitur dalam pengembangan sebelum rilis publik di CurseForge dan Modrinth.

Kotak Info ArsitekturParameter Teknis
Paket Induknet.instantgratification.magnet
Konfigurasi Mixinsrc/main/resources/magnet.mixins.json
Access Widenersrc/main/resources/magnet.accesswidener
Tingkat KompatibilitasJAVA_25
Total Kelas Mixin2 (MixinEntity, PlayerMixin)

🌳 Pohon Arsitektur Paket

text
net.instantgratification.magnet/
├── IMagnetEntity.java                  # Antarmuka entitas untuk flag NoClip & magnetisasi
├── MagnetCommand.java                  # Pendaftaran perintah server (/magnet toggle)
├── MagnetManager.java                  # Loop pemindaian entitas & eksekusi spasial
├── MagnetMod.java                      # Inisialisasi mod & penerima paket
├── MagnetModClient.java                # Inisialisasi klien, tombol Ctrl+M & toast overlay
├── MagnetMovement.java                 # Matematika vektor lintasan, kecepatan lerp & partikel
├── MagnetPlayerState.java              # Penyimpanan sakelar ConcurrentHashMap aman-utas
├── MagnetTogglePayload.java            # Record paket jaringan & komposit StreamCodec
├── SecondaryVisionCheck.java           # Raycasting blok granular (Flora, Entitas Blok, Kaca)
├── config/
│   ├── ClothConfigScreenHelper.java    # Pembangun GUI Cloth Config Fabric
│   ├── MagnetConfig.java               # Penyimpanan konfigurasi JSON & field POJO
│   └── ModMenuIntegration.java         # Entrypoint ModMenu API aman refleksi
├── mixin/
│   ├── MixinEntity.java                # Menginjeksikan NoClip & pembatalan gravitasi ke Entity
│   └── PlayerMixin.java                # Menginjeksikan eksekusi tick & pengambilan instan ke Player
└── registry/
    └── ModGameRules.java               # Registrasi DynamicGameRuleManager

📋 Perincian Target Injeksi Mixin

1. net.instantgratification.magnet.mixin.MixinEntity

Menargetkan net.minecraft.world.entity.Entity dan mengimplementasikan IMagnetEntity.

Metode DiinjeksiTitik Target InjeksiAksi & Perilaku
ig_magnet$decrementNoClipTicks@Inject(method = "tick", at = @At("HEAD"))Mengurangi hitungan mundur noClipTicks sebanyak 1 per tick saat aktif.
ig_magnet$preventPushOut@Inject(method = "moveTowardsClosestSpace", at = @At("HEAD"), cancellable = true)Membatalkan kecepatan dorong keluar vanilla jika noClipTicks > 0 di server.
ig_magnet$forceNoClipOnMove@Inject(method = "move", at = @At("HEAD"))Menyimpan originalNoPhysics dan memaksa entity.noPhysics = true jika noClipTicks > 0.
ig_magnet$restoreNoPhysicsAfterMove@Inject(method = "move", at = @At("RETURN"))Mengembalikan entity.noPhysics = originalNoPhysics setelah perpindahan selesai.
ig_magnet$conditionalCancelGravity@Inject(method = "applyGravity", at = @At("HEAD"), cancellable = true)Membatalkan akselerasi gravitasi ke bawah hanya ketika item berada di dalam blok padat.

2. net.instantgratification.magnet.mixin.PlayerMixin

Menargetkan net.minecraft.world.entity.player.Player.

Metode DiinjeksiTitik Target InjeksiAksi & Perilaku
ig_magnet$tick@Inject(method = "tick", at = @At("HEAD"))Memanggil MagnetManager.tick(player) di server pada setiap game tick.
ig_magnet$expandPickupArea@ModifyVariable(method = "aiStep", at = @At("STORE"), ordinal = 0)Memperluas kotak pembatas pengambilan (pickupArea.inflate(range)) saat ig:magnet_instant true.

🔗 Dokumentasi Wiki Terkait

Official documentation & web portal for Dasik Igaijinn mods.