summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinenash <minenash@protonmail.com>2019-01-06 22:01:45 -0500
committerMinenash <minenash@protonmail.com>2019-01-06 22:01:45 -0500
commitbffae3162fbfa3d09d3fd433c0810a70d74c6915 (patch)
treecb6b3b30b4a4d1e0f27efae65ccfd83daec42fd5
parenta45fd051db87279c7c3d04a23e891077bab4b8ac (diff)
Started Survival Module. Added Majority Sleep
-rw-r--r--src/main/java/com/redstoner/modules/survival/Survival.cmd0
-rw-r--r--src/main/java/com/redstoner/modules/survival/Survival.java83
-rw-r--r--src/main/java/com/redstoner/modules/survival/module.info3
3 files changed, 86 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/survival/Survival.cmd b/src/main/java/com/redstoner/modules/survival/Survival.cmd
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/survival/Survival.cmd
diff --git a/src/main/java/com/redstoner/modules/survival/Survival.java b/src/main/java/com/redstoner/modules/survival/Survival.java
new file mode 100644
index 0000000..b7fa7ae
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/survival/Survival.java
@@ -0,0 +1,83 @@
+package com.redstoner.modules.survival;
+
+import java.util.List;
+
+import org.bukkit.Bukkit;
+import org.bukkit.World;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerQuitEvent;
+import org.bukkit.event.player.PlayerTeleportEvent;
+
+import com.redstoner.annotations.AutoRegisterListener;
+import com.redstoner.annotations.Commands;
+import com.redstoner.annotations.Version;
+import com.redstoner.misc.CommandHolderType;
+import com.redstoner.misc.Main;
+import com.redstoner.modules.Module;
+import com.redstoner.modules.datamanager.DataManager;
+
+import net.nemez.chatapi.ChatAPI;
+
+@Commands(CommandHolderType.File)
+@AutoRegisterListener
+@Version(major = 5, minor = 0, revision = 0, compatible = 4)
+public class Survival implements Module, Listener {
+
+ @EventHandler
+ public void onPlayerTeleport(PlayerTeleportEvent e) {
+ World w1 = e.getFrom().getWorld();
+ World w2 = e.getTo().getWorld();
+
+ checkSleep(w1);
+ if (!w1.getName().equals(w2.getName()))
+ checkSleep(w2);
+ }
+
+ @EventHandler
+ public void onLeave(PlayerQuitEvent e) {
+ checkSleep(e.getPlayer().getWorld());
+ }
+
+ boolean suspendEvents = false;
+
+ public void checkSleep(World world) {
+ if (suspendEvents || isDay(world.getTime()))
+ return;
+
+ int sleepingPlayers = 0;
+ for (Player p : world.getPlayers())
+ if (p.isSleeping())
+ sleepingPlayers++;
+
+ int perSleeping = 100 * sleepingPlayers / world.getPlayers().size();
+ int perNeeded = (Integer) DataManager.getConfigOrDefault("perNeededToSleep", 51);
+
+ if (perSleeping >= perNeeded) {
+ notifyPlayers(world.getPlayers(), "&e" + perSleeping + "%&0 were sleeping. The &6sun&0 is rising!");
+ world.setTime(23450);
+ world.setStorm(false);
+ world.setThundering(false);
+ suspendEvents = true;
+ Bukkit.getScheduler().scheduleSyncDelayedTask(Main.plugin, () -> resumeEvents(), 20);
+ }
+ else
+ notifyPlayers(world.getPlayers(), "&e" + perSleeping + "%&0 are sleeping. &e" + perNeeded + "%&0 needed");
+
+ }
+
+ public boolean resumeEvents() {
+ suspendEvents = false;
+ return true;
+ }
+
+ public boolean isDay(long time) {
+ return time < 12300 || time > 23850;
+ }
+
+ public void notifyPlayers(List<Player> players, String msg) {
+ for (Player p : players)
+ ChatAPI.sendActionBar(p, "&0[&2Sleep&0] " + msg);
+ }
+}
diff --git a/src/main/java/com/redstoner/modules/survival/module.info b/src/main/java/com/redstoner/modules/survival/module.info
new file mode 100644
index 0000000..c8a5a00
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/survival/module.info
@@ -0,0 +1,3 @@
+displayName: Survival
+category: Other
+description: A module to contain features related to the survival worlds \ No newline at end of file