diff --git a/plugin/src/main/java/com/alttd/cometskyblock/listeners/BedListener.java b/plugin/src/main/java/com/alttd/cometskyblock/listeners/BedListener.java new file mode 100644 index 0000000..dd8aae1 --- /dev/null +++ b/plugin/src/main/java/com/alttd/cometskyblock/listeners/BedListener.java @@ -0,0 +1,45 @@ +package com.alttd.cometskyblock.listeners; + +import com.alttd.cometskyblock.CometSkyBlockPlugin; +import com.alttd.cometskyblock.island.Island; +import com.destroystokyo.paper.MaterialTags; +import org.bukkit.GameRule; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPlaceEvent; + +/** + * By default Gamerule DO_INSOMNIA is disabled, the moment an island member sleeps this gamerule will be enabled. + * Still debating if this should only be enabled for those that have slept + */ +public class BedListener implements Listener { + + private final CometSkyBlockPlugin plugin; + public BedListener(CometSkyBlockPlugin plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onBedPlace(BlockPlaceEvent event) { + if (!MaterialTags.BEDS.isTagged(event.getBlockPlaced())) { + return; + } + Player player = event.getPlayer(); + World world = player.getWorld(); + Island island = plugin.getIslandManager().getIsland(world); + if (island == null) { + return; + } + + if (!island.canBuild(player.getUniqueId())) { + event.setCancelled(true); + return; + } + + world.setGameRule(GameRule.DO_INSOMNIA, true); + } + + +} diff --git a/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerJoinListener.java b/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerJoinListener.java index 0fa129e..a96508f 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerJoinListener.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/listeners/PlayerJoinListener.java @@ -1,12 +1,6 @@ package com.alttd.cometskyblock.listeners; import com.alttd.cometskyblock.CometSkyBlockPlugin; -import com.alttd.cometskyblock.worldgenerator.IslandGenerator; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; @@ -20,14 +14,6 @@ public class PlayerJoinListener implements Listener { @EventHandler public void onPlayerJoinEvent(PlayerJoinEvent playerJoinEvent) { - Player player = playerJoinEvent.getPlayer(); - String island = "Island"; - World world = Bukkit.getWorld(island); - if (world == null) { - new IslandGenerator(plugin).create(island); - } - player.setGameMode(GameMode.CREATIVE); - player.setFlying(true); - player.teleportAsync(new Location(world, 0, 256, 0)); + } }