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