Made the thing a lot better. Yay! :D
This commit is contained in:
parent
5de016c077
commit
7445fda922
@ -25,7 +25,8 @@ import mineplex.core.common.util.UtilRadar;
|
|||||||
import mineplex.core.common.util.UtilTextMiddle;
|
import mineplex.core.common.util.UtilTextMiddle;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import nautilus.game.arcade.game.Game.GameState;
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import nautilus.game.arcade.game.games.monstermaze.MMMazes.MazePreset;
|
import nautilus.game.arcade.game.games.monstermaze.MMMazes.MazePreset;
|
||||||
import nautilus.game.arcade.game.games.monstermaze.MazeMobWaypoint.CardinalDirection;
|
import nautilus.game.arcade.game.games.monstermaze.MazeMobWaypoint.CardinalDirection;
|
||||||
import nautilus.game.arcade.game.games.monstermaze.events.AbilityUseEvent;
|
import nautilus.game.arcade.game.games.monstermaze.events.AbilityUseEvent;
|
||||||
@ -48,6 +49,7 @@ import org.bukkit.entity.LivingEntity;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Snowman;
|
import org.bukkit.entity.Snowman;
|
||||||
import org.bukkit.entity.Zombie;
|
import org.bukkit.entity.Zombie;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
@ -73,7 +75,9 @@ public class Maze implements Listener
|
|||||||
|
|
||||||
private ArrayList<Player> _playersOnPad = new ArrayList<Player>();
|
private ArrayList<Player> _playersOnPad = new ArrayList<Player>();
|
||||||
|
|
||||||
private int _phaseTimer = 90;
|
private double _phaseTimer = 90;
|
||||||
|
private double _phaseTimerStart = 90;
|
||||||
|
|
||||||
private int _padDecayTimer = -1;
|
private int _padDecayTimer = -1;
|
||||||
|
|
||||||
private Location _nextSafePadLoc;
|
private Location _nextSafePadLoc;
|
||||||
@ -116,6 +120,8 @@ public class Maze implements Listener
|
|||||||
loc.getBlock().setData((byte)3);
|
loc.getBlock().setData((byte)3);
|
||||||
}
|
}
|
||||||
_center = maze.getCenter();
|
_center = maze.getCenter();
|
||||||
|
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, Host.Manager.getPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
public SafePad getSafePad()
|
public SafePad getSafePad()
|
||||||
@ -131,71 +137,105 @@ public class Maze implements Listener
|
|||||||
return _safePad.isOn(player);
|
return _safePad.isOn(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update()
|
@EventHandler
|
||||||
{
|
public void updateTick(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Host.IsLive())
|
||||||
|
return;
|
||||||
|
|
||||||
if (_safePad != null) // TODO probably a good idea to check if this will screw up compasses in inventories before the game starts
|
if (_safePad != null) // TODO probably a good idea to check if this will screw up compasses in inventories before the game starts
|
||||||
{
|
{
|
||||||
for(Player p : Host.GetPlayers(true))
|
for (Player p : Host.GetPlayers(true))
|
||||||
{
|
{
|
||||||
p.setCompassTarget(_nextSafePadLoc);
|
p.setCompassTarget(_nextSafePadLoc);
|
||||||
|
|
||||||
UtilRadar.displayRadar(p, Arrays.asList(_safePadRadarData), true);
|
UtilRadar.displayRadar(p, Arrays.asList(_safePadRadarData), true);
|
||||||
|
|
||||||
if(Host.GetState() == GameState.Live)
|
|
||||||
{
|
|
||||||
UtilRadar.displayRadar(p, Arrays.asList(_safePadRadarData), true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Host.IsLive())
|
//Updates
|
||||||
|
checkPlayersOnSafePad();
|
||||||
|
move();
|
||||||
|
bump();
|
||||||
|
removeMobsOnSafePad();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void updateFaster(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.FASTER)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Host.IsLive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
decrementPhaseTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void updateSecond(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.SEC)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Host.IsLive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
decrementSafePadTime();
|
||||||
|
|
||||||
|
//Attempt pad spawn
|
||||||
|
if (_safePad == null && UtilTime.elapsed(_lastBeacon, 3000 + (1000 * UtilMath.r(10))))
|
||||||
{
|
{
|
||||||
//checkGoal();
|
try
|
||||||
checkPlayersOnSafePad();
|
|
||||||
move();
|
|
||||||
bump();
|
|
||||||
removeMobsOnSafePad();
|
|
||||||
|
|
||||||
if (_safePad == null && UtilTime.elapsed(_lastBeacon, 3000 + (1000 * UtilMath.r(10))))
|
|
||||||
{
|
{
|
||||||
try
|
spawnSafePad();
|
||||||
{
|
|
||||||
spawnSafePad();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.out.println("AN EXCEPTION OCCURED WHILE TRYING TO SPAWN A SAFE PAD!");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
if (_phaseTimer > 15)
|
|
||||||
{
|
{
|
||||||
for(Player p : Host.GetPlayers(true))
|
System.out.println("AN EXCEPTION OCCURED WHILE TRYING TO SPAWN A SAFE PAD!");
|
||||||
{
|
|
||||||
p.setExp(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// UtilTextTop.displayProgress(C.cAqua + C.Bold + "Be the first player to get to the Safe Pad!", 100, Host.GetPlayers(true).toArray(new Player[Host.GetPlayers(true).size()]));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
double percentage = _phaseTimer/15d;
|
|
||||||
for(Player p : Host.GetPlayers(true))
|
|
||||||
{
|
|
||||||
p.setExp((float)percentage);
|
|
||||||
// if(_safePad.isOn(p))
|
|
||||||
// {
|
|
||||||
// UtilTextTop.displayProgress(C.cGreen + C.Bold + "Stay on the Safe Pad for " + _phaseTimer + " more seconds!", percentage, p);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// UtilTextTop.displayProgress(C.cRed + C.Bold + "You have " + _phaseTimer + " seconds to get to the Safe Pad!", percentage, p);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void updateExperience(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Host.IsLive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_safePad == null)
|
||||||
|
{
|
||||||
|
for (Player p : Host.GetPlayers(true))
|
||||||
|
{
|
||||||
|
p.setExp(0F);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_phaseTimer > 15) //Nobody has gotten to it yet
|
||||||
|
{
|
||||||
|
float percent = (float) Math.min(Math.max(_phaseTimer * (1 / _phaseTimerStart), 0), .999);
|
||||||
|
|
||||||
|
for(Player p : Host.GetPlayers(true))
|
||||||
|
{
|
||||||
|
p.setExp(percent);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float percentage = (float) Math.min(Math.max(_phaseTimer / 15, 0), 1);
|
||||||
|
for (Player p : Host.GetPlayers(true))
|
||||||
|
{
|
||||||
|
p.setExp(percentage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void removeMobsOnSafePad()
|
private void removeMobsOnSafePad()
|
||||||
{
|
{
|
||||||
Iterator<Entity> it = _ents.keySet().iterator();
|
Iterator<Entity> it = _ents.keySet().iterator();
|
||||||
@ -656,7 +696,7 @@ public class Maze implements Listener
|
|||||||
{
|
{
|
||||||
if(_phaseTimer == -1) return;
|
if(_phaseTimer == -1) return;
|
||||||
|
|
||||||
_phaseTimer--;
|
_phaseTimer -= .25;
|
||||||
if(_phaseTimer == 20) // only gets to this by running out of time naturally, not by player
|
if(_phaseTimer == 20) // only gets to this by running out of time naturally, not by player
|
||||||
{
|
{
|
||||||
UtilTextMiddle.display("", C.cGreen + C.Bold + _phaseTimer, 5, 40, 5, Host.GetPlayers(true).toArray(new Player[Host.GetPlayers(true).size()]));
|
UtilTextMiddle.display("", C.cGreen + C.Bold + _phaseTimer, 5, 40, 5, Host.GetPlayers(true).toArray(new Player[Host.GetPlayers(true).size()]));
|
||||||
@ -713,14 +753,17 @@ public class Maze implements Listener
|
|||||||
|
|
||||||
_playersOnPad.clear();
|
_playersOnPad.clear();
|
||||||
//_phaseTimer = -1;
|
//_phaseTimer = -1;
|
||||||
_phaseTimer = 90 - (_curSafe * 3);
|
_phaseTimerStart = 90 - (_curSafe * 3);
|
||||||
|
_phaseTimer = _phaseTimerStart;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkPlayersOnSafePad()
|
private void checkPlayersOnSafePad()
|
||||||
{
|
{
|
||||||
if(_safePad == null) return;
|
if(_safePad == null)
|
||||||
for(Player p : Host.GetPlayers(true))
|
return;
|
||||||
|
|
||||||
|
for (Player p : Host.GetPlayers(true))
|
||||||
{
|
{
|
||||||
if(_safePad.isOn(p) && !_playersOnPad.contains(p))
|
if(_safePad.isOn(p) && !_playersOnPad.contains(p))
|
||||||
{
|
{
|
||||||
@ -810,7 +853,7 @@ public class Maze implements Listener
|
|||||||
return _ents.keySet();
|
return _ents.keySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPhaseTimer()
|
public double getPhaseTimer()
|
||||||
{
|
{
|
||||||
return _phaseTimer;
|
return _phaseTimer;
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ import org.bukkit.entity.Skeleton;
|
|||||||
import org.bukkit.entity.Snowman;
|
import org.bukkit.entity.Snowman;
|
||||||
import org.bukkit.entity.Zombie;
|
import org.bukkit.entity.Zombie;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.event.block.EntityBlockFormEvent;
|
import org.bukkit.event.block.EntityBlockFormEvent;
|
||||||
import org.bukkit.event.entity.EntityCombustEvent;
|
import org.bukkit.event.entity.EntityCombustEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
@ -100,13 +101,13 @@ public class MonsterMaze extends SoloGame
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
// @EventHandler
|
||||||
public void Update(UpdateEvent event)
|
// public void Update(UpdateEvent event)
|
||||||
{
|
// {
|
||||||
if(event.getType() != UpdateType.TICK) return;
|
// if(event.getType() != UpdateType.TICK) return;
|
||||||
if(_maze == null) return;
|
// if(_maze == null) return;
|
||||||
_maze.update();
|
// _maze.update();
|
||||||
}
|
// }
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void GameStateChange(GameStateChangeEvent event)
|
public void GameStateChange(GameStateChangeEvent event)
|
||||||
@ -131,6 +132,10 @@ public class MonsterMaze extends SoloGame
|
|||||||
|
|
||||||
_maze.fillSpawn(150);
|
_maze.fillSpawn(150);
|
||||||
}
|
}
|
||||||
|
else if (event.GetState() == GameState.End)
|
||||||
|
{
|
||||||
|
HandlerList.unregisterAll(getMaze());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setJumpsLeft(Player player, int jumps)
|
private void setJumpsLeft(Player player, int jumps)
|
||||||
@ -210,15 +215,6 @@ public class MonsterMaze extends SoloGame
|
|||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void DecrementPhaseTimer(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if(event.getType() != UpdateType.SEC) return;
|
|
||||||
if(!IsLive()) return;
|
|
||||||
_maze.decrementPhaseTime();
|
|
||||||
_maze.decrementSafePadTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void Damage(EntityDamageEvent event)
|
public void Damage(EntityDamageEvent event)
|
||||||
{
|
{
|
||||||
@ -273,7 +269,7 @@ public class MonsterMaze extends SoloGame
|
|||||||
|
|
||||||
if (_maze.getSafePad() != null)
|
if (_maze.getSafePad() != null)
|
||||||
{
|
{
|
||||||
Scoreboard.Write(C.cWhite + UtilTime.MakeStr(_maze.getPhaseTimer() * 1000));
|
Scoreboard.Write(C.cWhite + UtilTime.MakeStr((long) (_maze.getPhaseTimer() * 1000)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user