From 4885aa1adf5cbfc79deb8c466adb76f96c8d2344 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sat, 29 Jan 2022 14:01:49 +0100 Subject: [PATCH] initial commit --- .classpath | 26 ++++++ .gitignore | 1 + .project | 23 ++++++ .settings/org.eclipse.jdt.core.prefs | 16 ++++ .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 27 ++++++ src/main/java/pl/minecon724/giants/Main.java | 86 ++++++++++++++++++++ src/main/resources/config.yml | 8 ++ src/main/resources/plugin.yml | 5 ++ 9 files changed, 196 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/pl/minecon724/giants/Main.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..232b6db --- /dev/null +++ b/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/.project b/.project new file mode 100644 index 0000000..b355a4c --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + giants + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a0745f --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,16 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..319601b --- /dev/null +++ b/pom.xml @@ -0,0 +1,27 @@ + + 4.0.0 + giants + giants + 1.0-b1 + + + 1.8 + 1.8 + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + + + + org.spigotmc + spigot-api + 1.18.1-R0.1-SNAPSHOT + provided + + + \ No newline at end of file diff --git a/src/main/java/pl/minecon724/giants/Main.java b/src/main/java/pl/minecon724/giants/Main.java new file mode 100644 index 0000000..18076f4 --- /dev/null +++ b/src/main/java/pl/minecon724/giants/Main.java @@ -0,0 +1,86 @@ +package pl.minecon724.giants; + +import java.io.File; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Random; + +import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +public class Main extends JavaPlugin implements Listener { + File configFile = new File(getDataFolder(), "config.yml"); + FileConfiguration config; + + Random rnd = new Random(); + + boolean ai; + double chance; + Map effects; + + @Override + public void onEnable() { + if (!(configFile.exists())) { + saveResource("config.yml", false); + } + config = YamlConfiguration.loadConfiguration(configFile); + + ai = config.getBoolean("ai"); + chance = config.getDouble("chance"); + for (Object s : config.getList("effects")) { + try { + String[] parts = ((String) s).split(":"); + if (!(StringUtils.isNumeric(parts[1]))) { + throw new IllegalArgumentException(parts[1] + " is not a number"); + } + PotionEffectType effectType = PotionEffectType.getByName(parts[0]); + if (effectType == null) { + throw new IllegalArgumentException(parts[0] + " is not a PotionEffectType"); + } + Integer duration = Integer.valueOf(parts[1]); + effects.put(effectType, duration); + } catch (IllegalArgumentException e) { + Bukkit.getLogger().severe("Unable to parse potion effects!"); + e.printStackTrace(); + continue; + } + } + + getServer().getPluginManager().registerEvents(this, this); + } + + @EventHandler + public void entitySpawn(EntitySpawnEvent e) { + if (e.getEntityType() == EntityType.ZOMBIE) { + if (rnd.nextDouble() <= chance) { + e.setCancelled(true); + spawnGiant(ai, e.getLocation()); + } + } + } + + Entity spawnGiant(boolean ai, Location pos) { + LivingEntity entity = (LivingEntity) pos.getWorld().spawnEntity(pos, EntityType.GIANT); + if (ai) { + //entity.addPassenger(pos.getWorld().spawnEntity(pos, EntityType.HUSK)); + entity.setAI(true); + } + for (Entry t : effects.entrySet()) { + PotionEffect effect = new PotionEffect(t.getKey(), Integer.MAX_VALUE, t.getValue()); + effect.apply(entity); + } + return null; + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..fe2fb62 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,8 @@ +ai: true +# Spawning chance, from 0 to 1 +chance: 0.02 +# Additional potion effects +# type:amplifier +# See https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html +effects: + - "JUMP:2" \ 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..17b5e6b --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,5 @@ +name: Giants +version: 1.0 +api-version: 1.18 +main: pl.minecon724.giants.Main +author: Minecon724 \ No newline at end of file