Fix minecart dance double life loss
This commit is contained in:
parent
ddad17855f
commit
aff4b6b270
@ -755,8 +755,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
|
|||||||
|
|
||||||
if (lives > 0)
|
if (lives > 0)
|
||||||
{
|
{
|
||||||
loseLife(player);
|
_challenge.setLost(player);
|
||||||
taskFailedMessage(player, lives(player));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,6 @@ import org.bukkit.FireworkEffect.Type;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
|
||||||
import org.bukkit.entity.Minecart;
|
import org.bukkit.entity.Minecart;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
@ -20,6 +19,7 @@ import mineplex.core.common.util.C;
|
|||||||
import mineplex.core.common.util.UtilEnt;
|
import mineplex.core.common.util.UtilEnt;
|
||||||
import mineplex.core.common.util.UtilFirework;
|
import mineplex.core.common.util.UtilFirework;
|
||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.common.util.UtilTextMiddle;
|
import mineplex.core.common.util.UtilTextMiddle;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
@ -28,7 +28,6 @@ import nautilus.game.arcade.game.games.mineware.BawkBawkBattles;
|
|||||||
import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
|
import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
|
||||||
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType;
|
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeType;
|
||||||
import net.minecraft.server.v1_8_R3.BlockPosition;
|
import net.minecraft.server.v1_8_R3.BlockPosition;
|
||||||
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
|
||||||
import net.minecraft.server.v1_8_R3.PacketPlayOutWorldEvent;
|
import net.minecraft.server.v1_8_R3.PacketPlayOutWorldEvent;
|
||||||
|
|
||||||
public class ChallengeMinecartDance extends Challenge
|
public class ChallengeMinecartDance extends Challenge
|
||||||
@ -38,9 +37,9 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
WAITING, STARTED, ENDED
|
WAITING, STARTED, ENDED
|
||||||
}
|
}
|
||||||
|
|
||||||
private volatile MinecartDancePhase _phase = MinecartDancePhase.WAITING;
|
private MinecartDancePhase _phase = MinecartDancePhase.WAITING;
|
||||||
private long _timeSinceLastPhase;
|
private long _timeSinceLastPhase;
|
||||||
private boolean _isPlayingMusic = false;
|
private boolean _isPlayingMusic;
|
||||||
private int _availableMinecarts;
|
private int _availableMinecarts;
|
||||||
private HashSet<Minecart> _minecarts = new HashSet<Minecart>();
|
private HashSet<Minecart> _minecarts = new HashSet<Minecart>();
|
||||||
|
|
||||||
@ -109,22 +108,18 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
@Override
|
@Override
|
||||||
public void onStart()
|
public void onStart()
|
||||||
{
|
{
|
||||||
|
Host.Manager.GetExplosion().SetLiquidDamage(false);
|
||||||
_timeSinceLastPhase = System.currentTimeMillis();
|
_timeSinceLastPhase = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnd()
|
public void onEnd()
|
||||||
{
|
{
|
||||||
|
Host.Manager.GetExplosion().SetLiquidDamage(true);
|
||||||
|
|
||||||
if (_isPlayingMusic)
|
if (_isPlayingMusic)
|
||||||
{
|
{
|
||||||
_isPlayingMusic = false;
|
stopPlayingMusic();
|
||||||
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(1005, new BlockPosition(getCenter().getBlockX(), getCenter().getBlockY() + 5, getCenter().getBlockZ()), 0, false);
|
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
|
||||||
{
|
|
||||||
EntityPlayer entity = ((CraftPlayer) player).getHandle();
|
|
||||||
entity.playerConnection.sendPacket(packet);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Minecart minecarts : _minecarts)
|
for (Minecart minecarts : _minecarts)
|
||||||
@ -136,7 +131,43 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onMinecartInteractionUpdate(UpdateEvent event)
|
public void onUpdate(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (!isChallengeValid())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_phase == MinecartDancePhase.WAITING && event.getType() == UpdateType.SEC)
|
||||||
|
{
|
||||||
|
if (!_isPlayingMusic)
|
||||||
|
{
|
||||||
|
startPlayingMusic();
|
||||||
|
}
|
||||||
|
|
||||||
|
spawnRedFireworks();
|
||||||
|
}
|
||||||
|
else if (_phase == MinecartDancePhase.STARTED)
|
||||||
|
{
|
||||||
|
spawnGreenFireworks();
|
||||||
|
|
||||||
|
if (_isPlayingMusic)
|
||||||
|
{
|
||||||
|
stopPlayingMusic();
|
||||||
|
}
|
||||||
|
|
||||||
|
spawnMinecarts();
|
||||||
|
|
||||||
|
_phase = MinecartDancePhase.ENDED;
|
||||||
|
|
||||||
|
startTimerWhenReady();
|
||||||
|
}
|
||||||
|
else if (_phase == MinecartDancePhase.ENDED)
|
||||||
|
{
|
||||||
|
showMinecartsLeft();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInteractionUpdate(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FASTEST)
|
if (event.getType() != UpdateType.FASTEST)
|
||||||
return;
|
return;
|
||||||
@ -160,47 +191,6 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onMinecartUpdate(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.SEC)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!isChallengeValid())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_phase == MinecartDancePhase.WAITING)
|
|
||||||
{
|
|
||||||
if (!_isPlayingMusic)
|
|
||||||
{
|
|
||||||
_isPlayingMusic = true;
|
|
||||||
startPlayingMusic();
|
|
||||||
}
|
|
||||||
|
|
||||||
spawnRedFireworks();
|
|
||||||
}
|
|
||||||
else if (_phase == MinecartDancePhase.STARTED)
|
|
||||||
{
|
|
||||||
spawnGreenFireworks();
|
|
||||||
|
|
||||||
if (_isPlayingMusic)
|
|
||||||
{
|
|
||||||
_isPlayingMusic = false;
|
|
||||||
stopPlayingMusic();
|
|
||||||
}
|
|
||||||
|
|
||||||
spawnMinecarts();
|
|
||||||
|
|
||||||
_phase = MinecartDancePhase.ENDED;
|
|
||||||
|
|
||||||
startTimerWhenReady();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
showMinecartsLeft();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onVehicleDamage(VehicleDamageEvent event)
|
public void onVehicleDamage(VehicleDamageEvent event)
|
||||||
{
|
{
|
||||||
@ -235,10 +225,14 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
for (Minecart minecart : _minecarts)
|
for (Minecart minecart : _minecarts)
|
||||||
{
|
{
|
||||||
if (!minecart.isEmpty())
|
if (!minecart.isEmpty())
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
@ -247,12 +241,9 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
{
|
{
|
||||||
for (Player player : getPlayersIn(true))
|
for (Player player : getPlayersIn(true))
|
||||||
{
|
{
|
||||||
if (player.isInsideVehicle())
|
if (!player.isInsideVehicle())
|
||||||
{
|
|
||||||
setCompleted(player);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
setLost(player);
|
||||||
Host.WorldData.World.strikeLightningEffect(player.getLocation());
|
Host.WorldData.World.strikeLightningEffect(player.getLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -275,12 +266,13 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
|
|
||||||
private void startPlayingMusic()
|
private void startPlayingMusic()
|
||||||
{
|
{
|
||||||
|
_isPlayingMusic = true;
|
||||||
|
|
||||||
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(1005, new BlockPosition(getCenter().getBlockX(), getCenter().getBlockY() + 5, getCenter().getBlockZ()), 2259, false);
|
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(1005, new BlockPosition(getCenter().getBlockX(), getCenter().getBlockY() + 5, getCenter().getBlockZ()), 2259, false);
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
EntityPlayer entity = ((CraftPlayer) player).getHandle();
|
UtilPlayer.sendPacket(player, packet);
|
||||||
entity.playerConnection.sendPacket(packet);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,10 +281,14 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
if (_timeSinceLastPhase + 5500 < System.currentTimeMillis())
|
if (_timeSinceLastPhase + 5500 < System.currentTimeMillis())
|
||||||
{
|
{
|
||||||
if (UtilMath.r(4) == 0)
|
if (UtilMath.r(4) == 0)
|
||||||
|
{
|
||||||
_phase = MinecartDancePhase.STARTED;
|
_phase = MinecartDancePhase.STARTED;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
spawnFireworkAtCorners(Color.RED);
|
spawnFireworkAtCorners(Color.RED);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spawnFireworkAtCorners(Color.RED);
|
spawnFireworkAtCorners(Color.RED);
|
||||||
@ -316,18 +312,19 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
|
|
||||||
private void stopPlayingMusic()
|
private void stopPlayingMusic()
|
||||||
{
|
{
|
||||||
|
_isPlayingMusic = false;
|
||||||
|
|
||||||
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(1005, new BlockPosition(getCenter().getBlockX(), getCenter().getBlockY() + 5, getCenter().getBlockZ()), 0, false);
|
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(1005, new BlockPosition(getCenter().getBlockX(), getCenter().getBlockY() + 5, getCenter().getBlockZ()), 0, false);
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
EntityPlayer entity = ((CraftPlayer) player).getHandle();
|
UtilPlayer.sendPacket(player, packet);
|
||||||
entity.playerConnection.sendPacket(packet);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void spawnMinecarts()
|
private void spawnMinecarts()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < getPlayersIn(true).size() / 2; i++)
|
for (int i = 0; i < Math.round(getPlayersIn(true).size() / 2); i++)
|
||||||
{
|
{
|
||||||
Minecart minecart = Host.WorldData.World.spawn(getCenter().add(UtilMath.r(getArenaSize(7) * 2) - (getArenaSize(7)), 2, UtilMath.r(getArenaSize(7) * 2) - (getArenaSize(7))), Minecart.class);
|
Minecart minecart = Host.WorldData.World.spawn(getCenter().add(UtilMath.r(getArenaSize(7) * 2) - (getArenaSize(7)), 2, UtilMath.r(getArenaSize(7) * 2) - (getArenaSize(7))), Minecart.class);
|
||||||
UtilEnt.ghost(minecart, true, false);
|
UtilEnt.ghost(minecart, true, false);
|
||||||
@ -337,10 +334,14 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
|
|
||||||
private void startTimerWhenReady()
|
private void startTimerWhenReady()
|
||||||
{
|
{
|
||||||
if (getPlayersIn(false).size() >= 10)
|
if (getPlayersIn(true).size() >= 10)
|
||||||
startTimer(Math.round(getPlayersIn(false).size() / 2));
|
{
|
||||||
|
startTimer(Math.round(getPlayersIn(true).size() / 2));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
startTimer(Math.round(5));
|
{
|
||||||
|
startTimer(5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showMinecartsLeft()
|
private void showMinecartsLeft()
|
||||||
@ -379,31 +380,12 @@ public class ChallengeMinecartDance extends Challenge
|
|||||||
{
|
{
|
||||||
if (_phase == MinecartDancePhase.ENDED)
|
if (_phase == MinecartDancePhase.ENDED)
|
||||||
{
|
{
|
||||||
for (Player player : getPlayersIn(true))
|
playersLooseIfOutsideMinecart();
|
||||||
{
|
|
||||||
if (!player.isInsideVehicle())
|
|
||||||
{
|
|
||||||
Host.WorldData.World.strikeLightningEffect(player.getLocation());
|
|
||||||
setLost(player);
|
|
||||||
// UtilPlayer.message(player, F.main("Minecart Dance", "You didn't make it inside a Minecart in time!"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_timeSinceLastPhase = System.currentTimeMillis();
|
_timeSinceLastPhase = System.currentTimeMillis();
|
||||||
_phase = MinecartDancePhase.WAITING;
|
_phase = MinecartDancePhase.WAITING;
|
||||||
|
|
||||||
for (Minecart minecarts : _minecarts)
|
removeAndClearMinecarts();
|
||||||
{
|
|
||||||
if (!minecarts.isEmpty())
|
|
||||||
{
|
|
||||||
minecarts.eject();
|
|
||||||
}
|
|
||||||
|
|
||||||
minecarts.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
_minecarts.clear();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user