読者です 読者をやめる 読者になる 読者になる

hogepiyo

かつてはマイクラのModを作っていたがひざに矢を受けた

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らへんは, 採用するアイデアによってはクライアントのみで実行して, パケットを送ってサーバーで実行, とかややめんどくさいことになるかもしれない.