Hopefully fixed Ghasts & PigZombies spawning regardless of setting.

Implemented PVP Setting & EnableHealth setting.
World Compressiong = 0 forces you to Spawn now.
This commit is contained in:
Simon Rigby 2011-03-04 22:22:02 +00:00
parent e4718d38d4
commit 4053937019
3 changed files with 61 additions and 9 deletions

View File

@ -2,13 +2,19 @@ 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.Entity;
import org.bukkit.entity.Fireball;
import org.bukkit.entity.Ghast;
import org.bukkit.entity.Monster;
import org.bukkit.entity.PigZombie;
import org.bukkit.entity.Player;
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;
import org.bukkit.event.entity.ExplosionPrimedEvent;
@ -34,6 +40,37 @@ public class MVEntityListener extends EntityListener {
}
}
public void onEntityDamage(EntityDamageEvent event){
if (event.isCancelled()) return;
Entity attacker = null;
Entity defender = event.getEntity();
World w = defender.getWorld();
if(!(MultiVerseCore.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){
if (!(this.plugin.worlds.get(w.getName()).pvp)) {
this.plugin.playerSessions.get(((Player) attacker)).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.
*/
@ -72,7 +109,7 @@ public class MVEntityListener extends EntityListener {
/**
* Monster Handling
*/
if(event.getEntity() instanceof Monster){
if(event.getEntity() instanceof Monster || event.getEntity() instanceof Ghast || event.getEntity() instanceof PigZombie){
// If we have no exceptions for Monsters then we just follow the Spawn setting.
if(mvworld.monsterList.size()<=0){
if(mvworld.monsters){

View File

@ -37,10 +37,18 @@ public class MVTeleport {
double trgComp = plugin.worlds.get(world.getName()).compression;
MultiVerseCore.log.info(player.getWorld().getName() + "(" + srcComp + ") -> " + world.getName() + "(" + trgComp + ")");
x = location.getX() / (srcComp != 0 ? srcComp : 1) * trgComp + 0.5;
y = location.getY();
z = location.getZ() / (srcComp != 0 ? srcComp : 1) * trgComp + 0.5;
// If the Targets Compression is 0 then we teleport them to the Spawn of the World.
if(trgComp==0.0){
x = world.getSpawnLocation().getX();
y = world.getSpawnLocation().getY();
z = world.getSpawnLocation().getZ();
} else {
x = location.getX() / (srcComp != 0 ? srcComp : 1) * trgComp + 0.5;
y = location.getY();
z = location.getZ() / (srcComp != 0 ? srcComp : 1) * trgComp + 0.5;
}
} else {
x = location.getX();
y = location.getY();
@ -214,9 +222,13 @@ public class MVTeleport {
if (target != null) {
this.target = target;
p.teleportTo(target);
} else return false;
return true;
} else return false;
return true;
} else {
return false;
}
} else {
return false;
}
}
/**
@ -225,5 +237,4 @@ public class MVTeleport {
public boolean teleport(World w, Player p) {
return teleport(w, p, null);
}
}

View File

@ -266,4 +266,8 @@ public class MultiVerseCore extends JavaPlugin {
}
}
}
public static void debugMsg(String msg){
debugMsg(msg,null);
}
}