Yarn: Slot.onCrafted خطأ

تم إنشاؤها على ٤ أغسطس ٢٠٢٠  ·  5تعليقات  ·  مصدر: FabricMC/yarn

bug discussion refactor

ال 5 كومينتر

أعتقد أنه إما onSizeChanged أو onItemCountChanged سيكون أفضل. إنه حجم المكدس ، أو عدد العناصر ، الذي يتم تغييره ، وليس عدد المكدس (عدد المكدس).

هل هذا لا يزال ساريًا بعد تجديد mojang الأخير على معالجات الشاشة مثل 21w11a؟

حسنًا ، قد لا يكون التحليل الأصلي صحيحًا بنسبة 100٪. السلوك الحالي:

  • Slot.onStackChanged غير معالج تغيير مكدس عام.

    • يتم استدعاؤها من تطبيقات transferSlot لفتحات الإخراج الخاصة بمختلف قوالب التصنيع ، ولكن أيضًا لتخمير مدخلات الحامل.

    • يبدو أن المعلمات هي newStack, originalStack (تم تبديلها من طريقة تعيينها حاليًا).

    • ما يفعله هو التحقق مما إذا كانت هناك عناصر مأخوذة من الفتحة ، وإذا كان الأمر كذلك ، فقم باستدعاء onCrafted(ItemStack, int) مع originalStack (يُسمى newItem في التعيينات الحالية) والفرق بين أحجام المكدس.

    • أعتقد أن هذا هو أكثر من "تم تغيير عدد عناصر فتحة الإخراج".

  • يتم استدعاء Slot.onCrafted(ItemStack, int) بواسطة onStackChanged .

    • الضمني الافتراضي: no-op

    • في CraftingResultSlot و FurnaceOutputSlot و TradeOutputSlot يكون التنفيذ دائمًا هو نفسه: فهو يزيد الحقل amount بواسطة المعلمة int ، ثم يستدعي onCrafted(ItemStack) مع معلمة مكدس العنصر.

  • يتم استدعاء Slot.onCrafted(ItemStack) فقط من خلال تطبيقات onCrafted(ItemStack, int) و onTakeItem في تلك الفئات الثلاثة.

    • الضمني الافتراضي: no-op

    • عمليات التنفيذ في هذه الفئات الثلاثة: إعادة تعيين الحقل amount إلى 0 وتشغيل مهام الإنهاء (الفرن يسقط XP ، إلخ)

الخلاصة (يجب تأكيدها باستخدام مصحح أخطاء أو نظرة فاحصة):

  • تتعلق كل هذه الطرق باللاعب الذي يخرج العناصر من فتحات الإخراج (التصنيع أو التداول).
  • يتم استدعاء onStackChanged عندما يتغير عدد العناصر في فتحة الإخراج ، و onCrafted(ItemStack, int) عندما يقل هذا العدد (= يتم إخراج العناصر).
  • ينهي onCrafted(ItemStack) عملية الإخراج عندما يكون هناك إما انخفاض جزئي ( onStackChanged ) أو سحب مكدس كامل ( onTakeItem ).
  • هذه الأساليب لا تزال بحاجة إلى إعادة تسمية.

الخلاصة (يجب تأكيدها باستخدام مصحح أخطاء أو نظرة فاحصة):

  • تتعلق كل هذه الطرق باللاعب الذي يخرج العناصر من فتحات الإخراج (التصنيع أو التداول).
  • يتم استدعاء onStackChanged عندما يتغير عدد العناصر في فتحة الإخراج ، ويتم استدعاء onCrafted (ItemStack ، int) عندما ينخفض ​​هذا العدد (= يتم إخراج العناصر).

الطريقة التي تستدعيهم ، transferSlot ، تستخدم فقط للتحويل السريع ويعرف أيضًا باسم النقر على shift. لذلك ، يبدو أن onQuickTransfer هو الأكثر دقة بالنسبة لي. تم بالفعل تبديل أسماء المعلمات.

لا يزال هذا ينطبق على onCrafted ، لذا إعادة الفتح.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

Bixilon picture Bixilon  ·  5تعليقات

Runemoro picture Runemoro  ·  3تعليقات

Draylar picture Draylar  ·  6تعليقات

Awakened-Redstone picture Awakened-Redstone  ·  4تعليقات

Boundarybreaker picture Boundarybreaker  ·  3تعليقات