Yarn: Slot.onCrafted es incorrecto

Creado en 4 ago. 2020  ·  5Comentarios  ·  Fuente: FabricMC/yarn

bug discussion refactor

Todos 5 comentarios

Creo que onSizeChanged o onItemCountChanged sería mejor. Es el tamaño de la pila, o el recuento de elementos, que se cambia, no el recuento de la pila (número de pilas).

¿Esto sigue siendo aplicable después de la reciente renovación de mojang en los controladores de pantalla como 21w11a?

De acuerdo, es posible que el análisis original no sea 100% correcto. Comportamiento actual:

  • Slot.onStackChanged todavía no es un controlador de cambio de pila general.

    • Se llama desde implementaciones transferSlot para ranuras de salida de varios bloques de elaboración, pero también para entradas de soporte de elaboración.

    • Los parámetros son aparentemente newStack, originalStack (intercambiados de cómo están mapeados actualmente).

    • Lo que hace es verificar si se han sacado elementos de la ranura y, de ser así, llama a onCrafted(ItemStack, int) con originalStack (llamado newItem en las asignaciones actuales) y la diferencia entre los tamaños de pila.

    • Creo que esto es más un "cambio en el recuento de elementos de la ranura de salida".

  • Slot.onCrafted(ItemStack, int) solo es llamado por onStackChanged .

    • Implicado predeterminado: no-op

    • En CraftingResultSlot , FurnaceOutputSlot y TradeOutputSlot la implementación es siempre la misma: incrementa un campo privado amount por el parámetro int, luego llama a onCrafted(ItemStack) con el parámetro de pila de elementos.

  • Slot.onCrafted(ItemStack) solo es llamado por implementaciones onCrafted(ItemStack, int) y onTakeItem en esas tres clases.

    • Implicado predeterminado: no-op

    • Implementaciones en esas tres clases: restablece el campo privado amount a 0 y ejecuta tareas de finalización (horno que deja caer XP, etc.)

Conclusión (debe confirmarse con un depurador o una mirada más cercana):

  • Todos estos métodos se relacionan con que el jugador saque elementos de las ranuras de salida (elaboración o comercio).
  • onStackChanged se llama cuando el recuento de elementos cambia en la ranura de salida, y onCrafted(ItemStack, int) cuando ese recuento disminuye (= se eliminan los elementos).
  • onCrafted(ItemStack) finaliza el proceso de salida cuando hay una disminución parcial ( onStackChanged ) o una pila completa extraída ( onTakeItem ).
  • Estos métodos todavía necesitan cambios de nombre.

Conclusión (debe confirmarse con un depurador o una mirada más cercana):

  • Todos estos métodos se relacionan con que el jugador saque elementos de las ranuras de salida (elaboración o comercio).
  • onStackChanged se llama cuando el recuento de elementos cambia en la ranura de salida, y onCrafted (ItemStack, int) cuando ese recuento disminuye (= los elementos se eliminan).

El método que los llama, transferSlot , solo se usa para transferencias rápidas, también conocidas como hacer clic en shift. Entonces, onQuickTransfer parece el más preciso. De hecho, se cambiaron los nombres de los parámetros.

Esto todavía se aplica a onCrafted , por lo que reabrir.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Bixilon picture Bixilon  ·  5Comentarios

Runemoro picture Runemoro  ·  4Comentarios

Boundarybreaker picture Boundarybreaker  ·  3Comentarios

haykam821 picture haykam821  ·  4Comentarios

Awakened-Redstone picture Awakened-Redstone  ·  4Comentarios