SlideShare a Scribd company logo
1 of 26
Mob(というかEntity)のいろいろ
@ayamitsu0321
環境:
Minecraft 1.7.10
forge-1.7.10-10.13.0.1199
• EntityとItemStackの相互変換(3-5)
• DataWatcherを用いた同期(6-10)
• entityIdを用いた同期(11-14)
• EntityListの説明(15-16)
• Eventの種類(17-21)
• RenderManagerでの描画(22-23)
• Modelの非表示(24-25)
目次
EntityとItemStackの相互変換
共通点
EntityとItemStackの保存の流
れ
net.minecraft.entity.Entity
net.minecraft.nbt.NBTTagCompound
net.minecraft.item.ItemStack
デモ
DataWatcherを用いた同期
net.minecraft.entity.DataWatcher
• byte
• short
• int
• float
• ItemStack
• ChunkCoordinates
使える型
コード
初期化
コード
同期の流れ
コード
注意点
• Indexが重複しないようにする
• 型の不一致や予期せぬ誤動作を起こす
• byteやshortなどのintをキャストしていれるも
のは確実にキャストする
• ItemStackやChunkCoordinatesを入れる場
合、nullは絶対にいれない
• NullPointerExceptionがでる
• 既存のEntityに対して外部から新たにIndex追
加してはいけない
• 他のMODが同じようなことをしている可能
性(杞憂?)
entityIdを用いた同期
ServerとClientでentityIdは共通
同期できる(真理)
同期の流れ
WorldのloadedEntityListからentityIdの一致
するEntityを探す
注意点
• setEntityIdは使わない
• タイミングによってはServerとClientの接続が
確立されてない場合があるので注意する
• 例:EntityJoinWorldEvent
• Packet送信後、返ってくるまで送信し続け
るなどの対処が必要
• EntityLivingBase継承の場合は
LivingEvent.LivingUpdateEventが使える
EntityListの説明
net.minecraft.entity.EntityList
• Entityに関する名前、Class、IDの情報がMap
で保持されている
• Entityからそれらの情報がとれる
• addMappingを使えば情報を上書きできる
• 名前、Class、あるいはIDのいずれかの情報
から他の情報がとれる
• Entityのインスタンスの生成をやってくれる
コード
Eventの種類
net.minecraftforge.event.entity
• EntityEvent.EntityConstructing
• コンストラクタで呼ばれる
• EntityEvent.CanUpdate
• 調査不足
• EntityEvent.EnteringChunk
• ChunkにEntityが追加されたときによばれる
• EntityJoinWorldEvent
• WorldのspawnEntityInWorldでよばれる
• EntityStruckByLightningEvent
• 雷がEntityにあたったときによばれる
• PlaySoundAtEntityEvent
• Entityで音が鳴らされるときによばれる
net.minecraftforge.event.entity
.living
• EnderTeleportEvent
• Endermanがテレポート、あるいはEnder
pearlを使ってテレポートしたときによばれ
る
• LivingAttackEvent
• 攻撃を受けたときによばれる
• LivingDeathEvent
• 死んだときによばれる
• LivingDropsEvent
• 死んでアイテムをドロップするときによば
れる
• LivingEvent.LivingUpdateEvent
• LivingEvent.LivingJumpEvent
• ジャンプしたときによばれる
• LivingFallEvent
• 落ちたときによばれる
• LivingHurtEvent
• ダメージを与えられたときによばれる
• LivingPackSizeEvent
• 調査不足
• LivingSetAttackTargetEvent
• 攻撃対象を設定したときによばれる
• LivingSpawnEvent
• スポーンしたときによばれる
• LivingSpawnEvent.CheckSpawn
• スポーンする直前にMobをスポーンさせる
設定をする
• LivingEvent.SpecialSpawn
• スポーナーでスポーンさせるときによばれ
る
• LivingEvent.AllowDespawn
• tickで処理、その時点でデスポーンを許可す
るかどうかを設定できる
• 即座にデスポーンさせるということではな
い
• ZombieEvent.SummonAidEvent
• ゾンビの村襲撃イベントでよばれる?
• 調査不足
RenderManagerでの描画
net.minecraft.client.renderer.
entity.RenderManager
• renderEntityWithPosYawにEntityと座標など
をぶちこめばよい
• GUIやTileEntity、IItemRendererなどどこ
でも使える
• 引数の最後のfloatは0.0Fで大丈夫
• RenderBoatでは0.0625Fいれてる
• 調査不足
Modelの非表示
• Entityは基本的にModelをRenderで描画
• ModelRendererのisHiddenをtrueにすると非
表示にできる
デモ
おわり

More Related Content

Similar to Modding会 in Kyoto

Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発信之 岩永
 
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APIAkira Hatsune
 
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~de:code 2017
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能Unity Technologies Japan K.K.
 
NoSQL and JavaScript 2013-02-09
NoSQL and JavaScript 2013-02-09NoSQL and JavaScript 2013-02-09
NoSQL and JavaScript 2013-02-09WakandaJA
 
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックJun-ichi Sakamoto
 
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能Unity Technologies Japan K.K.
 
Ember.js Tokyo event 2014/09/22 (Japanese)
Ember.js Tokyo event  2014/09/22 (Japanese)Ember.js Tokyo event  2014/09/22 (Japanese)
Ember.js Tokyo event 2014/09/22 (Japanese)Yuki Shimada
 
Windows スクリプトセミナー WMI編 VBScript&WMI
Windows スクリプトセミナー WMI編 VBScript&WMIWindows スクリプトセミナー WMI編 VBScript&WMI
Windows スクリプトセミナー WMI編 VBScript&WMIjunichi anno
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜Mikito Yoshiya
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKitNaruto TAKAHASHI
 

Similar to Modding会 in Kyoto (14)

Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発
 
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 API
 
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
[DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
 
20170703_05 IoTビジネス共創ラボ
20170703_05 IoTビジネス共創ラボ20170703_05 IoTビジネス共創ラボ
20170703_05 IoTビジネス共創ラボ
 
Mobile Web
Mobile WebMobile Web
Mobile Web
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
 
NoSQL and JavaScript 2013-02-09
NoSQL and JavaScript 2013-02-09NoSQL and JavaScript 2013-02-09
NoSQL and JavaScript 2013-02-09
 
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
 
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
 
Ember.js Tokyo event 2014/09/22 (Japanese)
Ember.js Tokyo event  2014/09/22 (Japanese)Ember.js Tokyo event  2014/09/22 (Japanese)
Ember.js Tokyo event 2014/09/22 (Japanese)
 
Windows スクリプトセミナー WMI編 VBScript&WMI
Windows スクリプトセミナー WMI編 VBScript&WMIWindows スクリプトセミナー WMI編 VBScript&WMI
Windows スクリプトセミナー WMI編 VBScript&WMI
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
 
JJUG CCC.pptx
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptx
 

Modding会 in Kyoto

Editor's Notes

  1. デモ
  2. EntityLivingBaseのentityInit
  3. EntityのクラスのentityIdの宣言をみせる
  4. デモ