Lihat https://github.com/FabricMC/yarn/issues/1656#issuecomment -812829091
Saya pikir onSizeChanged
atau onItemCountChanged
akan lebih baik. Ini adalah ukuran tumpukan, atau jumlah item, yang diubah, bukan jumlah tumpukan (jumlah tumpukan).
apakah ini masih berlaku setelah perubahan terbaru mojang pada penangan layar seperti 21w11a?
Oke, analisis aslinya mungkin tidak 100% benar. Perilaku saat ini:
Slot.onStackChanged
masih bukan pengendali perubahan tumpukan umum.transferSlot
untuk slot output dari berbagai blok kerajinan, tetapi juga untuk input brewing stand.newStack, originalStack
(tertukar dari cara mereka dipetakan saat ini).onCrafted(ItemStack, int)
dengan originalStack
(disebut newItem
dalam pemetaan saat ini) dan perbedaan antara ukuran tumpukan.Slot.onCrafted(ItemStack, int)
hanya dipanggil oleh onStackChanged
.CraftingResultSlot
, FurnaceOutputSlot
dan TradeOutputSlot
implementasinya selalu sama: ia menambahkan bidang pribadi amount
dengan parameter int, lalu memanggil onCrafted(ItemStack)
dengan parameter tumpukan item.Slot.onCrafted(ItemStack)
hanya dipanggil oleh implementasi onCrafted(ItemStack, int)
dan onTakeItem
di ketiga kelas tersebut.amount
ke 0 dan menjalankan tugas penyelesaian (tungku menjatuhkan XP dll)Kesimpulan (perlu dikonfirmasi dengan debugger atau melihat lebih dekat):
onStackChanged
dipanggil saat jumlah item berubah di slot output, dan onCrafted(ItemStack, int)
saat jumlah item berkurang (= item dikeluarkan).onCrafted(ItemStack)
menyelesaikan proses keluaran ketika ada pengurangan sebagian ( onStackChanged
) atau tumpukan penuh diambil ( onTakeItem
).Kesimpulan (perlu dikonfirmasi dengan debugger atau melihat lebih dekat):
- Semua metode ini berhubungan dengan pemain yang mengeluarkan item dari slot keluaran (kerajinan atau perdagangan).
- onStackChanged dipanggil saat jumlah item berubah di slot output, dan onCrafted(ItemStack, int) saat jumlah itu berkurang (= item dikeluarkan).
Metode yang memanggil mereka, transferSlot
, hanya digunakan untuk transfer cepat alias klik shift. Jadi, onQuickTransfer
tampaknya paling akurat bagi saya. Nama parameter memang diganti.
Ini masih berlaku untuk onCrafted
, jadi buka kembali.