-
Notifications
You must be signed in to change notification settings - Fork 0
MODDING
supermomonga edited this page Aug 5, 2013
·
3 revisions
githubにpushすると変更は自動的にpullされ、かつ以下のファイルのコードはサーバーの再起動を伴わず自動的に反映されます。
- app/event_handler.rb
- app/job.rb
プレイヤーの動作を検知する際、キー入力を直接検知することはできない。キー入力を行った結果、プレイヤーが何らかの動作を行った際、それがイベントとして発火する。
- プレイヤーのしゃがみ状態が変化した時
- プレイヤーが何か(空気ブロックを含む)をクリックした時
- ...
ただし、ジャンプイベントは取れない。理由は、「プレイヤが上方(y軸正方向)に移動したことを検出することは可能だが、それがジャンプによるものなのか、ノックバックか、はしごか、水で浮かんだのか、区別できない」ため。
- ブロックは排他的に設置される。つまり、複数のブロックは1つのマス内に共存できない。
- 一件ブロックに見えないものであっても、それが1ブロック分のある特定の空間を専有して設置されている(=Entityでない)場合、それはブロックである
- カーペット・額縁・植木鉢・花・積雪・RSパウダー
- 何もない様に見える空間も、空気ブロック(AIR)が設置されている
- Entityの一覧を見て、そこにないものはブロック、という認識でok
- 絵画はEntity(ブロックと思われがち)。経験値オーブや発射された弓矢などもEntity。自由落下中のブロックもEntity。MinecartもEntity。
- 座標を指定して直接Entityを得る方法はない
- 座標からチャンクを取得し、チャンク内のEntity一覧を取得する方法が効率的
-
Location#getChunk
とChunk#getEntities
でmin_by
でLocation#distance
の一番小さいやつを取得
- 任意のentityは任意のentityに乗れる
- Minecart on プレイヤーとか可能
- 連続して乗ることが可能(i.e. 匠on匠on匠on匠on匠on匠on匠on匠on匠on匠on匠)