Yarn: Slot.onCrafted๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 08์›” 04์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: FabricMC/yarn

bug discussion refactor

๋ชจ๋“  5 ๋Œ“๊ธ€

onSizeChanged ๋˜๋Š” onItemCountChanged ๊ฐ€ ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Šคํƒ ์ˆ˜(์Šคํƒ ์ˆ˜)๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณ€๊ฒฝ๋˜๋Š” ์Šคํƒ ํฌ๊ธฐ ๋˜๋Š” ํ•ญ๋ชฉ ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 21w11a์™€ ๊ฐ™์€ ํ™”๋ฉด ํ•ธ๋“ค๋Ÿฌ์— ๋Œ€ํ•œ mojang์˜ ์ตœ๊ทผ ๊ฐœ์ • ํ›„์—๋„ ์—ฌ์ „ํžˆ ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

์ข‹์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ๋ถ„์„์ด 100% ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ–‰๋™:

  • Slot.onStackChanged ๋Š” ์—ฌ์ „ํžˆ ์ผ๋ฐ˜์ ์ธ ์Šคํƒ ๋ณ€๊ฒฝ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

    • ๋‹ค์–‘ํ•œ ๊ณต์˜ˆ ๋ธ”๋ก์˜ ์ถœ๋ ฅ ์Šฌ๋กฏ์— ๋Œ€ํ•œ transferSlot ๊ตฌํ˜„์—์„œ ํ˜ธ์ถœ๋˜์ง€๋งŒ ์–‘์กฐ ์Šคํƒ ๋“œ ์ž…๋ ฅ์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    • ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ฒ‰๋ณด๊ธฐ์— newStack, originalStack ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค(ํ˜„์žฌ ๋งคํ•‘๋œ ๋ฐฉ์‹์—์„œ ๊ต์ฒด๋จ).

    • ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์„ํ•˜๋Š” ๊ฒƒ์€, ๊ทธ๋ ‡๋‹ค๋ฉด ํ•ญ๋ชฉ์ด ์Šฌ๋กฏ์˜ ๊บผ๋‚ด์–ด ๋œ ๊ฒฝ์šฐ ๊ฒ€์‚ฌ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค onCrafted(ItemStack, int) ์™€ originalStack (์ „ํ™” newItem ํ˜„์žฌ ๋งคํ•‘์—์„œ)๊ณผ์˜ ์ฐจ์ด ์‚ฌ์ด ์Šคํƒ ํฌ๊ธฐ.

    • ๋‚˜๋Š” ์ด๊ฒƒ์ด "์ถœ๋ ฅ ์Šฌ๋กฏ ํ•ญ๋ชฉ ์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋จ"์— ๋” ๊ฐ€๊น๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • Slot.onCrafted(ItemStack, int) ๋Š” onStackChanged ์—์„œ๋งŒ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ๋ณธ impl: no-op

    • CraftingResultSlot , FurnaceOutputSlot ๋ฐ TradeOutputSlot ๊ตฌํ˜„์€ ํ•ญ์ƒ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. int ๋งค๊ฐœ๋ณ€์ˆ˜์— ์˜ํ•ด private amount ํ•„๋“œ๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ ๋‹ค์Œ onCrafted(ItemStack) ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์•„์ดํ…œ ์Šคํƒ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š”

  • Slot.onCrafted(ItemStack) ๋Š” ์ด ์„ธ ํด๋ž˜์Šค์˜ onCrafted(ItemStack, int) ๋ฐ onTakeItem ๊ตฌํ˜„์—์„œ๋งŒ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ๋ณธ impl: no-op

    • ์ด ์„ธ ๊ฐ€์ง€ ํด๋ž˜์Šค์˜ ๊ตฌํ˜„: ๊ฐœ์ธ amount ํ•„๋“œ๋ฅผ 0์œผ๋กœ ์žฌ์„ค์ •ํ•˜๊ณ  ๋งˆ๋ฌด๋ฆฌ ์ž‘์—… ์‹คํ–‰(๋กœ์—์„œ XP๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ๋“ฑ)

๊ฒฐ๋ก (๋””๋ฒ„๊ฑฐ ๋˜๋Š” ์ž์„ธํžˆ ํ™•์ธํ•ด์•ผ ํ•จ):

  • ์ด ๋ชจ๋“  ๋ฐฉ๋ฒ•์€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ถœ๋ ฅ ์Šฌ๋กฏ์—์„œ ์•„์ดํ…œ์„ ๊บผ๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์ œ์ž‘ ๋˜๋Š” ๊ฑฐ๋ž˜).
  • onStackChanged ๋Š” ์ถœ๋ ฅ ์Šฌ๋กฏ์—์„œ ์•„์ดํ…œ ๊ฐœ์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ํ˜ธ์ถœ๋˜๊ณ  onCrafted(ItemStack, int) ๊ทธ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•  ๋•Œ(= ์•„์ดํ…œ์ด ๊บผ์ง) ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • onCrafted(ItemStack) ๋ถ€๋ถ„ ๊ฐ์†Œ( onStackChanged ) ๋˜๋Š” ์ „์ฒด ์Šคํƒ ์ œ๊ฑฐ( onTakeItem )๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ถœ๋ ฅ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋Š” ์—ฌ์ „ํžˆ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก (๋””๋ฒ„๊ฑฐ ๋˜๋Š” ์ž์„ธํžˆ ํ™•์ธํ•ด์•ผ ํ•จ):

  • ์ด ๋ชจ๋“  ๋ฐฉ๋ฒ•์€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ถœ๋ ฅ ์Šฌ๋กฏ์—์„œ ์•„์ดํ…œ์„ ๊บผ๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์ œ์ž‘ ๋˜๋Š” ๊ฑฐ๋ž˜).
  • onStackChanged๋Š” ์ถœ๋ ฅ ์Šฌ๋กฏ์—์„œ ํ•ญ๋ชฉ ์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ํ˜ธ์ถœ๋˜๊ณ  onCrafted(ItemStack, int)๋Š” ํ•ด๋‹น ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•˜๋ฉด(= ํ•ญ๋ชฉ์ด ๊บผ์ง) ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

transferSlot ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ์‹œํ”„ํŠธ ํด๋ฆญ์ด๋ผ๊ณ ๋„ ํ•˜๋Š” ๋น ๋ฅธ ์ „์†ก์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ onQuickTransfer ๊ฐ€ ๊ฐ€์žฅ ์ •ํ™•ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์‹ค์ œ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ onCrafted ์— ์ ์šฉ๋˜๋ฏ€๋กœ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

quat1024 picture quat1024  ยท  3์ฝ”๋ฉ˜ํŠธ

asiekierka picture asiekierka  ยท  3์ฝ”๋ฉ˜ํŠธ

copygirl picture copygirl  ยท  6์ฝ”๋ฉ˜ํŠธ

Awakened-Redstone picture Awakened-Redstone  ยท  4์ฝ”๋ฉ˜ํŠธ

Runemoro picture Runemoro  ยท  3์ฝ”๋ฉ˜ํŠธ