This commit is contained in:
Minecon724 2022-01-29 15:10:18 +01:00
parent a18a12243b
commit 498d96267b
2 changed files with 26 additions and 2 deletions

View File

@ -1,7 +1,10 @@
package pl.minecon724.giants; package pl.minecon724.giants;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Random; import java.util.Random;
@ -20,15 +23,18 @@ import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
public class Main extends JavaPlugin implements Listener { public class Main extends JavaPlugin implements Listener {
File configFile = new File(getDataFolder(), "config.yml"); File configFile = new File(getDataFolder(), "config.yml");
FileConfiguration config; FileConfiguration config;
Random rnd = new Random(); Random rnd = new Random();
List<Entity> giants = new ArrayList<Entity>();
boolean ai; boolean ai;
double chance; double chance;
double attackDamage;
Map<PotionEffectType, Integer> effects = new HashMap<PotionEffectType, Integer>(); Map<PotionEffectType, Integer> effects = new HashMap<PotionEffectType, Integer>();
@Override @Override
@ -40,6 +46,7 @@ public class Main extends JavaPlugin implements Listener {
ai = config.getBoolean("ai"); ai = config.getBoolean("ai");
chance = config.getDouble("chance"); chance = config.getDouble("chance");
attackDamage = config.getDouble("attackDamage");
for (Object s : config.getList("effects")) { for (Object s : config.getList("effects")) {
try { try {
String[] parts = ((String) s).split(":"); String[] parts = ((String) s).split(":");
@ -60,6 +67,17 @@ public class Main extends JavaPlugin implements Listener {
} }
getServer().getPluginManager().registerEvents(this, this); getServer().getPluginManager().registerEvents(this, this);
new BukkitRunnable() {
@Override
public void run() {
for (Entity e : giants) {
Collection<Entity> nearby = e.getWorld().getNearbyEntities(e.getBoundingBox().expand(4D, 1D, 4D));
for (Entity n : nearby) {
((LivingEntity) n).damage(attackDamage, e);
}
}
}
}.runTaskTimer(this, 20L, 0L)
} }
@EventHandler @EventHandler
@ -75,12 +93,16 @@ public class Main extends JavaPlugin implements Listener {
Entity spawnGiant(boolean ai, Location pos) { Entity spawnGiant(boolean ai, Location pos) {
LivingEntity entity = (LivingEntity) pos.getWorld().spawnEntity(pos, EntityType.GIANT); LivingEntity entity = (LivingEntity) pos.getWorld().spawnEntity(pos, EntityType.GIANT);
if (ai) { if (ai) {
entity.addPassenger(pos.getWorld().spawnEntity(pos, EntityType.HUSK)); Entity passenger = pos.getWorld().spawnEntity(pos, EntityType.HUSK);
new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1).apply((LivingEntity) passenger);
passenger.setInvulnerable(true);
entity.addPassenger(passenger);
} }
for (Entry<PotionEffectType, Integer> t : effects.entrySet()) { for (Entry<PotionEffectType, Integer> t : effects.entrySet()) {
PotionEffect effect = new PotionEffect(t.getKey(), Integer.MAX_VALUE, t.getValue()); PotionEffect effect = new PotionEffect(t.getKey(), Integer.MAX_VALUE, t.getValue());
effect.apply(entity); effect.apply(entity);
} }
return null; giants.add((Entity) entity);
return entity;
} }
} }

View File

@ -1,8 +1,10 @@
ai: true ai: true
attackDamage: 1.0
# Spawning chance, from 0 to 1 # Spawning chance, from 0 to 1
chance: 0.02 chance: 0.02
# Additional potion effects # Additional potion effects
# type:amplifier # type:amplifier
# See https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html # See https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html
# Set to [] to disable
effects: effects:
- "JUMP:2" - "JUMP:2"