Skip to content

Pembahasan Arsitektur & Mixin (MC 26.2)

Dokumen ini menjelaskan tata letak paket internal, hierarki kelas, rincian target Mixin, shadow member, dan titik injeksi untuk Item Clumps di Minecraft 26.2.


🌳 Hierarki Paket & Diagram Kelas

net.instantgratification.item_clumps

├── ItemClumpsFabric.java                   [Main Entrypoint / GameRules Registration]

├── config/
│   ├── ItemClumpsConfig.java               [Configuration POJO / ConfigHelper Persistence]
│   ├── ModMenuIntegration.java             [ModMenuApi Provider / Safe GUI Factory]
│   └── YaclScreenHelper.java               [YetAnotherConfigLib v3 Screen Factory]

├── mixin/
│   ├── HopperBlockEntityMixin.java         [Hopper Drip Extraction Mixin]
│   └── ItemEntityMixin.java                [Mega-Stack Aggregation & Smart Pickup Mixin]

└── util/
    └── ModVersionGuard.java                [Knot ClassLoader Runtime Safety Guard]

🛠️ Target Mixin Lengkap & Analisis Titik Injeksi

1. ItemEntityMixin.java

  • Kelas Target: net.minecraft.world.entity.item.ItemEntity
  • Ekstensi Superclass: extends net.minecraft.world.entity.Entity
Anggota / MetodeAnotasiTitik InjeksiTujuan
getItem()@ShadowT/AMengakses tumpukan item.
setItem(ItemStack)@ShadowT/AMengubah tumpukan item dan memperbarui data pelacak.
target@ShadowT/AUUID pemain target (untuk keamanan lemparan).
pickupDelay@ShadowT/ATick timer cooldown pengambilan.
age@ShadowT/ATick timer usia despawn ($0$ hingga $6000$).
setItem@Inject@At("TAIL")Memicu pembaruan label nama saat jumlah tumpukan berubah.
isMergable@Inject@At("HEAD"), cancellable = trueMenimpa pemeriksaan tumpukan maks dengan GameRule max_clump_size.
mergeWithNeighbours@RedirectINVOKE -> AABB.inflate(DDD)Ekspansi nol-alokasi radius pencarian horisontal ($r \in [1, 10]$).
tryToMerge@Inject@At("HEAD"), cancellable = trueMenjalankan matematika jumlah 64-bit, pewarisan usia termuda, dan pemeriksaan magnet.
playerTouch@Inject@At("HEAD"), cancellable = trueMemasukkan item ke inventaris dalam tumpukan vanilla yang rapi sekaligus.

2. HopperBlockEntityMixin.java

  • Kelas Target: net.minecraft.world.level.block.entity.HopperBlockEntity
MetodeAnotasiTitik InjeksiTujuan
addItem(Container, ItemEntity)@Inject@At("HEAD"), cancellable = trueMengambil irisan 1-item dari mega-clump ($2,5$ item/detik) ke dalam wadah corong.

📄 Konfigurasi Mixin (item-clumps.mixins.json)

json
{
    "required": true,
    "package": "net.instantgratification.item_clumps.mixin",
    "compatibilityLevel": "JAVA_25",
    "refmap": "item-clumps-refmap.json",
    "mixins": [
        "HopperBlockEntityMixin",
        "ItemEntityMixin"
    ],
    "injectors": {
        "defaultRequire": 1
    }
}

🔗 Dokumentasi Terkait (MC 26.2)

Official documentation & web portal for Dasik Igaijinn mods.