Fixed a bunch of bugs. Still need to fix clicking compass ending game.

This commit is contained in:
Virizion 2015-12-14 00:00:40 -05:00
parent 54911bb213
commit d8f44434ff
2 changed files with 75 additions and 13 deletions

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map.Entry; import java.util.Map.Entry;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.MapUtil;
@ -54,10 +55,11 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockGrowEvent; import org.bukkit.event.block.BlockGrowEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.event.world.StructureGrowEvent; import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.material.Bed; import org.bukkit.material.Bed;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
@ -348,7 +350,7 @@ public class SpeedBuilder extends SoloGame
return; return;
} }
_currentBuild = UtilAlg.Random(_buildData); _currentBuild = _buildData.get(_build);
for (Player player : GetPlayers(true)) for (Player player : GetPlayers(true))
{ {
@ -520,7 +522,7 @@ public class SpeedBuilder extends SoloGame
@EventHandler @EventHandler
public void stopGuardiansBuildEnter(UpdateEvent event) public void stopGuardiansBuildEnter(UpdateEvent event)
{ {
if (event.getType() != UpdateType.FAST) if (event.getType() != UpdateType.FASTER)
return; return;
if (!IsLive()) if (!IsLive())
@ -530,8 +532,13 @@ public class SpeedBuilder extends SoloGame
{ {
for (RecreationData recreation : _buildRecreations.values()) for (RecreationData recreation : _buildRecreations.values())
{ {
Vector vec = player.getLocation().getDirection().multiply(-1);
if (UtilMath.offsetSquared(player.getLocation(), recreation.getMidpoint()) < 64) if (UtilMath.offsetSquared(player.getLocation(), recreation.getMidpoint()) < 64)
UtilAction.velocity(player, player.getLocation().getDirection().multiply(-1)); {
player.playSound(player.getEyeLocation(), Sound.NOTE_PLING, 10F, 0.5F);
UtilAction.velocity(player, vec, 1.6, false, 0, 0.4, vec.length(), false);
}
} }
} }
} }
@ -916,22 +923,67 @@ public class SpeedBuilder extends SoloGame
} }
@EventHandler @EventHandler
public void stopJudgeUnspec(final PlayerToggleSneakEvent event) public void stopJudgeUnspec(UpdateEvent event)
{ {
if (event.getType() != UpdateType.TICK)
return;
if (!IsLive()) if (!IsLive())
return; return;
if (_state != SpeedBuilderState.REVIEWING) if (_state != SpeedBuilderState.REVIEWING)
return; return;
Manager.runSyncLater(new Runnable() for (Player player : UtilServer.getPlayers())
{ {
@Override player.setGameMode(GameMode.SPECTATOR);
public void run() player.setSpectatorTarget(_judgeEntity);
{ }
event.getPlayer().setSpectatorTarget(_judgeEntity); }
}
}, 1L); @EventHandler
public void stopGuardianSpecPickup(PlayerPickupItemEvent event)
{
if (GetState().ordinal() < GameState.Prepare.ordinal())
return;
if (Manager.isSpectator(event.getPlayer()) || GetTeamList().get(1).HasPlayer(event.getPlayer()))
event.setCancelled(true);
}
@EventHandler
public void stopGuardianSpecPlace(BlockPlaceEvent event)
{
if (GetState().ordinal() < GameState.Prepare.ordinal())
return;
if (Manager.isSpectator(event.getPlayer()) || GetTeamList().get(1).HasPlayer(event.getPlayer()))
event.setCancelled(true);
}
@EventHandler
public void stopEntityChangeBlock(EntityChangeBlockEvent event)
{
event.setCancelled(true);
}
private int _build;
@EventHandler
public void setBuild(PlayerCommandPreprocessEvent event)
{
if (GetState() != GameState.Recruit)
return;
if (!event.getMessage().startsWith("/setbuild "))
return;
if (!Manager.GetClients().hasRank(event.getPlayer(), Rank.SNR_MODERATOR))
return;
_build = Integer.parseInt(event.getMessage().split(" ")[1]);
Announce(F.main("Build", "BUILD SET TO " + C.mElem + _build));
} }
@Override @Override

View File

@ -18,6 +18,7 @@ import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.block.Skull;
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers; import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers;
import org.bukkit.entity.Item; import org.bukkit.entity.Item;
@ -228,13 +229,22 @@ public class RecreationData
{ {
Block currentBlock = CornerA.clone().add(x, y, z).getBlock(); Block currentBlock = CornerA.clone().add(x, y, z).getBlock();
BlockState expectedState = buildData.Build[x][y][z]; BlockState expectedState = buildData.Build[x][y][z];
if (expectedState.getType() == currentBlock.getType() && expectedState.getRawData() == currentBlock.getData()) if (expectedState.getType() == currentBlock.getType() && expectedState.getRawData() == currentBlock.getData())
{ {
score++; score++;
continue; continue;
} }
//Sapling growth fix
if (expectedState.getType() == Material.SAPLING && currentBlock.getType() == Material.SAPLING)
{
if (currentBlock.getData() % 8 == expectedState.getRawData() % 8)
score++;
Game.Announce("SPECIAL SAPLING CHECK = " + (currentBlock.getData() % 8 == expectedState.getRawData() % 8));
}
//Fix for corner stair shape //Fix for corner stair shape
if (currentBlock.getState().getData() instanceof Stairs && expectedState.getData() instanceof Stairs) if (currentBlock.getState().getData() instanceof Stairs && expectedState.getData() instanceof Stairs)
{ {