Yarn: Slot.onCrafted est faux

Créé le 4 août 2020  ·  5Commentaires  ·  Source: FabricMC/yarn

bug discussion refactor

Tous les 5 commentaires

Je pense que soit onSizeChanged soit onItemCountChanged serait mieux. C'est la taille de la pile, ou le nombre d'éléments, qui est modifié, pas le nombre de piles (nombre de piles).

est-ce toujours applicable après la récente refonte de mojang sur les gestionnaires d'écran comme 21w11a?

D'accord, l'analyse d'origine n'est peut-être pas correcte à 100 %. Comportement actuel :

  • Slot.onStackChanged n'est toujours pas un gestionnaire de changement de pile général.

    • Il est appelé à partir des implémentations transferSlot pour les emplacements de sortie de divers blocs d'artisanat, mais aussi pour les entrées du stand de brassage.

    • Les paramètres sont apparemment newStack, originalStack (permutés de la façon dont ils sont mappés actuellement).

    • Ce qu'il fait, c'est vérifier s'il y a eu des éléments sortis de l'emplacement et si c'est le cas, appelle onCrafted(ItemStack, int) avec le originalStack (appelé newItem dans les mappages actuels) et la différence entre les tailles de pile.

    • Je pense qu'il s'agit plutôt d'un "nombre d'éléments d'emplacement de sortie modifié".

  • Slot.onCrafted(ItemStack, int) n'est appelé que par onStackChanged .

    • Imp par défaut : no-op

    • Dans CraftingResultSlot , FurnaceOutputSlot et TradeOutputSlot l'implémentation est toujours la même : elle incrémente un champ privé amount par le paramètre int, puis appelle onCrafted(ItemStack) avec le paramètre de pile d'éléments.

  • Slot.onCrafted(ItemStack) n'est appelé que par les implémentations onCrafted(ItemStack, int) et onTakeItem dans ces trois classes.

    • Imp par défaut : no-op

    • Implémentations dans ces trois classes : réinitialise le champ privé amount à 0 et exécute les tâches de finalisation (fourneau abandonnant XP, etc.)

Conclusion (doit être confirmée avec un débogueur ou un examen plus approfondi) :

  • Toutes ces méthodes concernent le joueur qui retire des objets des emplacements de sortie (artisanat ou commerce).
  • onStackChanged est appelé lorsque le nombre d'éléments change dans l'emplacement de sortie, et onCrafted(ItemStack, int) lorsque ce nombre diminue (= les éléments sont retirés).
  • onCrafted(ItemStack) finalise le processus de sortie lorsqu'il y a soit une diminution partielle ( onStackChanged ) soit une pile complète supprimée ( onTakeItem ).
  • Ces méthodes doivent encore être renommées.

Conclusion (doit être confirmée avec un débogueur ou un examen plus approfondi) :

  • Toutes ces méthodes concernent le joueur qui retire des objets des emplacements de sortie (artisanat ou commerce).
  • onStackChanged est appelé lorsque le nombre d'éléments change dans l'emplacement de sortie, et onCrafted(ItemStack, int) lorsque ce nombre diminue (= les éléments sont retirés).

La méthode qui les appelle, transferSlot , n'est utilisée que pour un transfert rapide, c'est-à-dire un clic de décalage. Donc, onQuickTransfer me semble le plus précis. Les noms de paramètres ont en effet été intervertis.

Cela s'applique toujours à onCrafted , donc réouverture.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Runemoro picture Runemoro  ·  4Commentaires

altrisi picture altrisi  ·  4Commentaires

copygirl picture copygirl  ·  6Commentaires

Bixilon picture Bixilon  ·  5Commentaires

quat1024 picture quat1024  ·  3Commentaires