fixed an annoying IllegalArgument with the World Event start command. fixed limit bukkit runnable not limiting itself.

This commit is contained in:
NewGarbo 2015-11-15 20:04:44 +00:00
parent 10eb1bb9c9
commit 5209cf3d38
3 changed files with 36 additions and 8 deletions

View File

@ -15,11 +15,16 @@ public abstract class LimitedBukkitRunnable extends BukkitRunnable
@Override
public void run()
{
if (_timesRun > _maxTimes){
if (_timesRun > _maxTimes)
{
UtilServer.getServer().getScheduler().cancelTask(getTaskId());
return;
}
onRun(_timesRun);
_timesRun++;
}
public abstract void onRun(int timesRun);

View File

@ -150,7 +150,7 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
getPlugin().getServer().getPluginManager().registerEvents(event, getPlugin());
_runningEvents.add(event);
}
public WorldEvent startEventFromName(Location location, String name)
{
WorldEventType eventType = WorldEventType.valueOf(name);
@ -163,6 +163,17 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
return null;
}
public WorldEvent startEventFromType(Location location, WorldEventType eventType)
{
if (eventType != null)
{
WorldEvent event = eventType.createInstance(this, location);
initializeEvent(event);
return event;
}
return null;
}
public void clearEvents()
{

View File

@ -7,6 +7,7 @@ import mineplex.core.common.Rank;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.game.clans.clans.worldevent.WorldEventManager;
import mineplex.game.clans.clans.worldevent.WorldEventType;
import mineplex.minecraft.game.core.boss.WorldEvent;
public class StartCommand extends CommandBase<WorldEventManager>
@ -15,19 +16,30 @@ public class StartCommand extends CommandBase<WorldEventManager>
{
super(plugin, Rank.DEVELOPER, new Rank[] { Rank.JNR_DEV }, "start", "create");
}
@Override
public void Execute(Player caller, String[] args)
{
// start specific world event type
if (args != null && args.length == 1)
{
WorldEvent event = Plugin.startEventFromName(caller.getLocation(), args[0]);
if (event == null)
UtilPlayer.message(caller, F.main("WorldEvent", "Could not find a WorldEvent with the name " + F.elem(args[0])));
else
try
{
UtilPlayer.message(caller, F.main("worldEvent", "Started WorldEvent " + F.elem(args[0]) + " at your current location"));
WorldEventType eventType = WorldEventType.valueOf(args[0]);
WorldEvent event = Plugin.startEventFromType(caller.getLocation(), eventType);
if (event == null)
{
UtilPlayer.message(caller, F.main("WorldEvent", "Error whilst starting the world event you chose."));
}
else
{
UtilPlayer.message(caller, F.main("worldEvent", "Started WorldEvent " + F.elem(args[0]) + " at your current location"));
}
}
catch (IllegalArgumentException e)
{
UtilPlayer.message(caller, F.main("WorldEvent", "Could not find a WorldEvent with the name " + F.elem(args[0])));
}
}
}