Only eliminated players are guardians. Broken blocks/mobs go directly into inventory.

This commit is contained in:
Virizion 2016-02-07 18:16:36 -05:00
parent b40f018ee2
commit aaf1fd42f3
2 changed files with 15 additions and 80 deletions

View File

@ -41,7 +41,6 @@ import org.bukkit.event.player.PlayerBucketFillEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent;
@ -458,45 +457,13 @@ public class SpeedBuilders extends SoloGame
if (i >= WorldData.GetDataLocs("YELLOW").size())
{
GetTeamList().get(0).RemovePlayer(players.get(i));
moveToGuardians(players.get(i), false);
players.get(i).teleport(GetSpectatorLocation());
Manager.addSpectator(players.get(i), true);
}
}
for (Player player : UtilServer.getPlayers())
{
//Not on a team will become a spec
if (!IsAlive(player))
{
moveToGuardians(player, false);
player.teleport(GetSpectatorLocation());
}
}
for (Player player : GetTeamList().get(1).GetPlayers(false))
{
//Reapply disguise 5 ticks later
Manager.runSyncLater(new Runnable()
{
@Override
public void run()
{
DisguiseGuardian disguise = new DisguiseGuardian(player);
disguise.setName(C.cGray + player.getName());
disguise.setCustomNameVisible(true);
Manager.GetDisguise().disguise(disguise);
player.setAllowFlight(true);
player.setFlying(true);
}
}, 5);
}
}
@EventHandler
public void onLive(GameStateChangeEvent event)
{
@ -1645,34 +1612,6 @@ public class SpeedBuilders extends SoloGame
event.setCancelled(true);
}
//Add to guardians before arcade manager adds to spectator to trick it into thinking the player is "alive"
@EventHandler(priority = EventPriority.LOW)
public void joinAddGuardian(PlayerJoinEvent event)
{
if (!InProgress())
return;
moveToGuardians(event.getPlayer(), false);
event.getPlayer().teleport(GetSpectatorLocation());
//We need to disguise a tick after
Manager.runSyncLater(new Runnable()
{
@Override
public void run()
{
DisguiseGuardian disguise = new DisguiseGuardian(event.getPlayer());
disguise.setName(C.cGray + event.getPlayer().getName());
disguise.setCustomNameVisible(true);
Manager.GetDisguise().disguise(disguise);
event.getPlayer().setAllowFlight(true);
event.getPlayer().setFlying(true);
}
}, 1);
}
@EventHandler
public void setNextBuild(PlayerCommandPreprocessEvent event)
{
@ -1853,7 +1792,7 @@ public class SpeedBuilders extends SoloGame
for (Player player : playersDead)
{
Scoreboard.Write(C.cGray + player.getName());
Scoreboard.Write(C.cDGray + player.getName());
}
Scoreboard.Draw();

View File

@ -2,14 +2,6 @@ package nautilus.game.arcade.game.games.speedbuilders.data;
import java.util.ArrayList;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilTime;
import mineplex.core.hologram.Hologram;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
@ -17,11 +9,19 @@ import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Item;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.Bed;
import org.bukkit.material.Door;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilTime;
import mineplex.core.hologram.Hologram;
public class DemolitionData
{
@ -170,9 +170,7 @@ public class DemolitionData
for (ItemStack itemStack : UtilBlock.blockToInventoryItemStacks(block))
{
Item item = block.getWorld().dropItem(block.getLocation().add(0.5, 0.5, 0.5), itemStack);
Parent.DroppedItems.put(item, System.currentTimeMillis());
UtilInv.insert(Parent.Player, itemStack);
}
//Destroy the other part
@ -210,9 +208,7 @@ public class DemolitionData
{
ItemStack spawnEgg = new ItemStack(Material.MONSTER_EGG, 1, entity.getType().getTypeId());
Item item = entity.getWorld().dropItem(entity.getLocation().add(0, 1, 0), spawnEgg);
Parent.DroppedItems.put(item, System.currentTimeMillis());
UtilInv.insert(Parent.Player, spawnEgg);
entity.remove();