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
|
name: MobArena
|
||||||
main: com.garbagemule.MobArena.MobArena
|
main: com.garbagemule.MobArena.MobArena
|
||||||
version: 0.90
|
version: 0.90.1
|
||||||
commands:
|
commands:
|
||||||
ma:
|
ma:
|
||||||
description: Base command for MobArena
|
description: Base command for MobArena
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.garbagemule.MobArena;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -161,6 +160,9 @@ public class ArenaManager
|
|||||||
isRunning = true;
|
isRunning = true;
|
||||||
readySet.clear();
|
readySet.clear();
|
||||||
|
|
||||||
|
// Clear the floor for good measure.
|
||||||
|
clearEntities();
|
||||||
|
|
||||||
for (Player p : playerSet)
|
for (Player p : playerSet)
|
||||||
{
|
{
|
||||||
p.teleport(arenaLoc);
|
p.teleport(arenaLoc);
|
||||||
@@ -293,11 +295,8 @@ public class ArenaManager
|
|||||||
p.setHealth(20);
|
p.setHealth(20);
|
||||||
tellAll(p.getName() + " died!");
|
tellAll(p.getName() + " died!");
|
||||||
|
|
||||||
//if (playerSet.contains(p))
|
playerSet.remove(p);
|
||||||
playerSet.remove(p);
|
classMap.remove(p);
|
||||||
|
|
||||||
//if (classMap.keySet().contains(p))
|
|
||||||
classMap.remove(p);
|
|
||||||
|
|
||||||
if (isRunning && playerSet.isEmpty())
|
if (isRunning && playerSet.isEmpty())
|
||||||
endArena();
|
endArena();
|
||||||
@@ -384,10 +383,9 @@ public class ArenaManager
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator<Player> iterator = ArenaManager.playerSet.iterator();
|
Set<Player> set = new HashSet<Player>(playerSet);
|
||||||
while (iterator.hasNext())
|
for (Player player : set)
|
||||||
{
|
{
|
||||||
Player player = iterator.next();
|
|
||||||
if (!ArenaManager.readySet.contains(player))
|
if (!ArenaManager.readySet.contains(player))
|
||||||
ArenaManager.playerLeave(player);
|
ArenaManager.playerLeave(player);
|
||||||
}
|
}
|
||||||
@@ -407,9 +405,9 @@ public class ArenaManager
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator<Player> iterator = ArenaManager.playerSet.iterator();
|
Set<Player> set = new HashSet<Player>(playerSet);
|
||||||
while (iterator.hasNext())
|
for (Player player : set)
|
||||||
ArenaManager.playerLeave(iterator.next());
|
ArenaManager.playerLeave(player);
|
||||||
|
|
||||||
// Just for good measure.
|
// Just for good measure.
|
||||||
endArena();
|
endArena();
|
||||||
|
|||||||
@@ -19,24 +19,6 @@ public class MABlockListener extends BlockListener
|
|||||||
public MABlockListener(MobArena instance)
|
public MABlockListener(MobArena instance)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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.
|
* 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)
|
if (ArenaManager.blockSet.remove(b) || b.getType() == Material.TNT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
System.out.println("This is block break.");
|
|
||||||
|
|
||||||
if (MAUtils.inRegion(b.getLocation()))
|
if (MAUtils.inRegion(b.getLocation()))
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ public class MACommands implements CommandExecutor
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ma setregion [p1|p2]
|
// ma setregion [p1|p2]
|
||||||
if (cmd.equalsIgnoreCase("setregion"))
|
if (cmd.equals("setregion"))
|
||||||
{
|
{
|
||||||
if (!arg.equals("p1") && !arg.equals("p2"))
|
if (!arg.equals("p1") && !arg.equals("p2"))
|
||||||
{
|
{
|
||||||
@@ -240,7 +240,7 @@ public class MACommands implements CommandExecutor
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ma expandregion [up|down|out] <amount>
|
// ma expandregion [up|down|out] <amount>
|
||||||
if (cmd.equalsIgnoreCase("expandregion"))
|
if (cmd.equals("expandregion"))
|
||||||
{
|
{
|
||||||
if (ArenaManager.p1 == null || ArenaManager.p2 == null)
|
if (ArenaManager.p1 == null || ArenaManager.p2 == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.event.entity.EntityListener;
|
import org.bukkit.event.entity.EntityListener;
|
||||||
import org.bukkit.event.entity.EntityDeathEvent;
|
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.
|
* 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)
|
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.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.inventory.ItemStack;
|
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.EntityListener;
|
||||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||||
import org.bukkit.event.entity.EntityCombustEvent;
|
import org.bukkit.event.entity.EntityCombustEvent;
|
||||||
@@ -24,15 +26,41 @@ public class MAMonsterListener extends EntityListener
|
|||||||
plugin = instance;
|
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.
|
* Handles all explosion events, also from TNT.
|
||||||
*/
|
*/
|
||||||
public void onEntityExplode(EntityExplodeEvent event)
|
public void onEntityExplode(EntityExplodeEvent event)
|
||||||
{
|
{
|
||||||
/* This could be done by simply cancelling the event, but that
|
// Check if any of the block "victims" are in the region.
|
||||||
* also cancels the explosion animation. This is a workaround. */
|
|
||||||
if (!MAUtils.inRegion(event.getLocation()))
|
if (!MAUtils.inRegion(event.getLocation()))
|
||||||
return;
|
{
|
||||||
|
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.
|
// Don't drop any blocks from the explosion.
|
||||||
event.setYield(0);
|
event.setYield(0);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
import org.bukkit.entity.Ghast;
|
import org.bukkit.entity.Ghast;
|
||||||
import org.bukkit.entity.Slime;
|
import org.bukkit.entity.Slime;
|
||||||
|
import org.bukkit.entity.Creeper;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Creature;
|
import org.bukkit.entity.Creature;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@@ -146,9 +147,10 @@ public class MASpawnThread implements Runnable
|
|||||||
ran = random.nextInt(dGhasts);
|
ran = random.nextInt(dGhasts);
|
||||||
|
|
||||||
int count;
|
int count;
|
||||||
boolean slime = false;
|
boolean slime = false;
|
||||||
boolean wolf = false;
|
boolean wolf = false;
|
||||||
boolean ghast = false;
|
boolean ghast = false;
|
||||||
|
boolean creeper = false;
|
||||||
|
|
||||||
if (ran < dPoweredCreepers) mob = CreatureType.CREEPER;
|
if (ran < dPoweredCreepers) mob = CreatureType.CREEPER;
|
||||||
else if (ran < dPigZombies) mob = CreatureType.PIG_ZOMBIE;
|
else if (ran < dPigZombies) mob = CreatureType.PIG_ZOMBIE;
|
||||||
@@ -164,6 +166,7 @@ public class MASpawnThread implements Runnable
|
|||||||
{
|
{
|
||||||
case CREEPER:
|
case CREEPER:
|
||||||
count = noOfPlayers * 3;
|
count = noOfPlayers * 3;
|
||||||
|
creeper = true;
|
||||||
break;
|
break;
|
||||||
case PIG_ZOMBIE:
|
case PIG_ZOMBIE:
|
||||||
count = noOfPlayers * 2;
|
count = noOfPlayers * 2;
|
||||||
@@ -202,9 +205,10 @@ public class MASpawnThread implements Runnable
|
|||||||
else
|
else
|
||||||
System.out.println("MASpawnThread - monsterSet contains this entity");
|
System.out.println("MASpawnThread - monsterSet contains this entity");
|
||||||
|
|
||||||
if (slime) ((Slime)e).setSize(2);
|
if (slime) ((Slime)e).setSize(2);
|
||||||
if (wolf) ((Wolf)e).setAngry(true);
|
if (wolf) ((Wolf)e).setAngry(true);
|
||||||
if (ghast) ((Ghast)e).setHealth(Math.min(noOfPlayers*25, 200));
|
if (ghast) ((Ghast)e).setHealth(Math.min(noOfPlayers*25, 200));
|
||||||
|
if (creeper) ((Creeper)e).setPowered(true);
|
||||||
|
|
||||||
// Slimes can't have targets, apparently.
|
// Slimes can't have targets, apparently.
|
||||||
if (!(e instanceof Creature))
|
if (!(e instanceof Creature))
|
||||||
|
|||||||
@@ -421,6 +421,9 @@ public class MAUtils
|
|||||||
if (!loc.getWorld().getName().equals(ArenaManager.world.getName()))
|
if (!loc.getWorld().getName().equals(ArenaManager.world.getName()))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!ArenaManager.isSetup)
|
||||||
|
return false;
|
||||||
|
|
||||||
Location p1 = ArenaManager.p1;
|
Location p1 = ArenaManager.p1;
|
||||||
Location p2 = ArenaManager.p2;
|
Location p2 = ArenaManager.p2;
|
||||||
|
|
||||||
@@ -593,6 +596,7 @@ public class MAUtils
|
|||||||
(ArenaManager.dSkeletons != -1) &&
|
(ArenaManager.dSkeletons != -1) &&
|
||||||
(ArenaManager.dSpiders != -1) &&
|
(ArenaManager.dSpiders != -1) &&
|
||||||
(ArenaManager.dCreepers != -1) &&
|
(ArenaManager.dCreepers != -1) &&
|
||||||
|
(ArenaManager.dWolves != -1) &&
|
||||||
(ArenaManager.classes.size() > 0) &&
|
(ArenaManager.classes.size() > 0) &&
|
||||||
(ArenaManager.spawnpoints.size() > 0));
|
(ArenaManager.spawnpoints.size() > 0));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,21 +55,20 @@ public class MobArena extends JavaPlugin
|
|||||||
|
|
||||||
// Register events.
|
// Register events.
|
||||||
pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, commandListener, Priority.Monitor, this);
|
pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, commandListener, Priority.Monitor, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_INTERACT, lobbyListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_INTERACT, lobbyListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, lobbyListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, lobbyListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_BUCKET_EMPTY, lobbyListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_BUCKET_EMPTY, lobbyListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_TELEPORT, teleportListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_TELEPORT, teleportListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_QUIT, discListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_QUIT, discListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_KICK, discListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_KICK, discListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_JOIN, 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_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.BLOCK_PLACE, blockListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_DEATH, damageListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_DAMAGE, damageListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_EXPLODE, monsterListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_DEATH, damageListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_COMBUST, monsterListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_EXPLODE, monsterListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_TARGET, monsterListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_COMBUST, monsterListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.CREATURE_SPAWN, monsterListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_TARGET, monsterListener, Priority.Normal, this);
|
|
||||||
|
|
||||||
System.out.println(pdfFile.getName() + " v" + pdfFile.getVersion() + " enabled." );
|
System.out.println(pdfFile.getName() + " v" + pdfFile.getVersion() + " enabled." );
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user