Yarn: Slot.onCrafted 是错误的

创建于 2020-08-04  ·  5评论  ·  资料来源: FabricMC/yarn

所有5条评论

我认为onSizeChangedonItemCountChanged会更好。 更改的是堆栈大小或项目计数,而不是堆栈计数(堆栈数)。

在 mojang 最近对 21w11a 之类的屏幕处理程序进行改造后,这仍然适用吗?

好吧,原始分析可能不是 100% 正确。 当前行为:

  • Slot.onStackChanged仍然不是一般的堆栈更改处理程序。

    • 它是从transferSlot实现中调用的,用于各种制作块的输出槽,也用于酿造台输入。

    • 参数似乎是newStack, originalStack (从它们当前的映射方式交换)。

    • 它的作用是检查是否有物品从插槽中取出,如果有,则调用onCrafted(ItemStack, int)originalStack (在当前映射中称为newItem )以及堆栈大小。

    • 我认为这更像是“输出插槽项目计数已更改”。

  • Slot.onCrafted(ItemStack, int)仅由onStackChanged调用。

    • 默认实现:无操作

    • CraftingResultSlotFurnaceOutputSlotTradeOutputSlot ,实现总是相同的:它通过 int 参数增加一个私有的amount字段,然后调用onCrafted(ItemStack)与项目堆栈参数。

  • Slot.onCrafted(ItemStack)仅被这三个类中的onCrafted(ItemStack, int)onTakeItem实现调用。

    • 默认实现:无操作

    • 这三个类中的实现:将私有amount字段重置为 0 并运行完成任务(熔炉丢弃 XP 等)

结论(需要通过调试器或仔细查看来确认):

  • 所有这些方法都与玩家从输出槽中取出物品(制作或交易)有关。
  • onStackChanged在输出槽中的物品计数发生变化时被调用,当计数减少(= 物品被取出)时调用onCrafted(ItemStack, int)
  • onCrafted(ItemStack)在部分减少 ( onStackChanged ) 或取出完整堆栈 ( onTakeItem ) 时完成输出过程。
  • 这些方法仍然需要重命名。

结论(需要通过调试器或仔细查看来确认):

  • 所有这些方法都与玩家从输出槽中取出物品(制作或交易)有关。
  • 当输出槽中的项目计数发生变化时,onStackChanged 被调用,当计数减少(= 项目被取出)时调用 onCrafted(ItemStack, int)。

调用它们的方法transferSlot仅用于快速传输又名切换点击。 所以, onQuickTransfer对我来说似乎是最准确的。 确实切换了参数名称。

这仍然适用于onCrafted ,因此重新打开。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

quat1024 picture quat1024  ·  6评论

asiekierka picture asiekierka  ·  4评论

liach picture liach  ·  4评论

Awakened-Redstone picture Awakened-Redstone  ·  4评论

Juuxel picture Juuxel  ·  6评论