v0.90.1 - Fixed Creeper instant deaths and other bugs. This is no longer block break.
This commit is contained in:
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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." );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user