PlayerSleepInBedEventの利用
PlayerSleepInBedEventを利用した簡単なModを作成
PlayerSleepInBedEventはプレイヤーがベッドで寝ているときに割りこまれるイベント. これを使うことで「ベッドに寝てるときに」何かすることができる.
ベッドで寝るとライフが回復するMod
と, いうわけでさくっと作ってみた.
package sample.event; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; @Mod ( modid = "SampleEvent", name = "Sample Event", version = "0.0.1" ) @NetworkMod ( clientSideRequired = true, serverSideRequired = false ) public class SampleEventCore { @Mod.Init public void init(FMLInitializationEvent event) { MinecraftForge.EVENT_BUS.register(this); } @ForgeSubscribe public void doHealOnSleep(PlayerSleepInBedEvent event) { if (!event.entityPlayer.worldObj.isRemote) { event.entityPlayer.heal(20); } } }
コードはこれだけ. 寝ると体力が回復するというRPG的なMod. これだけでもMod!
他の使い道とか
eventにEntityPlayerとその座標x, y, zがあるのでそれで出来ることは色々できる. アイデアとしては
- 特定の場所で寝ると, 別ディメンションにテレポートする
なんていう夢ディメンションModとかありかもしれない.
アイデア次第では色々できるかもしれない. なお, !world.isRemoteらへんは, 採用するアイデアによってはクライアントのみで実行して, パケットを送ってサーバーで実行, とかややめんどくさいことになるかもしれない.