From 7ff5c518f4f0dbcf8aa1b4d1039a82f9075f2b57 Mon Sep 17 00:00:00 2001 From: Eric Stokes Date: Sat, 4 Jun 2011 17:01:43 -0400 Subject: [PATCH] Cleanup the EntityListener a bit Save worlds when they are initialized Add Some test data for the list types since they don't show up Working on the respawn issue still... --- .../MultiverseCore/MVEntityListener.java | 68 ------------------- .../MultiverseCore/MVPlayerListener.java | 11 ++- .../onarandombox/MultiverseCore/MVWorld.java | 65 +++++++++++++++--- .../MultiverseCore/MultiverseCore.java | 5 ++ 4 files changed, 71 insertions(+), 78 deletions(-) diff --git a/src/com/onarandombox/MultiverseCore/MVEntityListener.java b/src/com/onarandombox/MultiverseCore/MVEntityListener.java index d22335aa..7bad3455 100644 --- a/src/com/onarandombox/MultiverseCore/MVEntityListener.java +++ b/src/com/onarandombox/MultiverseCore/MVEntityListener.java @@ -1,21 +1,13 @@ package com.onarandombox.MultiverseCore; -import java.util.List; - -import org.bukkit.ChatColor; import org.bukkit.World; import org.bukkit.entity.Animals; import org.bukkit.entity.CreatureType; -import org.bukkit.entity.Entity; import org.bukkit.entity.Ghast; import org.bukkit.entity.Monster; import org.bukkit.entity.PigZombie; -import org.bukkit.entity.Player; import org.bukkit.entity.Slime; import org.bukkit.event.entity.CreatureSpawnEvent; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageByProjectileEvent; -import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityListener; @@ -36,48 +28,6 @@ public class MVEntityListener extends EntityListener { } - // public void onExplosionPrimed(ExplosionPrimedEvent event){ - // if(event.getEntity() instanceof Fireball){ - // MultiVerseCore.log.info(); - // Fireballs on Explode trigger this, sadly we can't get the blocks it would destroy... thats onEntityExplode - // However can't figure out a way to check in onEntityExplode if it was a Fireball which caused it... - // } - // } - - @Override - public void onEntityDamage(EntityDamageEvent event) { - if (event.isCancelled()) - return; - - Entity attacker = null; - Entity defender = event.getEntity(); - World w = defender.getWorld(); - - if (!(plugin.configWorlds.getBoolean("worlds." + w.getName() + ".enablehealth", true))) { - event.setCancelled(true); - return; - } - - if (event instanceof EntityDamageByEntityEvent) { - attacker = ((EntityDamageByEntityEvent) event).getDamager(); - } else if (event instanceof EntityDamageByProjectileEvent) { - attacker = ((EntityDamageByProjectileEvent) event).getDamager(); - } - - if (attacker == null || defender == null) { - return; - } - - if (defender instanceof Player && attacker instanceof Player) { - Player player = (Player) attacker; - if (!(this.plugin.worlds.get(w.getName()).pvp)) { - this.plugin.getPlayerSession(player).message(ChatColor.RED + "PVP is disabled in this World."); - event.setCancelled(true); - return; - } - } - } - /** * Handle Animal/Monster Spawn settings, seems like a more concrete method than using CraftBukkit. */ @@ -143,24 +93,6 @@ public class MVEntityListener extends EntityListener { } } } - - /** - * Ghast Handling -- This should only be temporary, noticed a bug where Ghasts would keep spawning and flood the Nether. - * However not sure about it... not sure of the effect on performance... got a few 'server overloaded' warnings through testing but not sure of the cause. - */ - if (event.getEntity() instanceof Ghast) { - List entities = world.getEntities(); - int count = 0; - for (Entity entity : entities) { - if (entity instanceof Ghast) { - if (count >= plugin.configMV.getInt("ghastlimit", 50)) { - event.setCancelled(true); - return; - } - count++; - } - } - } } } diff --git a/src/com/onarandombox/MultiverseCore/MVPlayerListener.java b/src/com/onarandombox/MultiverseCore/MVPlayerListener.java index c5683ed5..9f8f1c9c 100644 --- a/src/com/onarandombox/MultiverseCore/MVPlayerListener.java +++ b/src/com/onarandombox/MultiverseCore/MVPlayerListener.java @@ -1,5 +1,7 @@ package com.onarandombox.MultiverseCore; +import java.util.logging.Logger; + import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerChatEvent; @@ -12,7 +14,7 @@ import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent; public class MVPlayerListener extends PlayerListener { - + private final Logger log = Logger.getLogger("Minecraft"); MultiverseCore plugin; public MVPlayerListener(MultiverseCore plugin) { @@ -55,7 +57,12 @@ public class MVPlayerListener extends PlayerListener { @Override public void onPlayerRespawn(PlayerRespawnEvent event) { - + // TODO: Handle Global Respawn from config + + // TODO: Handle Alternate Respawn from config + + Location l = null; + log.warning(event.getPlayer().getWorld().getName()); } @Override diff --git a/src/com/onarandombox/MultiverseCore/MVWorld.java b/src/com/onarandombox/MultiverseCore/MVWorld.java index 37c61210..32998a27 100644 --- a/src/com/onarandombox/MultiverseCore/MVWorld.java +++ b/src/com/onarandombox/MultiverseCore/MVWorld.java @@ -45,31 +45,80 @@ public class MVWorld { this.name = world.getName(); this.environment = world.getEnvironment(); this.seed = seed; + + initLists(); this.alias = config.getString("worlds." + this.name + ".alias", ""); this.pvp = config.getBoolean("worlds." + this.name + ".pvp", true); this.compression = config.getDouble("worlds." + this.name + ".compression", 1.0); - this.joinWhitelist = config.getStringList("worlds." + name + ".playerWhitelist", new ArrayList()); - this.joinBlacklist = config.getStringList("worlds." + name + ".playerBlacklist", new ArrayList()); - this.worldBlacklist = config.getStringList("worlds." + name + ".worldBlacklist", new ArrayList()); - this.blockBlacklist = config.getStringList("worlds." + name + ".blockBlacklist", new ArrayList()); - this.editWhitelist = config.getStringList("worlds." + name + ".editWhitelist", new ArrayList()); - this.editBlacklist = config.getStringList("worlds." + name + ".editBlacklist", new ArrayList()); + this.joinWhitelist = config.getStringList("worlds." + name + ".playerWhitelist", joinWhitelist); + this.joinBlacklist = config.getStringList("worlds." + name + ".playerBlacklist", joinBlacklist); + this.worldBlacklist = config.getStringList("worlds." + name + ".worldBlacklist", worldBlacklist); + this.blockBlacklist = config.getStringList("worlds." + name + ".blockBlacklist", blockBlacklist); + this.editWhitelist = config.getStringList("worlds." + name + ".editWhitelist", editWhitelist); + this.editBlacklist = config.getStringList("worlds." + name + ".editBlacklist", editBlacklist); this.animals = config.getBoolean("worlds." + name + ".animals.spawn", true); this.monsters = config.getBoolean("worlds." + name + ".monsters.spawn", true); List temp; - temp = config.getStringList("worlds." + name + ".animals.exceptions", new ArrayList()); + temp = config.getStringList("worlds." + name + ".animals.exceptions", animalList); + this.animalList.clear(); for (String s : temp) { this.animalList.add(s.toUpperCase()); + System.out.print(s); } - temp = config.getStringList("worlds." + name + ".monsters.exceptions", new ArrayList()); + temp = config.getStringList("worlds." + name + ".monsters.exceptions", monsterList); for (String s : temp) { this.monsterList.add(s.toUpperCase()); System.out.print(s); } + + config.save(); + addSampleData(); + } + + private void initLists() { + blockBlacklist = new ArrayList(); + joinWhitelist = new ArrayList(); + joinBlacklist = new ArrayList(); + editWhitelist = new ArrayList(); + editBlacklist = new ArrayList(); + worldBlacklist = new ArrayList(); + } + + public void addSampleData() { + this.monsterList.add("creeper"); + + this.animalList.add("pig"); + + this.blockBlacklist.add("49"); + + this.joinWhitelist.add("fernferret"); + this.joinWhitelist.add("g:Admins"); + + this.joinBlacklist.add("Rigby90"); + this.joinBlacklist.add("g:Banned"); + + this.editWhitelist.add("fernferret"); + this.editWhitelist.add("g:Admins"); + + this.editBlacklist.add("Rigby90"); + this.editBlacklist.add("g:Banned"); + + this.worldBlacklist.add("world5"); + this.worldBlacklist.add("A world with spaces"); + + this.config.setProperty("worlds." + name + ".animals.exceptions", animalList); + this.config.setProperty("worlds." + name + ".monsters.exceptions", monsterList); + this.config.setProperty("worlds." + name + ".blockBlacklist", blockBlacklist); + this.config.setProperty("worlds." + name + ".playerWhitelist", joinWhitelist); + this.config.setProperty("worlds." + name + ".playerBlacklist", joinBlacklist); + this.config.setProperty("worlds." + name + ".editWhitelist", editWhitelist); + this.config.setProperty("worlds." + name + ".editBlacklist", editBlacklist); + this.config.setProperty("worlds." + name + ".worldBlacklist", worldBlacklist); + this.config.save(); } } diff --git a/src/com/onarandombox/MultiverseCore/MultiverseCore.java b/src/com/onarandombox/MultiverseCore/MultiverseCore.java index e9f95d94..cf366e65 100644 --- a/src/com/onarandombox/MultiverseCore/MultiverseCore.java +++ b/src/com/onarandombox/MultiverseCore/MultiverseCore.java @@ -419,12 +419,17 @@ public class MultiverseCore extends JavaPlugin { if (seed != null) { World world = getServer().createWorld(name, environment, seed); worlds.put(name, new MVWorld(world, configWorlds, this, seed)); // Place the World into the HashMap. +// configWorlds.setProperty("worlds." + world.getName() + ".environment", environment.toString()); +// configWorlds.save(); System.out.print("Seed - " + getSeed(world)); } else { World world = getServer().createWorld(name, environment); worlds.put(name, new MVWorld(world, configWorlds, this, null)); // Place the World into the HashMap. +// configWorlds.setProperty("worlds." + world.getName() + ".environment", environment.toString()); +// configWorlds.save(); System.out.print("Seed - " + getSeed(world)); } + } public void addWorld(String name, Environment environment) {