Yarn: ํ˜„์žฌ setBlockState ๋น„ํŠธํ”Œ๋ž˜๊ทธ ์„ค๋ช…

์— ๋งŒ๋“  2019๋…„ 05์›” 18์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: FabricMC/yarn

๋Œ“๊ธ€ ๊ธฐ๋Šฅ์ด ๋งˆ์นจ๋‚ด ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์—ด๋ฆด ๊ฒƒ์ด์ง€๋งŒ Fabric API์—๋„ ๋‚˜์—ด๋˜๊ธฐ๋ฅผ ํฌ๋งํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • 1์€ "์„œ๋ฒ„์—์„œ ์ด์›ƒ ์—…๋ฐ์ดํŠธ ๋ณด๋‚ด๊ธฐ"์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • 2 - 1์ด๋ฉด [์„œ๋ฒ„์—์„œ ๋ธ”๋ก์„ ๋”ํ‹ฐ๋กœ ํ‘œ์‹œํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ Œ๋” ์—…๋ฐ์ดํŠธ ์˜ˆ์•ฝ]
  • 4 - 1์ธ ๊ฒฝ์šฐ ์œ„์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ Œ๋”๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.
  • 8 - 1์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์Šค๋ ˆ๋“œ์—์„œ ๋ Œ๋” ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ•์ œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • 16 - ???
  • 32 - ์•„์ดํ…œ ์Šคํƒ ์‚ญ์ œ ๊ฑด๋„ˆ๋›ฐ๊ธฐ(Block.replaceBlock์—์„œ ์‚ฌ์šฉ)
  • 64 - https://github.com/FabricMC/yarn/issues/634 ์— ๋”ฐ๋ผ "์ด๋™" ์ž‘์—…(์˜ˆ: ํ”ผ์Šคํ†ค์œผ๋กœ?)์˜ ๋ธ”๋ก ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋” ๋‚˜์€ ์„ค๋ช…/์ด๋ฆ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ๋˜ํ•œ updateNeighborStates๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๊ณ  method_11637์ด๋ผ๊ณ  ํ™•์‹ ํ•˜๋ฉฐ ๋‘˜ ๋‹ค ํ•ด๋‹น ํ”Œ๋ž˜๊ทธ 16๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@asiekierka

0b0000000 // 0 - ๊ธฐ๋ณธ๊ฐ’/์—†์Œ
0b0000001 // 1 - PROPAGATE_CHANGE
0b0000010 // 2 - NOTIFY_LISTENERS
0b0000100 // 4 - NO_REDRAW
0b0001000 // 8 - REDRAW_ON_MAIN_THREAD
0b0010000 // 16 - FORCE_STATE*
0b0100000 // 32 - SKIP_DROPS
0b1000000 // 64 - IS_MECHANICAL_UPDATE

  • method_11637์€ ๋ธ”๋ก์ด ์ฃผ๋ณ€ ํ™˜๊ฒฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒํƒœ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋™์ž‘์„ ๋„๊ณ  ์ „๋‹ฌ๋œ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ด๋“  ์‚ฌ์šฉ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ: DebugStickItem

iWorld_1.setBlockState(blockPos_1, blockState_2, 18);

0b0010010 // 18 - FORCE_STATE | PROPAGATE_CHANGE

ํŽธ์ง‘: ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ผ๋ถ€ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค( @ChloeDawn ).

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

๋˜ํ•œ World.updateHorizontalAdjacent -> World.updateNeighborComparators, World.updateListeners -> ์ธก๋ฉด๋ณ„ ๋ธ”๋ก ์—…๋ฐ์ดํŠธ์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ์€ ํ”Œ๋ž˜๊ทธ 2๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@asiekierka

0b0000000 // 0 - ๊ธฐ๋ณธ๊ฐ’/์—†์Œ
0b0000001 // 1 - PROPAGATE_CHANGE
0b0000010 // 2 - NOTIFY_LISTENERS
0b0000100 // 4 - NO_REDRAW
0b0001000 // 8 - REDRAW_ON_MAIN_THREAD
0b0010000 // 16 - FORCE_STATE*
0b0100000 // 32 - SKIP_DROPS
0b1000000 // 64 - IS_MECHANICAL_UPDATE

  • method_11637์€ ๋ธ”๋ก์ด ์ฃผ๋ณ€ ํ™˜๊ฒฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒํƒœ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋™์ž‘์„ ๋„๊ณ  ์ „๋‹ฌ๋œ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ด๋“  ์‚ฌ์šฉ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ: DebugStickItem

iWorld_1.setBlockState(blockPos_1, blockState_2, 18);

0b0010010 // 18 - FORCE_STATE | PROPAGATE_CHANGE

ํŽธ์ง‘: ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ผ๋ถ€ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค( @ChloeDawn ).

์ด๋ฏธ #1003์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€์ ํ•ด์ฃผ์‹  Yanis48๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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

๊ด€๋ จ ๋ฌธ์ œ

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

Sollace picture Sollace  ยท  5์ฝ”๋ฉ˜ํŠธ

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

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

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