mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2025-02-08 16:41:41 +01:00
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...
This commit is contained in:
parent
1971b8fc4e
commit
7ff5c518f4
@ -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<Entity> 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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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<String>());
|
||||
this.joinBlacklist = config.getStringList("worlds." + name + ".playerBlacklist", new ArrayList<String>());
|
||||
this.worldBlacklist = config.getStringList("worlds." + name + ".worldBlacklist", new ArrayList<String>());
|
||||
this.blockBlacklist = config.getStringList("worlds." + name + ".blockBlacklist", new ArrayList<String>());
|
||||
this.editWhitelist = config.getStringList("worlds." + name + ".editWhitelist", new ArrayList<String>());
|
||||
this.editBlacklist = config.getStringList("worlds." + name + ".editBlacklist", new ArrayList<String>());
|
||||
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<String> temp;
|
||||
temp = config.getStringList("worlds." + name + ".animals.exceptions", new ArrayList<String>());
|
||||
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<String>());
|
||||
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<String>();
|
||||
joinWhitelist = new ArrayList<String>();
|
||||
joinBlacklist = new ArrayList<String>();
|
||||
editWhitelist = new ArrayList<String>();
|
||||
editBlacklist = new ArrayList<String>();
|
||||
worldBlacklist = new ArrayList<String>();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user