Yarn: Slot.onCrafted está errado

Criado em 4 ago. 2020  ·  5Comentários  ·  Fonte: FabricMC/yarn

bug discussion refactor

Todos 5 comentários

Acho que onSizeChanged ou onItemCountChanged seria melhor. É o tamanho da pilha, ou contagem de itens, sendo alterado, não a contagem da pilha (número de pilhas).

isso ainda é aplicável após a recente reformulação de mojang nos manipuladores de tela em como 21w11a?

Ok, a análise original pode não estar 100% correta. Comportamento atual:

  • Slot.onStackChanged ainda não é um manipulador de mudanças de pilha geral.

    • É chamado a partir de implementações de transferSlot para slots de saída de vários blocos de fabricação, mas também para entradas de estande de cerveja.

    • Os parâmetros são aparentemente newStack, originalStack (trocados de como estão mapeados atualmente).

    • O que ele faz é verificar se itens foram retirados do slot e, em caso afirmativo, chama onCrafted(ItemStack, int) com originalStack (chamado newItem nos mapeamentos atuais) e a diferença entre os tamanhos das pilhas.

    • Eu acho que isso é mais uma "contagem de itens no slot de saída alterada".

  • Slot.onCrafted(ItemStack, int) só é chamado por onStackChanged .

    • Impl padrão: no-op

    • Em CraftingResultSlot , FurnaceOutputSlot e TradeOutputSlot a implementação é sempre a mesma: ela incrementa um campo amount privado pelo parâmetro int e, em seguida, chama onCrafted(ItemStack) com o parâmetro de pilha de itens.

  • Slot.onCrafted(ItemStack) só é chamado por onCrafted(ItemStack, int) e onTakeItem implementações nessas três classes.

    • Impl padrão: no-op

    • Implementações nessas três classes: redefine o campo privado amount para 0 e executa as tarefas de finalização (desligamento do forno XP etc)

Conclusão (precisa ser confirmada com um depurador ou uma análise mais detalhada):

  • Todos esses métodos referem-se ao jogador retirando itens dos slots de produção (fabricação ou troca).
  • onStackChanged é chamado quando a contagem de itens muda no slot de saída, e onCrafted(ItemStack, int) quando essa contagem diminui (= itens são retirados).
  • onCrafted(ItemStack) finaliza o processo de saída quando há uma diminuição parcial ( onStackChanged ) ou uma pilha completa retirada ( onTakeItem ).
  • Esses métodos ainda precisam ser renomeados.

Conclusão (precisa ser confirmada com um depurador ou uma análise mais detalhada):

  • Todos esses métodos referem-se ao jogador retirando itens dos slots de produção (fabricação ou troca).
  • onStackChanged é chamado quando a contagem de itens muda no slot de saída e onCrafted (ItemStack, int) quando essa contagem diminui (= itens são retirados).

O método que os chama, transferSlot , só é usado para transferência rápida, também conhecida como shift click. Portanto, onQuickTransfer parece o mais preciso para mim. Os nomes dos parâmetros foram realmente trocados.

Isso ainda se aplica a onCrafted , então reabrindo.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Awakened-Redstone picture Awakened-Redstone  ·  4Comentários

enbrain picture enbrain  ·  4Comentários

Boundarybreaker picture Boundarybreaker  ·  3Comentários

Runemoro picture Runemoro  ·  4Comentários

Sollace picture Sollace  ·  5Comentários