ํ์ฌ "๋ธ๋ก ์์ "์ด๋ผ๊ณ ํ๋ ์์ฌ๋ ๋ค์์์ ์ฌ์ฉ๋ฉ๋๋ค.
"์ฐจ๋จ ์์ "์ ์๋ฒ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋๊ณ ์ฐจ๋จ ๋ฒ์ ๋ด์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค("์ฐจ๋จ ์์ "์ด ์ด๋ฌํ ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋จ). ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์์๋ ์ฒ๋ฆฌํด์ผ ํ๋ ์ด๋ฒคํธ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ค ์ด๋ฆ์ ํผ๋์ค๋ฝ๊ณ ์ค์ ๋ชฉ์ ์ ํฌ์ฐฉํ์ง ๋ชปํฉ๋๋ค. ์ค๋ฅธ์ชฝ ํด๋ฆญ ๋์ ๋ฑ์ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํด ํธ์ถํ๋ ค๋ ๋ฉ์๋์ฒ๋ผ ๋ณด์ ๋๋ค. ๋์ ๋ญ๋ผ๊ณ ๋ถ๋ฌ์ผ ํ ๊น์?
๋จ์ํจ์ ์ถ๊ตฌํ ์๋ ์์ต๋๋ค... ๋๊ธฐํ ์ด๋ฒคํธ?
์ธ๊ณ์ ๋ํ ์ธ๊ณ ์ด๋ฒคํธ๋ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ์ง๋ง Block
์ธ์คํด์ค์ ์ข
์๋์ง ์์ผ๋ฏ๋ก "[๋ฌด์ธ๊ฐ] ์ด๋ฒคํธ"๊ฐ ์ข์ต๋๋ค.
"๋๊ธฐํ ์ด๋ฒคํธ"๋ ์ฝ๊ฐ ๋ชป์๊ธด IMO์ด์ง๋ง ์ค๋ช ์ ์ด๋ฏ๋ก ์๋ํ ์ ์์ต๋๋ค.
BlockEvent
?
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ก์ ์ด ์ด ๋ชจ๋ ๊ฒ์ ์๋ฒฝํ๊ฒ ์ค๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. action์ด๋ผ๋ ๋จ์ด๋ " ์๋ฃ๋ ๊ฒ "(๋ฐ๊ธฐ, ์ฐ์ฃผํ๊ธฐ, ์ธ๋ฆฌ๊ธฐ, ์ด๊ธฐ, ๊ด์ ๋ฐฉ์ถ ๋ฑ)์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋จ์ํ ์ํ๋๋ ๊ฒ๋ณด๋ค ๋ ๊ตฌ์ฒด์ ์ด๋ฉฐ ํด๋ผ์ด์ธํธ์์ ์ํํด์ผ ํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ชฉ๋ก์ ๋ค์ ์ดํด๋ณด๊ณ ํด๋น ํจํด์ ์ฐพ์ ์ ์๋์ง ํ์ธํ์ญ์์ค.
BlockEvent
์ ๋ฌธ์ ๋ ์ปค๋ฎค๋ํฐ ์ ์ฒด์์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ธ๊ณ ์ด๋ฒคํธ์ ์ผ์นํ์ง๋ง ์ด๋ฆ์ "์ฐจ๋จ ์กฐ์น"์ ๋์ผํ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ์ ๋ World.addBlockAction
๋ฅผ addSyncedBlockEvent
๋ก, Block.onBlockAction
๋ฅผ onSyncedBlockEvent
๋ก ๋ณ๊ฒฝํ๋๋ก ์ ์ํฉ๋๋ค. ํ์ฌ BlockAction
๋ผ๊ณ ํ๋ ํด๋์ค๋ $ BlockEvent
๋ก ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ํด๋์ค์ ๋ํด ๋๊ธฐํ๋ ๊ฒ์ ์๋ฏธํ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ SyncedBlockEvent
ํ์๊ฐ ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, ์ธ๊ณ ์ด๋ฒคํธ์ ์ด๋ฆ์ ๋๊ธฐํ๋ ์ธ๊ณ ์ด๋ฒคํธ๋ก ๋ณ๊ฒฝํ์ฌ ๋ณด๋ค ๋ช
ํํ๊ณ ์ผ๊ด์ฑ ์๋ ์ธ๊ณ ์ด๋ฒคํธ๋ฅผ ์ ์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
BlockEvent
์ ๋ฌธ์ ๋ ์ปค๋ฎค๋ํฐ ์ ์ฒด์์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ธ๊ณ ์ด๋ฒคํธ์ ์ผ์นํ์ง๋ง ์ด๋ฆ์ "์ฐจ๋จ ์กฐ์น"์ ๋์ผํ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.๋ฐ๋ผ์ ์ ๋
World.addBlockAction
๋ฅผaddSyncedBlockEvent
๋ก,Block.onBlockAction
๋ฅผonSyncedBlockEvent
๋ก ๋ณ๊ฒฝํ๋๋ก ์ ์ํฉ๋๋ค. ํ์ฌBlockAction
๋ผ๊ณ ํ๋ ํด๋์ค๋ $BlockEvent
๋ก ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ํด๋์ค์ ๋ํด ๋๊ธฐํ๋ ๊ฒ์ ์๋ฏธํ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์SyncedBlockEvent
ํ์๊ฐ ์์ต๋๋ค.๋ง์ฐฌ๊ฐ์ง๋ก, ์ธ๊ณ ์ด๋ฒคํธ์ ์ด๋ฆ์ ๋๊ธฐํ๋ ์ธ๊ณ ์ด๋ฒคํธ๋ก ๋ณ๊ฒฝํ์ฌ ๋ณด๋ค ๋ช ํํ๊ณ ์ผ๊ด์ฑ ์๋ ์ธ๊ณ ์ด๋ฒคํธ๋ฅผ ์ ์ํฉ๋๋ค.