v0.90.1 - Fixed Creeper instant deaths and other bugs. This is no longer block break.

This commit is contained in:
Garbage Mule
2011-06-14 03:35:24 +02:00
parent 6e72e4e83a
commit 7805843713
25 changed files with 74 additions and 97 deletions
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
name: MobArena
main: com.garbagemule.MobArena.MobArena
version: 0.90
version: 0.90.1
commands:
ma:
description: Base command for MobArena
+8 -10
View File
@@ -3,7 +3,6 @@ package com.garbagemule.MobArena;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -161,6 +160,9 @@ public class ArenaManager
isRunning = true;
readySet.clear();
// Clear the floor for good measure.
clearEntities();
for (Player p : playerSet)
{
p.teleport(arenaLoc);
@@ -293,10 +295,7 @@ public class ArenaManager
p.setHealth(20);
tellAll(p.getName() + " died!");
//if (playerSet.contains(p))
playerSet.remove(p);
//if (classMap.keySet().contains(p))
classMap.remove(p);
if (isRunning && playerSet.isEmpty())
@@ -384,10 +383,9 @@ public class ArenaManager
return;
}
Iterator<Player> iterator = ArenaManager.playerSet.iterator();
while (iterator.hasNext())
Set<Player> set = new HashSet<Player>(playerSet);
for (Player player : set)
{
Player player = iterator.next();
if (!ArenaManager.readySet.contains(player))
ArenaManager.playerLeave(player);
}
@@ -407,9 +405,9 @@ public class ArenaManager
return;
}
Iterator<Player> iterator = ArenaManager.playerSet.iterator();
while (iterator.hasNext())
ArenaManager.playerLeave(iterator.next());
Set<Player> set = new HashSet<Player>(playerSet);
for (Player player : set)
ArenaManager.playerLeave(player);
// Just for good measure.
endArena();
@@ -20,24 +20,6 @@ public class MABlockListener extends BlockListener
{
}
/* Removed for testing purposes.
public void onBlockDamage(BlockDamageEvent event)
{
if (!ArenaManager.isSetup || !ArenaManager.isProtected)
return;
Block b = event.getBlock();
if (ArenaManager.blockSet.contains(b))
return;
System.out.println("This is block damage.");
if (MAUtils.inRegion(b.getLocation()))
event.setCancelled(true);
}
*/
/**
* Prevents blocks from breaking if block protection is on.
*/
@@ -51,8 +33,6 @@ public class MABlockListener extends BlockListener
if (ArenaManager.blockSet.remove(b) || b.getType() == Material.TNT)
return;
System.out.println("This is block break.");
if (MAUtils.inRegion(b.getLocation()))
event.setCancelled(true);
}
+2 -2
View File
@@ -223,7 +223,7 @@ public class MACommands implements CommandExecutor
}
// ma setregion [p1|p2]
if (cmd.equalsIgnoreCase("setregion"))
if (cmd.equals("setregion"))
{
if (!arg.equals("p1") && !arg.equals("p2"))
{
@@ -240,7 +240,7 @@ public class MACommands implements CommandExecutor
}
// ma expandregion [up|down|out] <amount>
if (cmd.equalsIgnoreCase("expandregion"))
if (cmd.equals("expandregion"))
{
if (ArenaManager.p1 == null || ArenaManager.p2 == null)
{
@@ -4,8 +4,6 @@ import org.bukkit.entity.Player;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.entity.EntityListener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
/**
* This listener acts as a type of death-listener.
@@ -22,28 +20,9 @@ public class MADamageListener extends EntityListener
{
}
public void onEntityDamage(EntityDamageEvent event)
{
if (!ArenaManager.isRunning)
return;
if (!(event.getEntity() instanceof Player))
return;
Player p = (Player) event.getEntity();
if (!ArenaManager.playerSet.contains(p))
return;
if (p.getHealth() > event.getDamage())
return;
event.setCancelled(true);
ArenaManager.playerDeath(p);
}
/**
* Clears all player/monster drops on death.
* Clears all player/monster drops on death. Also handles
* player death events.
*/
public void onEntityDeath(EntityDeathEvent event)
{
@@ -71,19 +50,4 @@ public class MADamageListener extends EntityListener
}
}
/**
* Prevents monsters from spawning inside the arena unless
* it's running.
*/
public void onCreatureSpawn(CreatureSpawnEvent event)
{
if (!MAUtils.inRegion(event.getLocation()))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (!ArenaManager.isRunning)
event.setCancelled(true);
}
}
@@ -4,6 +4,8 @@ import java.util.HashMap;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityListener;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityCombustEvent;
@@ -24,15 +26,41 @@ public class MAMonsterListener extends EntityListener
plugin = instance;
}
/**
* Prevents monsters from spawning inside the arena unless
* it's running.
*/
public void onCreatureSpawn(CreatureSpawnEvent event)
{
if (!MAUtils.inRegion(event.getLocation()))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (!ArenaManager.isRunning)
event.setCancelled(true);
}
/**
* Handles all explosion events, also from TNT.
*/
public void onEntityExplode(EntityExplodeEvent event)
{
/* This could be done by simply cancelling the event, but that
* also cancels the explosion animation. This is a workaround. */
// Check if any of the block "victims" are in the region.
if (!MAUtils.inRegion(event.getLocation()))
{
boolean inRegion = false;
for (Block b : event.blockList())
{
if (!MAUtils.inRegion(b.getLocation()))
continue;
inRegion = true;
break;
}
if (!inRegion)
return;
}
// Don't drop any blocks from the explosion.
event.setYield(0);
@@ -5,6 +5,7 @@ import org.bukkit.Location;
import org.bukkit.entity.Wolf;
import org.bukkit.entity.Ghast;
import org.bukkit.entity.Slime;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.Player;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
@@ -149,6 +150,7 @@ public class MASpawnThread implements Runnable
boolean slime = false;
boolean wolf = false;
boolean ghast = false;
boolean creeper = false;
if (ran < dPoweredCreepers) mob = CreatureType.CREEPER;
else if (ran < dPigZombies) mob = CreatureType.PIG_ZOMBIE;
@@ -164,6 +166,7 @@ public class MASpawnThread implements Runnable
{
case CREEPER:
count = noOfPlayers * 3;
creeper = true;
break;
case PIG_ZOMBIE:
count = noOfPlayers * 2;
@@ -205,6 +208,7 @@ public class MASpawnThread implements Runnable
if (slime) ((Slime)e).setSize(2);
if (wolf) ((Wolf)e).setAngry(true);
if (ghast) ((Ghast)e).setHealth(Math.min(noOfPlayers*25, 200));
if (creeper) ((Creeper)e).setPowered(true);
// Slimes can't have targets, apparently.
if (!(e instanceof Creature))
@@ -421,6 +421,9 @@ public class MAUtils
if (!loc.getWorld().getName().equals(ArenaManager.world.getName()))
return false;
if (!ArenaManager.isSetup)
return false;
Location p1 = ArenaManager.p1;
Location p2 = ArenaManager.p2;
@@ -593,6 +596,7 @@ public class MAUtils
(ArenaManager.dSkeletons != -1) &&
(ArenaManager.dSpiders != -1) &&
(ArenaManager.dCreepers != -1) &&
(ArenaManager.dWolves != -1) &&
(ArenaManager.classes.size() > 0) &&
(ArenaManager.spawnpoints.size() > 0));
}
+1 -2
View File
@@ -63,13 +63,12 @@ public class MobArena extends JavaPlugin
pm.registerEvent(Event.Type.PLAYER_KICK, discListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_JOIN, discListener, Priority.Normal, this);
pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Normal, this);
//pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Normal, this);
pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_DAMAGE, damageListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_DEATH, damageListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_EXPLODE, monsterListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_COMBUST, monsterListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_TARGET, monsterListener, Priority.Normal, this);
pm.registerEvent(Event.Type.CREATURE_SPAWN, monsterListener, Priority.Normal, this);
System.out.println(pdfFile.getName() + " v" + pdfFile.getVersion() + " enabled." );
}