Skip to content

Commit

Permalink
fix bed not working
Browse files Browse the repository at this point in the history
  • Loading branch information
Thepigcat76 committed Apr 29, 2024
1 parent bac02f3 commit 5bfe4b5
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
23 changes: 23 additions & 0 deletions src/main/java/com/leclowndu93150/invertedbed/InvertedBedBlock.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,23 @@


import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.npc.Villager;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.BedBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BedPart;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;

import java.util.List;

public class InvertedBedBlock extends BedBlock {
public InvertedBedBlock(DyeColor p_49454_, Properties p_49455_) {
Expand All @@ -16,4 +29,14 @@ public InvertedBedBlock(DyeColor p_49454_, Properties p_49455_) {
public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) {
return new InvertedBedBlockEntity(pPos, pState);
}

private boolean kickVillagerOutOfBed(Level pLevel, BlockPos pPos) {
List<Villager> list = pLevel.getEntitiesOfClass(Villager.class, new AABB(pPos), LivingEntity::isSleeping);
if (list.isEmpty()) {
return false;
} else {
list.get(0).stopSleeping();
return true;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.leclowndu93150.invertedbed;

import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.core.BlockPos;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.block.BedBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
Expand Down
18 changes: 12 additions & 6 deletions src/main/java/com/leclowndu93150/invertedbed/SleepingLogic.java
Original file line number Diff line number Diff line change
@@ -1,38 +1,44 @@
package com.leclowndu93150.invertedbed;

import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.LevelAccessor;
import net.neoforged.bus.api.Event;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.event.entity.player.PlayerWakeUpEvent;
import net.neoforged.neoforge.event.entity.player.SleepingLocationCheckEvent;
import net.neoforged.neoforge.event.entity.player.SleepingTimeCheckEvent;
import net.neoforged.neoforge.event.level.SleepFinishedTimeEvent;

import static com.leclowndu93150.invertedbed.Main.INVERTED_BED;
import static com.leclowndu93150.invertedbed.Main.MODID;

@Mod.EventBusSubscriber(modid = "inverted_bed")
@Mod.EventBusSubscriber(modid = MODID)
public class SleepingLogic {
@SubscribeEvent
public static void onTrySleep(PlayerWakeUpEvent event) {
if (event.getEntity().getSleepTimer() >= 99 && event.getEntity().level().getBlockState(event.getEntity().getSleepingPos().get()).getBlock().equals(INVERTED_BED)) {
if (event.getEntity().level() instanceof ServerLevel serverLevel) {
serverLevel.setDayTime(13000);
}
if (!event.getEntity().level().isClientSide){
((ServerLevel) event.getEntity().level()).setDayTime(13000);
}
}

@SubscribeEvent
public static void onCheckTime(SleepingTimeCheckEvent event) {
if (event.getEntity().level().getBlockState(event.getSleepingLocation().get()).getBlock().equals(INVERTED_BED)) {
if (event.getEntity().level().getBlockState(event.getSleepingLocation().get()).is(INVERTED_BED)) {
event.setResult(event.getEntity().level().isDay() ? Event.Result.ALLOW : Event.Result.DENY);
}
System.out.println("checking time: " + event.getSleepingLocation());
}

@SubscribeEvent
public static void onBedCheck(SleepingLocationCheckEvent event) {
if (event.getEntity().level().getBlockState(event.getSleepingLocation()).getBlock().equals(INVERTED_BED)) {
event.setResult(Event.Result.ALLOW);
}
System.out.println("checking location: " + event.getSleepingLocation());
}

}

0 comments on commit 5bfe4b5

Please sign in to comment.