v0.93.3 - Fixed some inventory/reward bugs

This commit is contained in:
Andreas Troelsen 2011-07-18 23:49:36 +02:00
parent a73e93ee6f
commit e9431a8a55
5 changed files with 39 additions and 41 deletions

Binary file not shown.

View File

@ -1,6 +1,6 @@
name: MobArena
main: com.garbagemule.MobArena.MobArena
version: 0.93.2
version: 0.93.3
softdepend: [MultiVerse,XcraftGate]
commands:
ma:

View File

@ -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,32 +98,31 @@ 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()
@ -210,6 +209,7 @@ public class Arena
MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_END), true);
arenaPlayers.clear();
notifyPlayers.clear();
rewardedPlayers.clear();
classMap.clear();
rewardMap.clear();
waveMap.clear();
@ -286,7 +286,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));
// Grab the player's entry location, and warp them there.
Location entry = locations.get(p);
@ -305,7 +305,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)
@ -408,6 +408,7 @@ public class Arena
{
Bukkit.getServer().getScheduler().cancelTask(spawnThread.taskId);
Bukkit.getServer().getScheduler().cancelTask(spawnTaskId);
spawnThread = null;
spawnTaskId = -1;
}
@ -438,6 +439,7 @@ 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);
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin,
new Runnable()
@ -449,7 +451,14 @@ public class Arena
if (!emptyInvJoin)
MAUtils.restoreInventory(p);
//if (rewardedPlayers.contains(p))
if (hadRewards)
return;
MAUtils.giveRewards(p, rewards, plugin);
if (running)
rewardedPlayers.add(p);
}
});
}
@ -827,13 +836,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)

View File

@ -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();

View File

@ -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);