Yarn: Slot.onCrafted salah

Dibuat pada 4 Agu 2020  ·  5Komentar  ·  Sumber: FabricMC/yarn

bug discussion refactor

Semua 5 komentar

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.

    • Ini dipanggil dari implementasi transferSlot untuk slot output dari berbagai blok kerajinan, tetapi juga untuk input brewing stand.

    • Parameternya tampaknya newStack, originalStack (tertukar dari cara mereka dipetakan saat ini).

    • Apa yang dilakukannya adalah memeriksa apakah ada item yang dikeluarkan dari slot dan jika demikian, memanggil onCrafted(ItemStack, int) dengan originalStack (disebut newItem dalam pemetaan saat ini) dan perbedaan antara ukuran tumpukan.

    • Saya pikir ini lebih merupakan "jumlah item slot keluaran berubah".

  • Slot.onCrafted(ItemStack, int) hanya dipanggil oleh onStackChanged .

    • Impl default: no-op

    • Dalam 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.

    • Impl default: no-op

    • Implementasi di ketiga kelas tersebut: menyetel ulang bidang pribadi amount ke 0 dan menjalankan tugas penyelesaian (tungku menjatuhkan XP dll)

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 item berkurang (= item dikeluarkan).
  • onCrafted(ItemStack) menyelesaikan proses keluaran ketika ada pengurangan sebagian ( onStackChanged ) atau tumpukan penuh diambil ( onTakeItem ).
  • Metode ini masih membutuhkan penggantian nama.

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Juuxel picture Juuxel  ·  6Komentar

Awakened-Redstone picture Awakened-Redstone  ·  4Komentar

Boundarybreaker picture Boundarybreaker  ·  3Komentar

Runemoro picture Runemoro  ·  4Komentar

ChloeDawn picture ChloeDawn  ·  6Komentar