Add support for any size team mdoe

This commit is contained in:
Sam 2017-10-19 14:05:35 +01:00 committed by Alexander Meech
parent f4de8bf351
commit 3e1b96affe
4 changed files with 47 additions and 10 deletions

View File

@ -31,17 +31,19 @@ public class CakeTeam
private final GameTeam _team; private final GameTeam _team;
private final Location _edgeHologram; private final Location _edgeHologram;
private final Location _shopHologram; private final Location _shopHologram;
private final Location _chest;
private final Location _cake; private final Location _cake;
private final Map<CakeTeamItem, Integer> _upgrades; private final Map<CakeTeamItem, Integer> _upgrades;
private Hologram _cakeHologram; private Hologram _cakeHologram;
public CakeTeam(CakeWars game, GameTeam team, Location edgeHologram, Location shopHologram) public CakeTeam(CakeWars game, GameTeam team, Location edgeHologram, Location shopHologram, Location chest)
{ {
_game = game; _game = game;
_team = team; _team = team;
_edgeHologram = edgeHologram.add(0, 2, 0); _edgeHologram = edgeHologram.add(0, 2, 0);
_shopHologram = shopHologram.add(0, 2, 0); _shopHologram = shopHologram.add(0, 2, 0);
_chest = chest.getBlock().getLocation();
_cake = game.WorldData.GetDataLocs(team.GetName().toUpperCase()).get(0).getBlock().getLocation(); _cake = game.WorldData.GetDataLocs(team.GetName().toUpperCase()).get(0).getBlock().getLocation();
_cake.getBlock().setType(Material.CAKE_BLOCK); _cake.getBlock().setType(Material.CAKE_BLOCK);
@ -81,6 +83,11 @@ public class CakeTeam
return _cake.getBlock().getType() == Material.CAKE_BLOCK; return _cake.getBlock().getType() == Material.CAKE_BLOCK;
} }
public Location getChest()
{
return _chest;
}
public Location getCake() public Location getCake()
{ {
return _cake; return _cake;

View File

@ -34,7 +34,6 @@ import nautilus.game.arcade.game.games.cakewars.CakeWars;
import nautilus.game.arcade.game.games.cakewars.data.CakeItem; import nautilus.game.arcade.game.games.cakewars.data.CakeItem;
import nautilus.game.arcade.game.games.cakewars.data.CakeResource; import nautilus.game.arcade.game.games.cakewars.data.CakeResource;
import nautilus.game.arcade.game.games.cakewars.data.CakeShopItem; import nautilus.game.arcade.game.games.cakewars.data.CakeShopItem;
import nautilus.game.arcade.game.games.cakewars.data.CakeTeam;
import nautilus.game.arcade.game.games.cakewars.ui.CakeResourcePage; import nautilus.game.arcade.game.games.cakewars.ui.CakeResourcePage;
import nautilus.game.arcade.game.games.cakewars.ui.CakeResourceShop; import nautilus.game.arcade.game.games.cakewars.ui.CakeResourceShop;
import nautilus.game.arcade.game.games.cakewars.ui.CakeResourceStarPage; import nautilus.game.arcade.game.games.cakewars.ui.CakeResourceStarPage;

View File

@ -26,13 +26,6 @@ import nautilus.game.arcade.game.games.cakewars.data.CakeTeamItem;
public class CakeSpawnerModule extends CakeModule public class CakeSpawnerModule extends CakeModule
{ {
private static final Map<String, String> SPAWNER_CONVERTERS = ImmutableMap.<String, String>builder()
.put("RED", "PINK")
.put("BLUE", "LIGHT_BLUE")
.put("GREEN", "LIME")
.put("YELLOW", "ORANGE")
.build();
public CakeSpawnerModule(CakeWars game) public CakeSpawnerModule(CakeWars game)
{ {
super(game); super(game);
@ -76,7 +69,7 @@ public class CakeSpawnerModule extends CakeModule
ItemStack itemStack = resource.getItemStack().clone(); ItemStack itemStack = resource.getItemStack().clone();
itemStack.setAmount(amount); itemStack.setAmount(amount);
Location location = _game.WorldData.GetDataLocs(SPAWNER_CONVERTERS.get(team.GetName().toUpperCase())).get(0); Location location = _game.WorldData.GetCustomLocs("GEN " + (team.GetName().toUpperCase())).get(0);
boolean drop = true; boolean drop = true;
List<Player> players = new ArrayList<>(); List<Player> players = new ArrayList<>();
Item item = null; Item item = null;

View File

@ -18,6 +18,8 @@ import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTextMiddle;
@ -76,6 +78,7 @@ public class CakeTeamModule extends CakeModule
WorldData worldData = _game.WorldData; WorldData worldData = _game.WorldData;
List<Location> edgeHolograms = worldData.GetDataLocs("BLACK"); List<Location> edgeHolograms = worldData.GetDataLocs("BLACK");
List<Location> shopHolograms = worldData.GetDataLocs("GRAY"); List<Location> shopHolograms = worldData.GetDataLocs("GRAY");
List<Location> chestLocations = worldData.GetCustomLocs(String.valueOf(Material.CHEST.getId()));
_game.GetTeamList().forEach(team -> _game.GetTeamList().forEach(team ->
{ {
@ -97,6 +100,10 @@ public class CakeTeamModule extends CakeModule
UtilAlg.findClosest( UtilAlg.findClosest(
average, average,
shopHolograms shopHolograms
),
UtilAlg.findClosest(
average,
chestLocations
) )
) )
); );
@ -201,6 +208,37 @@ public class CakeTeamModule extends CakeModule
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler
public void chestInteract(PlayerInteractEvent event)
{
if (!UtilEvent.isAction(event, ActionType.R_BLOCK))
{
return;
}
Player player = event.getPlayer();
Location block = event.getClickedBlock().getLocation();
if (UtilPlayer.isSpectator(player))
{
return;
}
GameTeam team = _game.GetTeam(player);
for (CakeTeam cakeTeam : _teams.values())
{
if (!cakeTeam.canRespawn() || !cakeTeam.getChest().equals(block) || team.equals(cakeTeam.getGameTeam()))
{
continue;
}
event.setCancelled(true);
player.sendMessage(F.main("Game", "You cannot open another team's chest while their Cake hasn't been eaten."));
return;
}
}
@EventHandler @EventHandler
public void kitGiveItems(PlayerKitGiveEvent event) public void kitGiveItems(PlayerKitGiveEvent event)
{ {