diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/artifacts/servercore_za_jar.xml b/.idea/artifacts/servercore_za_jar.xml
new file mode 100644
index 0000000..cfdac01
--- /dev/null
+++ b/.idea/artifacts/servercore_za_jar.xml
@@ -0,0 +1,9 @@
+
+
+ $PROJECT_DIR$/out/artifacts/servercore_za_jar
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..383685a
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..33958c3
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..001e756
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2e9b46d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/artifacts/servercore_za_jar/servercore_za.jar b/out/artifacts/servercore_za_jar/servercore_za.jar
new file mode 100644
index 0000000..c504353
Binary files /dev/null and b/out/artifacts/servercore_za_jar/servercore_za.jar differ
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..2534a75
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,83 @@
+
+
+ 4.0.0
+
+ net.thedawnph
+ servercore_za
+ 1.0-SNAPSHOT
+ jar
+
+ servercore_za
+
+
+ 21
+ UTF-8
+
+
+
+ clean package
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+ ${java.version}
+ ${java.version}
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.5.3
+
+
+ package
+
+ shade
+
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ jitpack
+ https://jitpack.io
+
+
+ spigotmc-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+ sonatype
+ https://oss.sonatype.org/content/groups/public/
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.21.3-R0.1-SNAPSHOT
+ provided
+
+
+ com.ericdebouwer
+ ZombieApocalypse
+ 1.4.11
+ system
+ ${project.basedir}/src/main/lib/ZombieApocalypse.jar
+
+
+
diff --git a/servercore_za.iml b/servercore_za.iml
new file mode 100644
index 0000000..a589521
--- /dev/null
+++ b/servercore_za.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ SPIGOT
+
+ 1
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/net/thedawnph/servercore_za/DisableMonsters.java b/src/main/java/net/thedawnph/servercore_za/DisableMonsters.java
new file mode 100644
index 0000000..08ff295
--- /dev/null
+++ b/src/main/java/net/thedawnph/servercore_za/DisableMonsters.java
@@ -0,0 +1,19 @@
+package net.thedawnph.servercore_za;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Server;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+
+import java.util.Objects;
+
+public class DisableMonsters implements Listener {
+ @EventHandler
+ public void onPlayerJoin(PlayerJoinEvent event) {
+ Player player = event.getPlayer();
+ Server server = Bukkit.getServer();
+ Objects.requireNonNull(server.getWorld("world")).setSpawnFlags(false, true);
+ }
+}
diff --git a/src/main/java/net/thedawnph/servercore_za/Servercore_za.java b/src/main/java/net/thedawnph/servercore_za/Servercore_za.java
new file mode 100644
index 0000000..549e855
--- /dev/null
+++ b/src/main/java/net/thedawnph/servercore_za/Servercore_za.java
@@ -0,0 +1,50 @@
+package net.thedawnph.servercore_za;
+
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.bukkit.scheduler.BukkitRunnable;
+import org.bukkit.Bukkit;
+
+import java.io.IOException;
+import java.util.Objects;
+import java.util.logging.Logger;
+import com.ericdebouwer.zombieapocalypse.api.ApocalypseAPI;
+
+
+public final class Servercore_za extends JavaPlugin {
+
+ private static final Logger LOGGER=Logger.getLogger("servercore_za");
+ FileConfiguration config = getConfig();
+
+ @Override
+ public void onEnable()
+ {
+ LOGGER.info("ZA ServerCore has been enabled!");
+
+ registerEvents();
+ // Create config folder if it doesn't exist
+ if (!getDataFolder().exists()) {
+ if (getDataFolder().mkdir()) {
+ getLogger().info("Data folder created: " + getDataFolder().getAbsolutePath());
+ } else {
+ getLogger().info("Failed to create data folder: " + getDataFolder().getAbsolutePath() + ". It might exists?.");
+ }
+ }
+
+ // Save default configuration file
+ saveDefaultConfig();
+ }
+
+ @Override
+ public void onDisable()
+ {
+ LOGGER.info("ZA ServerCore disabled");
+ }
+
+
+ private void registerEvents() {
+ getServer().getPluginManager().registerEvents(new ZombieKill(), this);
+ getServer().getPluginManager().registerEvents(new DisableMonsters(), this);
+ getServer().getPluginManager().registerEvents(new StartNighttimeTask(), this);
+ }
+}
diff --git a/src/main/java/net/thedawnph/servercore_za/StartNighttimeTask.java b/src/main/java/net/thedawnph/servercore_za/StartNighttimeTask.java
new file mode 100644
index 0000000..0bd98ed
--- /dev/null
+++ b/src/main/java/net/thedawnph/servercore_za/StartNighttimeTask.java
@@ -0,0 +1,21 @@
+package net.thedawnph.servercore_za;
+
+import com.ericdebouwer.zombieapocalypse.api.ApocalypseAPI;
+import org.bukkit.Bukkit;
+import org.bukkit.event.Listener;
+
+public class StartNighttimeTask implements Listener {
+ public StartNighttimeTask() {
+ Bukkit.getScheduler().runTaskTimer(Servercore_za.getPlugin(Servercore_za.class), () -> {
+ ApocalypseAPI apocalypseAPI = ApocalypseAPI.getInstance();
+ long time = Bukkit.getWorlds().getFirst().getTime(); // Get the time of the first world
+ if (time >= 13000 && time <= 23000) { // Check if it is nighttime
+ boolean isApocalyptic = apocalypseAPI.isApocalypse("world");
+ if (isApocalyptic) {
+ apocalypseAPI.startApocalypse("world", 300, 1, true);
+ Bukkit.getWorlds().getFirst().playSound(Bukkit.getWorlds().getFirst().getSpawnLocation(), "block.bell.use", 1, 1);
+ }
+ }
+ }, 0, 1200L); // Run every minute
+ }
+}
diff --git a/src/main/java/net/thedawnph/servercore_za/ZombieKill.java b/src/main/java/net/thedawnph/servercore_za/ZombieKill.java
new file mode 100644
index 0000000..19a1ce0
--- /dev/null
+++ b/src/main/java/net/thedawnph/servercore_za/ZombieKill.java
@@ -0,0 +1,34 @@
+package net.thedawnph.servercore_za;
+
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.EntityDeathEvent;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.bukkit.entity.EntityType;
+import org.bukkit.Material;
+import org.bukkit.configuration.file.FileConfiguration;
+
+import java.util.List;
+import java.util.Objects;
+
+
+public class ZombieKill implements Listener {
+ // randomizer function
+ public static int randomizer(int min, int max) {
+ return (int) ((Math.random() * (max - min)) + min);
+ }
+
+ private FileConfiguration getConfig() {
+ return JavaPlugin.getPlugin(Servercore_za.class).getConfig();
+ }
+
+ @EventHandler
+ public void onEntityDeath(EntityDeathEvent event) {
+ if (event.getEntity().getType().equals(EntityType.ZOMBIE)) {
+ event.getDrops().clear();
+ List items = getConfig().getStringList("zombie-drops");
+ event.getDrops().add(new ItemStack(Objects.requireNonNull(Material.getMaterial(Objects.requireNonNull(items.get(randomizer(0, items.size())))))));
+ }
+ }
+}
diff --git a/src/main/lib/ZombieApocalypse.jar b/src/main/lib/ZombieApocalypse.jar
new file mode 100644
index 0000000..ca4416e
Binary files /dev/null and b/src/main/lib/ZombieApocalypse.jar differ
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
new file mode 100644
index 0000000..9dc5450
--- /dev/null
+++ b/src/main/resources/config.yml
@@ -0,0 +1,14 @@
+zombie-drops:
+ - "IRON_INGOT"
+ - "GOLD_INGOT"
+ - "DIAMOND"
+ - "EMERALD"
+ - "DEAD_BUSH"
+ - "BREAD"
+ - "STICK"
+ - "LEATHER"
+ - "BONE"
+ - "LEATHER_HELMET"
+ - "LEATHER_CHESTPLATE"
+ - "LEATHER_LEGGINGS"
+ - "LEATHER_BOOTS"
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
new file mode 100644
index 0000000..ee42fe6
--- /dev/null
+++ b/src/main/resources/plugin.yml
@@ -0,0 +1,19 @@
+name: servercore_za
+version: '1.0-SNAPSHOT'
+main: net.thedawnph.servercore_za.Servercore_za
+api-version: '1.20'
+load: STARTUP
+authors: [ princepines ]
+description: Server Core for TheDawnPH Zombie Apocalypse
+website: https://thedawnph.net
+depend: [ZombieApocalypse]
+commands:
+ coreinfo:
+ description: Server Core for TheDawnPH Zombie Apocalypse
+ usage: /coreinfo
+ permission: servercore_za.command
+ permission-message: You do not have permission to use this command.
+permissions:
+ servercore_za.command:
+ description: Permission to use Server Core for TheDawnPH Zombie Apocalypse
+ default: op
diff --git a/target/classes/config.yml b/target/classes/config.yml
new file mode 100644
index 0000000..9dc5450
--- /dev/null
+++ b/target/classes/config.yml
@@ -0,0 +1,14 @@
+zombie-drops:
+ - "IRON_INGOT"
+ - "GOLD_INGOT"
+ - "DIAMOND"
+ - "EMERALD"
+ - "DEAD_BUSH"
+ - "BREAD"
+ - "STICK"
+ - "LEATHER"
+ - "BONE"
+ - "LEATHER_HELMET"
+ - "LEATHER_CHESTPLATE"
+ - "LEATHER_LEGGINGS"
+ - "LEATHER_BOOTS"
\ No newline at end of file
diff --git a/target/classes/net/thedawnph/servercore_za/DisableMonsters.class b/target/classes/net/thedawnph/servercore_za/DisableMonsters.class
new file mode 100644
index 0000000..bf99bb9
Binary files /dev/null and b/target/classes/net/thedawnph/servercore_za/DisableMonsters.class differ
diff --git a/target/classes/net/thedawnph/servercore_za/Servercore_za.class b/target/classes/net/thedawnph/servercore_za/Servercore_za.class
new file mode 100644
index 0000000..5c725d5
Binary files /dev/null and b/target/classes/net/thedawnph/servercore_za/Servercore_za.class differ
diff --git a/target/classes/net/thedawnph/servercore_za/StartNighttimeTask.class b/target/classes/net/thedawnph/servercore_za/StartNighttimeTask.class
new file mode 100644
index 0000000..ba4e32a
Binary files /dev/null and b/target/classes/net/thedawnph/servercore_za/StartNighttimeTask.class differ
diff --git a/target/classes/net/thedawnph/servercore_za/ZombieKill.class b/target/classes/net/thedawnph/servercore_za/ZombieKill.class
new file mode 100644
index 0000000..44a15ce
Binary files /dev/null and b/target/classes/net/thedawnph/servercore_za/ZombieKill.class differ
diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml
new file mode 100644
index 0000000..ee42fe6
--- /dev/null
+++ b/target/classes/plugin.yml
@@ -0,0 +1,19 @@
+name: servercore_za
+version: '1.0-SNAPSHOT'
+main: net.thedawnph.servercore_za.Servercore_za
+api-version: '1.20'
+load: STARTUP
+authors: [ princepines ]
+description: Server Core for TheDawnPH Zombie Apocalypse
+website: https://thedawnph.net
+depend: [ZombieApocalypse]
+commands:
+ coreinfo:
+ description: Server Core for TheDawnPH Zombie Apocalypse
+ usage: /coreinfo
+ permission: servercore_za.command
+ permission-message: You do not have permission to use this command.
+permissions:
+ servercore_za.command:
+ description: Permission to use Server Core for TheDawnPH Zombie Apocalypse
+ default: op