Add auto-start-timer feature. Minor cleanup.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
name: MobArena
|
name: MobArena
|
||||||
author: garbagemule
|
author: garbagemule
|
||||||
main: com.garbagemule.MobArena.MobArena
|
main: com.garbagemule.MobArena.MobArena
|
||||||
version: 0.94.4.90
|
version: 0.94.4.91
|
||||||
softdepend: [Spout,MultiVerse,MultiWorld,XcraftGate,Towny,Heroes,MagicSpells,Vault]
|
softdepend: [Spout,MultiVerse,MultiWorld,XcraftGate,Towny,Heroes,MagicSpells,Vault]
|
||||||
commands:
|
commands:
|
||||||
ma:
|
ma:
|
||||||
@@ -143,4 +143,4 @@ permissions:
|
|||||||
default: false
|
default: false
|
||||||
mobarena.setup.autodegenerate:
|
mobarena.setup.autodegenerate:
|
||||||
description: Auto-degenerate an arena.
|
description: Auto-degenerate an arena.
|
||||||
default: false
|
default: false
|
||||||
|
|||||||
@@ -32,3 +32,4 @@ lock-food-level: true
|
|||||||
spout-class-select: false
|
spout-class-select: false
|
||||||
player-time-in-arena: world
|
player-time-in-arena: world
|
||||||
auto-ignite-tnt: false
|
auto-ignite-tnt: false
|
||||||
|
auto-start-timer: 0
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
import org.bukkit.permissions.PermissionAttachment;
|
import org.bukkit.permissions.PermissionAttachment;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
import com.garbagemule.MobArena.autostart.AutoStartTimer;
|
||||||
import com.garbagemule.MobArena.events.*;
|
import com.garbagemule.MobArena.events.*;
|
||||||
import com.garbagemule.MobArena.framework.Arena;
|
import com.garbagemule.MobArena.framework.Arena;
|
||||||
import com.garbagemule.MobArena.leaderboards.Leaderboard;
|
import com.garbagemule.MobArena.leaderboards.Leaderboard;
|
||||||
@@ -110,6 +111,7 @@ public class ArenaImpl implements Arena
|
|||||||
private ArenaListener eventListener;
|
private ArenaListener eventListener;
|
||||||
private List<ItemStack> entryFee;
|
private List<ItemStack> entryFee;
|
||||||
private TimeStrategy timeStrategy;
|
private TimeStrategy timeStrategy;
|
||||||
|
private AutoStartTimer autoStartTimer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Primary constructor. Requires a name and a world.
|
* Primary constructor. Requires a name and a world.
|
||||||
@@ -170,6 +172,9 @@ public class ArenaImpl implements Arena
|
|||||||
this.allowMonsters = world.getAllowMonsters();
|
this.allowMonsters = world.getAllowMonsters();
|
||||||
this.allowAnimals = world.getAllowAnimals();
|
this.allowAnimals = world.getAllowAnimals();
|
||||||
|
|
||||||
|
int autoStart = settings.getInt("auto-start-timer", 0);
|
||||||
|
this.autoStartTimer = new AutoStartTimer(this, autoStart);
|
||||||
|
|
||||||
String timeString = settings.getString("player-time-in-arena", "world");
|
String timeString = settings.getString("player-time-in-arena", "world");
|
||||||
Time time = Enums.getEnumFromString(Time.class, timeString);
|
Time time = Enums.getEnumFromString(Time.class, timeString);
|
||||||
this.timeStrategy = (time != null ? new TimeStrategyLocked(time) : new TimeStrategyNull());
|
this.timeStrategy = (time != null ? new TimeStrategyLocked(time) : new TimeStrategyNull());
|
||||||
@@ -583,7 +588,17 @@ public class ArenaImpl implements Arena
|
|||||||
if (MobArena.hasSpout && settings.getBoolean("spout-class-select"))
|
if (MobArena.hasSpout && settings.getBoolean("spout-class-select"))
|
||||||
Spouty.classSelectionScreen(plugin, this, p);
|
Spouty.classSelectionScreen(plugin, this, p);
|
||||||
|
|
||||||
|
// Start the auto-start-timer
|
||||||
|
autoStartTimer.start();
|
||||||
|
|
||||||
|
// Notify player of joining
|
||||||
Messenger.tellPlayer(p, Msg.JOIN_PLAYER_JOINED);
|
Messenger.tellPlayer(p, Msg.JOIN_PLAYER_JOINED);
|
||||||
|
|
||||||
|
// Notify player of time left
|
||||||
|
if (autoStartTimer.isRunning()) {
|
||||||
|
Messenger.tellPlayer(p, Msg.ARENA_AUTO_START, "" + autoStartTimer.getRemaining());
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -603,7 +618,6 @@ public class ArenaImpl implements Arena
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//@SuppressWarnings("deprecation")
|
|
||||||
public boolean playerLeave(Player p)
|
public boolean playerLeave(Player p)
|
||||||
{
|
{
|
||||||
// Fire the event and check if it's been cancelled.
|
// Fire the event and check if it's been cancelled.
|
||||||
@@ -685,7 +699,6 @@ public class ArenaImpl implements Arena
|
|||||||
movePlayerToSpec(p);
|
movePlayerToSpec(p);
|
||||||
Messenger.tellPlayer(p, Msg.SPEC_FROM_ARENA);
|
Messenger.tellPlayer(p, Msg.SPEC_FROM_ARENA);
|
||||||
Messenger.tellPlayer(p, Msg.MISC_MA_LEAVE_REMINDER);
|
Messenger.tellPlayer(p, Msg.MISC_MA_LEAVE_REMINDER);
|
||||||
//restoreInvAndExp(p);
|
|
||||||
} else {
|
} else {
|
||||||
restoreInvAndExp(p);
|
restoreInvAndExp(p);
|
||||||
movePlayerToEntry(p);
|
movePlayerToEntry(p);
|
||||||
@@ -700,7 +713,6 @@ public class ArenaImpl implements Arena
|
|||||||
if (settings.getBoolean("spectate-on-death", true)) {
|
if (settings.getBoolean("spectate-on-death", true)) {
|
||||||
l = region.getSpecWarp();
|
l = region.getSpecWarp();
|
||||||
} else {
|
} else {
|
||||||
//l = locations.get(p);
|
|
||||||
l = playerData.get(p).entry();
|
l = playerData.get(p).entry();
|
||||||
}
|
}
|
||||||
return l;
|
return l;
|
||||||
@@ -799,18 +811,6 @@ public class ArenaImpl implements Arena
|
|||||||
// Start bouncing!
|
// Start bouncing!
|
||||||
scheduleTask(sheepBouncer, settings.getInt("first-wave-delay", 5) * 20);
|
scheduleTask(sheepBouncer, settings.getInt("first-wave-delay", 5) * 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateChunk(Location loc)
|
|
||||||
{
|
|
||||||
if (!arenaPlayers.isEmpty() || !world.getName().equals(loc.getWorld().getName()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
Chunk chunk = world.getChunkAt(loc);
|
|
||||||
if (!world.isChunkLoaded(chunk))
|
|
||||||
world.loadChunk(chunk);
|
|
||||||
else
|
|
||||||
world.refreshChunk(chunk.getX(), chunk.getZ());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void storePlayerData(Player p, Location loc)
|
public void storePlayerData(Player p, Location loc)
|
||||||
@@ -864,22 +864,18 @@ public class ArenaImpl implements Arena
|
|||||||
@Override
|
@Override
|
||||||
public void movePlayerToLobby(Player p)
|
public void movePlayerToLobby(Player p)
|
||||||
{
|
{
|
||||||
//updateChunk(region.getLobbyWarp());
|
|
||||||
specPlayers.remove(p); // If joining from spec area
|
specPlayers.remove(p); // If joining from spec area
|
||||||
lobbyPlayers.add(p);
|
lobbyPlayers.add(p);
|
||||||
p.teleport(region.getLobbyWarp());
|
p.teleport(region.getLobbyWarp());
|
||||||
timeStrategy.setPlayerTime(p);
|
timeStrategy.setPlayerTime(p);
|
||||||
//movePlayerToLocation(p, region.getLobbyWarp());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void movePlayerToSpec(Player p)
|
public void movePlayerToSpec(Player p)
|
||||||
{
|
{
|
||||||
//updateChunk(region.getSpecWarp());
|
|
||||||
specPlayers.add(p);
|
specPlayers.add(p);
|
||||||
p.teleport(region.getSpecWarp());
|
p.teleport(region.getSpecWarp());
|
||||||
timeStrategy.setPlayerTime(p);
|
timeStrategy.setPlayerTime(p);
|
||||||
//movePlayerToLocation(p, region.getSpecWarp());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -888,32 +884,13 @@ public class ArenaImpl implements Arena
|
|||||||
Location entry = playerData.get(p).entry();
|
Location entry = playerData.get(p).entry();
|
||||||
if (entry == null || p.isDead()) return;
|
if (entry == null || p.isDead()) return;
|
||||||
|
|
||||||
//updateChunk(entry);
|
|
||||||
p.teleport(entry);
|
p.teleport(entry);
|
||||||
timeStrategy.resetPlayerTime(p);
|
timeStrategy.resetPlayerTime(p);
|
||||||
//movePlayerToLocation(p, entry);
|
|
||||||
|
|
||||||
p.setGameMode(playerData.get(p).getMode());
|
p.setGameMode(playerData.get(p).getMode());
|
||||||
p.addPotionEffects(playerData.get(p).getPotionEffects());
|
p.addPotionEffects(playerData.get(p).getPotionEffects());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private void movePlayerToLocation(Player p, Location l) {
|
|
||||||
WorldServer fromWorld = ((CraftWorld) p.getWorld()).getHandle();
|
|
||||||
WorldServer toWorld = ((CraftWorld) l.getWorld()).getHandle();
|
|
||||||
EntityPlayer player = ((CraftPlayer) p).getHandle();
|
|
||||||
|
|
||||||
if (fromWorld == toWorld) {
|
|
||||||
player.netServerHandler.teleport(l);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (player.activeContainer != player.defaultContainer) {
|
|
||||||
player.closeInventory();
|
|
||||||
}
|
|
||||||
CraftServer cs = ((CraftServer) plugin.getServer());
|
|
||||||
cs.getHandle().moveToWorld(player, toWorld.dimension, true, l);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
private void restoreInvAndExp(Player p) {
|
private void restoreInvAndExp(Player p) {
|
||||||
inventoryManager.clearInventory(p);
|
inventoryManager.clearInventory(p);
|
||||||
inventoryManager.restoreInventory(p);
|
inventoryManager.restoreInventory(p);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ public enum Msg
|
|||||||
ARENA_END("Arena finished.", "Arena finished.", Material.REDSTONE_TORCH_OFF),
|
ARENA_END("Arena finished.", "Arena finished.", Material.REDSTONE_TORCH_OFF),
|
||||||
ARENA_DOES_NOT_EXIST("That arena does not exist. Type /ma arenas for a list.", "Can't find arena."),
|
ARENA_DOES_NOT_EXIST("That arena does not exist. Type /ma arenas for a list.", "Can't find arena."),
|
||||||
ARENA_LBOARD_NOT_FOUND("That arena does not have a leaderboard set up."),
|
ARENA_LBOARD_NOT_FOUND("That arena does not have a leaderboard set up."),
|
||||||
|
ARENA_AUTO_START("Arena will auto-start in % seconds."),
|
||||||
JOIN_NOT_ENABLED("MobArena is not enabled.", "MobArena disabled.", Material.REDSTONE_TORCH_OFF),
|
JOIN_NOT_ENABLED("MobArena is not enabled.", "MobArena disabled.", Material.REDSTONE_TORCH_OFF),
|
||||||
JOIN_IN_OTHER_ARENA("You are already in an arena! Leave that one first.", "In another arena."),
|
JOIN_IN_OTHER_ARENA("You are already in an arena! Leave that one first.", "In another arena."),
|
||||||
JOIN_ARENA_NOT_ENABLED("This arena is not enabled.", "Arena disabled.", Material.REDSTONE_TORCH_OFF),
|
JOIN_ARENA_NOT_ENABLED("This arena is not enabled.", "Arena disabled.", Material.REDSTONE_TORCH_OFF),
|
||||||
|
|||||||
Reference in New Issue
Block a user