package com.hea3ven.hardmodetweaks.sleep;
import javax.annotation.Nonnull;
import net.minecraft.block.BlockBed;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;
import net.minecraftforge.common.util.BlockSnapshot;
import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class SleepManager {
public static int sleepPreventionTimeout = 3;
@SubscribeEvent
public void blockPlaceEvent(BlockEvent.MultiPlaceEvent event) {
if (event.getPlacedBlock().getBlock() instanceof BlockBed) {
BedPlacements bedPlacements = getBedPlacements(event.getWorld());
for (BlockSnapshot snap : event.getReplacedBlockSnapshots()) {
bedPlacements.onBedPlaced(event.getWorld(), snap.getPos());
}
}
}
@SubscribeEvent
public void sleep(PlayerSleepInBedEvent event) {
BedPlacements bedPlacements = getBedPlacements(event.getEntity().worldObj);
if (bedPlacements.canSleep(event.getEntity(), event.getPos()))
return;
event.getEntityPlayer()
.addChatComponentMessage(new TextComponentTranslation("tile.bed.recentlyPlaced"));
event.setResult(EntityPlayer.EnumStatus.OTHER_PROBLEM);
}
@Nonnull
private BedPlacements getBedPlacements(World world) {
BedPlacements bedPlacements =
(BedPlacements) world.loadItemData(BedPlacements.class, "beds_data");
if (bedPlacements == null) {
bedPlacements = new BedPlacements("beds_data");
world.setItemData("beds_data", bedPlacements);
}
return bedPlacements;
}
}