mirror of
https://github.com/garbagemule/MobArena.git
synced 2025-02-16 20:41:56 +01:00
Fixed some bugs
This commit is contained in:
parent
f3131585de
commit
72cf8e6a42
BIN
MobArena.jar
BIN
MobArena.jar
Binary file not shown.
@ -59,7 +59,7 @@ public class Arena
|
||||
protected List<ItemStack> entryFee;
|
||||
|
||||
// Arena sets/maps
|
||||
protected Set<Player> /*livePlayers, */deadPlayers, readyPlayers, specPlayers, waitPlayers, hasPaid, arenaPlayers, lobbyPlayers, notifyPlayers, randoms;
|
||||
protected Set<Player> arenaPlayers, lobbyPlayers, readyPlayers, specPlayers, waitPlayers, hasPaid, rewardedPlayers, notifyPlayers, randoms;
|
||||
protected Set<LivingEntity> monsters;
|
||||
protected Set<Block> blocks;
|
||||
protected Set<Wolf> pets;
|
||||
@ -98,38 +98,37 @@ public class Arena
|
||||
plugin = (MobArena) Bukkit.getServer().getPluginManager().getPlugin("MobArena");
|
||||
log = new ArenaLog(plugin, this);
|
||||
|
||||
arenaPlayers = new HashSet<Player>();
|
||||
lobbyPlayers = new HashSet<Player>();
|
||||
notifyPlayers = new HashSet<Player>();
|
||||
//livePlayers = new HashSet<Player>();
|
||||
deadPlayers = new HashSet<Player>();
|
||||
readyPlayers = new HashSet<Player>();
|
||||
specPlayers = new HashSet<Player>();
|
||||
waitPlayers = new HashSet<Player>();
|
||||
hasPaid = new HashSet<Player>();
|
||||
monsters = new HashSet<LivingEntity>();
|
||||
blocks = new HashSet<Block>();
|
||||
pets = new HashSet<Wolf>();
|
||||
petMap = new HashMap<Player,Integer>();
|
||||
classMap = new HashMap<Player,String>();
|
||||
randoms = new HashSet<Player>();
|
||||
rewardMap = new HashMap<Player,List<ItemStack>>();
|
||||
repairList = new LinkedList<int[]>();
|
||||
arenaPlayers = new HashSet<Player>();
|
||||
lobbyPlayers = new HashSet<Player>();
|
||||
notifyPlayers = new HashSet<Player>();
|
||||
readyPlayers = new HashSet<Player>();
|
||||
specPlayers = new HashSet<Player>();
|
||||
waitPlayers = new HashSet<Player>();
|
||||
rewardedPlayers = new HashSet<Player>();
|
||||
hasPaid = new HashSet<Player>();
|
||||
monsters = new HashSet<LivingEntity>();
|
||||
blocks = new HashSet<Block>();
|
||||
pets = new HashSet<Wolf>();
|
||||
petMap = new HashMap<Player,Integer>();
|
||||
classMap = new HashMap<Player,String>();
|
||||
randoms = new HashSet<Player>();
|
||||
rewardMap = new HashMap<Player,List<ItemStack>>();
|
||||
repairList = new LinkedList<int[]>();
|
||||
|
||||
running = false;
|
||||
edit = false;
|
||||
running = false;
|
||||
edit = false;
|
||||
|
||||
allowMonsters = world.getAllowMonsters();
|
||||
allowAnimals = world.getAllowAnimals();
|
||||
spawnMonsters = ((net.minecraft.server.World) ((CraftWorld) world).getHandle()).spawnMonsters;
|
||||
allowMonsters = world.getAllowMonsters();
|
||||
allowAnimals = world.getAllowAnimals();
|
||||
spawnMonsters = ((net.minecraft.server.World) ((CraftWorld) world).getHandle()).spawnMonsters;
|
||||
|
||||
eventListener = new MAListener(this, plugin);
|
||||
eventListener = new MAListener(this, plugin);
|
||||
}
|
||||
|
||||
public boolean startArena()
|
||||
{
|
||||
// Sanity-checks
|
||||
if (running || lobbyPlayers.isEmpty() || !lobbyPlayers.equals(readyPlayers))
|
||||
if (running || lobbyPlayers.isEmpty() || !readyPlayers.containsAll(lobbyPlayers))
|
||||
return false;
|
||||
if (!softRestore && forceRestore && !serializeRegion())
|
||||
return false;
|
||||
@ -182,9 +181,6 @@ public class Arena
|
||||
if (!running || !arenaPlayers.isEmpty())
|
||||
return false;
|
||||
|
||||
// Stop spawning.
|
||||
stopSpawning();
|
||||
|
||||
// Set the boolean.
|
||||
running = false;
|
||||
|
||||
@ -195,6 +191,9 @@ public class Arena
|
||||
log.serialize();
|
||||
log.clear();
|
||||
}
|
||||
|
||||
// Stop spawning.
|
||||
stopSpawning();
|
||||
|
||||
// Clean arena floor.
|
||||
cleanup();
|
||||
@ -210,10 +209,12 @@ public class Arena
|
||||
MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_END), true);
|
||||
arenaPlayers.clear();
|
||||
notifyPlayers.clear();
|
||||
rewardedPlayers.clear();
|
||||
classMap.clear();
|
||||
rewardMap.clear();
|
||||
waveMap.clear();
|
||||
killMap.clear();
|
||||
spawnThread = null;
|
||||
|
||||
// Notify listeners.
|
||||
for (MobArenaListener listener : plugin.getAM().listeners)
|
||||
@ -286,7 +287,7 @@ public class Arena
|
||||
public void playerLeave(Player p)
|
||||
{
|
||||
// Clear class inventory, restore old inventory and fork over rewards.
|
||||
restoreInvAndGiveRewards(p, !specPlayers.contains(p));
|
||||
restoreInvAndGiveRewards(p, (arenaPlayers.contains(p) || lobbyPlayers.contains(p)));
|
||||
|
||||
// Grab the player's entry location, and warp them there.
|
||||
Location entry = locations.get(p);
|
||||
@ -305,7 +306,7 @@ public class Arena
|
||||
endArena();
|
||||
}
|
||||
|
||||
public void playerDeath(final Player p)
|
||||
public void playerDeath(Player p)
|
||||
{
|
||||
// If spectate-on-death: false, pass on to playerLeave.
|
||||
if (!specOnDeath)
|
||||
@ -361,12 +362,6 @@ public class Arena
|
||||
specPlayers.remove(p);
|
||||
arenaPlayers.remove(p);
|
||||
lobbyPlayers.remove(p);
|
||||
|
||||
// arenaPlayers is empty if lobbyPlayers isn’t, and vice versa
|
||||
/*if (arenaPlayers.remove(p))
|
||||
endArena2();
|
||||
if (lobbyPlayers.remove(p))
|
||||
startArena2();*/
|
||||
}
|
||||
|
||||
private void spawnPets()
|
||||
@ -409,6 +404,7 @@ public class Arena
|
||||
Bukkit.getServer().getScheduler().cancelTask(spawnThread.taskId);
|
||||
Bukkit.getServer().getScheduler().cancelTask(spawnTaskId);
|
||||
spawnTaskId = -1;
|
||||
spawnThread = null;
|
||||
}
|
||||
|
||||
// Restore spawn flags.
|
||||
@ -438,18 +434,28 @@ public class Arena
|
||||
public void restoreInvAndGiveRewards(final Player p, final boolean clear)
|
||||
{
|
||||
final List<ItemStack> rewards = rewardMap.get(p);
|
||||
final boolean hadRewards = rewardedPlayers.contains(p);
|
||||
|
||||
if (clear) MAUtils.clearInventory(p);
|
||||
|
||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin,
|
||||
new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
if (clear)
|
||||
MAUtils.clearInventory(p);
|
||||
//if (clear)
|
||||
// MAUtils.clearInventory(p);
|
||||
|
||||
if (!emptyInvJoin)
|
||||
MAUtils.restoreInventory(p);
|
||||
|
||||
//if (rewardedPlayers.contains(p))
|
||||
if (hadRewards)
|
||||
return;
|
||||
|
||||
MAUtils.giveRewards(p, rewards, plugin);
|
||||
if (running)
|
||||
rewardedPlayers.add(p);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -465,6 +471,7 @@ public class Arena
|
||||
public void assignClass(Player p, String className)
|
||||
{
|
||||
petMap.remove(p);
|
||||
randoms.remove(p);
|
||||
classMap.put(p, className);
|
||||
|
||||
MAUtils.clearInventory(p);
|
||||
@ -827,13 +834,6 @@ public class Arena
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<Player> getDeadPlayers()
|
||||
{
|
||||
List<Player> result = new LinkedList<Player>();
|
||||
result.addAll(deadPlayers);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void resetIdleTimer()
|
||||
{
|
||||
if (maxIdleTime <= 0 || !running)
|
||||
|
@ -73,10 +73,7 @@ public class ArenaLog
|
||||
log.add(" ");
|
||||
|
||||
// Player data
|
||||
int NAME = 12;
|
||||
int CLASS = 0;
|
||||
int WAVE = 4;
|
||||
int KILLS = 5;
|
||||
int NAME = 12; int CLASS = 0; int WAVE = 4; int KILLS = 5;
|
||||
for (String c : plugin.getAM().classes)
|
||||
if (c.length() > CLASS)
|
||||
CLASS = c.length();
|
||||
|
@ -851,7 +851,7 @@ public class MACommands implements CommandExecutor
|
||||
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
|
||||
return true;
|
||||
}
|
||||
if (args.length != 3 || !arg1.matches("[0-9]+"))
|
||||
if (args.length != 3 || !arg1.matches("(-)?[0-9]+"))
|
||||
{
|
||||
MAUtils.tellPlayer(sender, "Usage: /ma expandregion <amount> [up|down|out]");
|
||||
return true;
|
||||
@ -883,6 +883,9 @@ public class MACommands implements CommandExecutor
|
||||
return true;
|
||||
}
|
||||
|
||||
// In case of a "negative" region, fix it!
|
||||
MAUtils.fixRegion(plugin.getConfig(), am.selectedArena.world, am.selectedArena);
|
||||
|
||||
MAUtils.tellPlayer(sender, "Region for '" + am.selectedArena.configName() + "' expanded " + arg2 + " by " + arg1 + " blocks.");
|
||||
am.selectedArena.serializeConfig();
|
||||
am.selectedArena.load(plugin.getConfig());
|
||||
|
@ -16,6 +16,7 @@ import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
||||
import org.bukkit.event.entity.EntityCombustEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
@ -96,7 +97,7 @@ public class MAListener implements ArenaListener
|
||||
|
||||
public void onCreatureSpawn(CreatureSpawnEvent event)
|
||||
{
|
||||
if (!arena.inRegion(event.getLocation()))
|
||||
if (!arena.inRegion(event.getLocation()) || event.getSpawnReason() == SpawnReason.CUSTOM)
|
||||
return;
|
||||
|
||||
// If running == true, setCancelled(false), and vice versa.
|
||||
|
@ -755,7 +755,7 @@ public class MAUtils
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void fixRegion(Configuration config, World world, Arena arena)
|
||||
public static void fixRegion(Configuration config, World world, Arena arena)
|
||||
{
|
||||
if (arena.p1 == null || arena.p2 == null)
|
||||
return;
|
||||
@ -904,12 +904,11 @@ public class MAUtils
|
||||
public static void tellAll(Arena arena, String msg, boolean waitPlayers)
|
||||
{
|
||||
Set<Player> tmp = new HashSet<Player>();
|
||||
//tmp.addAll(arena.livePlayers);
|
||||
tmp.addAll(arena.arenaPlayers);
|
||||
tmp.addAll(arena.lobbyPlayers);
|
||||
tmp.addAll(arena.deadPlayers);
|
||||
tmp.addAll(arena.specPlayers);
|
||||
tmp.addAll(arena.readyPlayers);
|
||||
tmp.addAll(arena.notifyPlayers);
|
||||
tmp.addAll(arena.specPlayers);
|
||||
if (waitPlayers) tmp.addAll(arena.waitPlayers);
|
||||
for (Player p : tmp)
|
||||
tellPlayer(p, msg);
|
||||
|
Loading…
Reference in New Issue
Block a user