Fix borders

This commit is contained in:
libraryaddict 2015-10-20 04:37:42 +13:00
parent 55f97ef984
commit 5d671d3300
2 changed files with 320 additions and 193 deletions

View File

@ -143,12 +143,13 @@ public abstract class SurvivalGames extends Game
private int _chestRefillTime = 60 * 7;
public SurvivalGames(ArcadeManager manager, GameType type, String[] description)
public SurvivalGames(ArcadeManager manager, GameType type,
String[] description)
{
super(manager, type,
new Kit[]
{
new Kit[]
{
new KitAxeman(manager),
// new KitLooter(manager),
@ -170,16 +171,16 @@ public abstract class SurvivalGames extends Game
new KitBarbarian(manager),
new KitHorseman(manager),
}, description);
}, description);
_help = new String[]
{
{
C.cGreen + "Use a Compass to find and kill enemies!",
C.cGreen + "You lose Speed 2 at start of game if you attack.",
C.cAqua + "Avoid enemies who have better gear than you!"
};
};
// Manager.GetAntiStack().SetEnabled(false);
@ -219,7 +220,6 @@ public abstract class SurvivalGames extends Game
BlockBreakAllow.add(Material.WEB.getId()); // Web
BlockPlaceAllow.add(Material.WEB.getId());
BlockBreakAllow.add(Material.LEAVES.getId()); // Leaves
BlockBreakAllow.add(Material.LEAVES_2.getId()); // Leaves
@ -240,14 +240,17 @@ public abstract class SurvivalGames extends Game
BlockBreakAllow.add(Material.VINE.getId());
BlockBreakAllow.add(Material.WATER_LILY.getId());
// Manager.GetStatsManager().addTable(GetName(), "kills", "deaths", "chestsOpened");
// Manager.GetStatsManager().addTable(GetName(), "kills", "deaths",
// "chestsOpened");
setupLoot();
try
{
_packetTeam = Class.forName("org.bukkit.craftbukkit.v1_8_R3.scoreboard.CraftTeam").getDeclaredField("team");
_packetTeam = Class.forName(
"org.bukkit.craftbukkit.v1_8_R3.scoreboard.CraftTeam")
.getDeclaredField("team");
_packetTeam.setAccessible(true);
}
catch (Exception ex)
@ -255,8 +258,10 @@ public abstract class SurvivalGames extends Game
ex.printStackTrace();
}
registerStatTrackers(new WinWithoutWearingArmorStatTracker(this), new KillsWithinTimeLimitStatTracker(this, 3, 60,
"Bloodlust"), new FirstSupplyDropOpenStatTracker(this), new SimultaneousSkeletonStatTracker(this, 5));
registerStatTrackers(new WinWithoutWearingArmorStatTracker(this),
new KillsWithinTimeLimitStatTracker(this, 3, 60, "Bloodlust"),
new FirstSupplyDropOpenStatTracker(this),
new SimultaneousSkeletonStatTracker(this, 5));
}
@EventHandler
@ -266,7 +271,8 @@ public abstract class SurvivalGames extends Game
if (_placedBlocks.remove(block.getLocation()))
{
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND,
block.getType());
block.setType(Material.AIR);
}
}
@ -346,7 +352,8 @@ public abstract class SurvivalGames extends Game
for (Player player : Bukkit.getOnlinePlayers())
{
player.playSound(player.getEyeLocation(), Sound.IRONGOLEM_DEATH, 1000, 0);
player.playSound(player.getEyeLocation(),
Sound.IRONGOLEM_DEATH, 1000, 0);
}
refillChests();
@ -370,14 +377,17 @@ public abstract class SurvivalGames extends Game
if (_chestRefillTime >= 60)
{
time = (_chestRefillTime / 60) + " minute" + (_chestRefillTime > 60 ? "s" : "");
time = (_chestRefillTime / 60) + " minute"
+ (_chestRefillTime > 60 ? "s" : "");
}
else
{
time = _chestRefillTime + " second" + (_chestRefillTime != 1 ? "s" : "");
time = _chestRefillTime + " second"
+ (_chestRefillTime != 1 ? "s" : "");
}
Announce(C.cGold + C.Bold + "The chests will be refilled in " + time, false);
Announce(C.cGold + C.Bold + "The chests will be refilled in "
+ time, false);
break;
default:
@ -403,13 +413,16 @@ public abstract class SurvivalGames extends Game
while (done < 40)
{
Block block = UtilBlock.getHighest(WorldData.World, WorldData.MinX + UtilMath.r(xDiff),
WorldData.MinZ + UtilMath.r(zDiff), ignore);
Block block = UtilBlock.getHighest(WorldData.World, WorldData.MinX
+ UtilMath.r(xDiff), WorldData.MinZ + UtilMath.r(zDiff),
ignore);
if (!UtilBlock.airFoliage(block) || !UtilBlock.solid(block.getRelative(BlockFace.DOWN)))
if (!UtilBlock.airFoliage(block)
|| !UtilBlock.solid(block.getRelative(BlockFace.DOWN)))
continue;
block.setTypeIdAndData(Material.CHEST.getId(), (byte) UtilMath.r(4), true);
block.setTypeIdAndData(Material.CHEST.getId(),
(byte) UtilMath.r(4), true);
done++;
}
}
@ -451,7 +464,8 @@ public abstract class SurvivalGames extends Game
{
for (int z = -1; z <= 1; z++)
{
Block b = event.getVehicle().getLocation().add(x, y, z).getBlock();
Block b = event.getVehicle().getLocation().add(x, y, z)
.getBlock();
if (b.isLiquid())
{
@ -517,29 +531,34 @@ public abstract class SurvivalGames extends Game
if (!IsAlive(event.getPlayer()))
{
UtilPlayer.message(event.getPlayer(), F.main("Game", "You are not in the game."));
UtilPlayer.message(event.getPlayer(),
F.main("Game", "You are not in the game."));
return;
}
if (!IsLive() || _deathMatchTime <= 60)
{
UtilPlayer.message(event.getPlayer(), F.main("Game", "Deathmatch cannot be started now."));
UtilPlayer.message(event.getPlayer(),
F.main("Game", "Deathmatch cannot be started now."));
return;
}
if (_secondsSinceStart < 5 * 60 || GetPlayers(true).size() > 4)
{
UtilPlayer.message(event.getPlayer(), F.main("Game", "Deathmatch cannot be started now."));
UtilPlayer.message(event.getPlayer(),
F.main("Game", "Deathmatch cannot be started now."));
return;
}
Announce(C.cGreen + C.Bold + event.getPlayer().getName() + " has initiated Deathmatch!");
Announce(C.cGreen + C.Bold + event.getPlayer().getName()
+ " has initiated Deathmatch!");
Announce(C.cGreen + C.Bold + "Deathmatch starting in 60 seconds...");
_deathMatchTime = 60;
for (Player player : UtilServer.getPlayers())
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 1f, 1f);
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 1f,
1f);
}
public void deathmatchSecond()
@ -552,8 +571,9 @@ public abstract class SurvivalGames extends Game
{
for (Player player : GetPlayers(true))
{
Manager.GetDamage().NewDamageEvent(player, null, null, DamageCause.CUSTOM, 1, false, true, true, "Game End",
"Game End Damage");
Manager.GetDamage().NewDamageEvent(player, null, null,
DamageCause.CUSTOM, 1, false, true, true,
"Game End", "Game End Damage");
}
}
@ -564,16 +584,21 @@ public abstract class SurvivalGames extends Game
if (_deathMatchTime > 0 && _deathMatchTime <= 60)
{
if (_deathMatchTime % 30 == 0 || _deathMatchTime == 15 || _deathMatchTime == 10
|| (_deathMatchTeleported ? _deathMatchTime <= 10 : _deathMatchTime <= 5))
if (_deathMatchTime % 30 == 0
|| _deathMatchTime == 15
|| _deathMatchTime == 10
|| (_deathMatchTeleported ? _deathMatchTime <= 10
: _deathMatchTime <= 5))
{
if (_deathMatchTeleported && _deathMatchTime <= 10)
{
Announce(C.cRed + C.Bold + "Deathmatch in " + _deathMatchTime + "...");
Announce(C.cRed + C.Bold + "Deathmatch in "
+ _deathMatchTime + "...");
}
else
{
Announce(C.cGreen + C.Bold + "Deathmatch starting in " + _deathMatchTime + " seconds...");
Announce(C.cGreen + C.Bold + "Deathmatch starting in "
+ _deathMatchTime + " seconds...");
}
}
}
@ -591,7 +616,8 @@ public abstract class SurvivalGames extends Game
{
Announce(C.cRed + C.Bold + "Deathmatch has begun!", false);
_spawn.getWorld().playSound(_spawn, Sound.WITHER_DEATH, 1000, 0);
_spawn.getWorld()
.playSound(_spawn, Sound.WITHER_DEATH, 1000, 0);
refillChests();
}
@ -614,7 +640,8 @@ public abstract class SurvivalGames extends Game
for (double border : buildBorders((2 * 30) - 15, 30.5, 7.5))
{
_borderPositions.put(_secondsSinceStart + 60 + (i++ * 2), border);
_borderPositions.put(_secondsSinceStart + 60 + (i++ * 2),
border);
}
setBorder();
@ -635,7 +662,8 @@ public abstract class SurvivalGames extends Game
if (_informedDeathmatchCommand)
return;
Announce(C.cGreen + C.Bold + "Type " + ChatColor.RESET + C.Bold + "/dm" + C.cGreen + C.Bold + " to start Deathmatch!");
Announce(C.cGreen + C.Bold + "Type " + ChatColor.RESET + C.Bold
+ "/dm" + C.cGreen + C.Bold + " to start Deathmatch!");
_informedDeathmatchCommand = true;
}
@ -650,7 +678,8 @@ public abstract class SurvivalGames extends Game
@EventHandler
public void SnowballEggsDamage(CustomDamageEvent event)
{
if (event.GetProjectile() instanceof Snowball || event.GetProjectile() instanceof Egg)
if (event.GetProjectile() instanceof Snowball
|| event.GetProjectile() instanceof Egg)
{
event.AddMod("Projectile", "Projectile", 0.01, false);
}
@ -692,7 +721,8 @@ public abstract class SurvivalGames extends Game
if (Math.random() > 0.95)
items++;
boolean spawnChest = _chestRefillTime > 0 && UtilMath.offset(chest.getLocation(), _spawn) < 8;
boolean spawnChest = _chestRefillTime > 0
&& UtilMath.offset(chest.getLocation(), _spawn) < 8;
if (spawnChest)
items += 3;
@ -738,7 +768,8 @@ public abstract class SurvivalGames extends Game
if (_supplyCrates.contains(block))
{
Bukkit.getPluginManager().callEvent(new SupplyChestOpenEvent(looter, block));
Bukkit.getPluginManager().callEvent(
new SupplyChestOpenEvent(looter, block));
}
_supplyCrates.remove(block);
@ -757,11 +788,11 @@ public abstract class SurvivalGames extends Game
{
if (assist)
return 3;
else
return 12;
else return 12;
}
// If an item spawns and no one is there to see it, does it really spawn? No.
// If an item spawns and no one is there to see it, does it really spawn?
// No.
@EventHandler
public void ItemSpawn(ItemSpawnEvent event)
{
@ -831,11 +862,14 @@ public abstract class SurvivalGames extends Game
for (Location loc : GetTeamList().get(0).GetSpawns())
{
Firework firework = (Firework) loc.getWorld().spawnEntity(loc, EntityType.FIREWORK);
Firework firework = (Firework) loc.getWorld().spawnEntity(
loc, EntityType.FIREWORK);
FireworkMeta meta = firework.getFireworkMeta();
meta.addEffect(FireworkEffect.builder().withColor(Color.AQUA).with(Type.BALL).withTrail().build());
meta.addEffect(FireworkEffect.builder()
.withColor(Color.AQUA).with(Type.BALL).withTrail()
.build());
firework.setFireworkMeta(meta);
}
@ -869,7 +903,6 @@ public abstract class SurvivalGames extends Game
return;
}
if (!IsLive())
{
return;
@ -910,7 +943,8 @@ public abstract class SurvivalGames extends Game
if (item == null || item.getType() != Material.COMPASS)
return;
int uses = Integer.parseInt(ChatColor.stripColor(item.getItemMeta().getLore().get(0)).replaceAll("\\D+", ""));
int uses = Integer.parseInt(ChatColor.stripColor(
item.getItemMeta().getLore().get(0)).replaceAll("\\D+", ""));
if (uses > 0)
{
@ -923,9 +957,11 @@ public abstract class SurvivalGames extends Game
{
if (alive != player)
{
double distance = alive.getLocation().distance(player.getLocation());
double distance = alive.getLocation().distance(
player.getLocation());
if (distance > 10 && (closestPlayer == null || distance < closestDistance))
if (distance > 10
&& (closestPlayer == null || distance < closestDistance))
{
closestDistance = distance;
closestPlayer = alive;
@ -940,29 +976,36 @@ public abstract class SurvivalGames extends Game
player.setCompassTarget(closestPlayer.getLocation());
player.setItemInHand(buildCompass(uses));
player.sendMessage(F.main("Compass", "Located " + closestPlayer.getName() + " " + (int) closestDistance
+ " blocks away"));
player.sendMessage(F.main("Compass",
"Located " + closestPlayer.getName() + " "
+ (int) closestDistance + " blocks away"));
if (uses >= 1)
{
player.sendMessage(F.main("Compass", uses + " use" + (uses > 1 ? "s" : "") + " of the compass remaining."));
player.sendMessage(F.main("Compass", uses + " use"
+ (uses > 1 ? "s" : "")
+ " of the compass remaining."));
}
else
{
player.sendMessage(F.main("Compass", "No remaining uses! Next use will break it!"));
player.sendMessage(F.main("Compass",
"No remaining uses! Next use will break it!"));
}
}
else
{
player.sendMessage(F.main("Compass", "Can't find anyone! Pointing to spawn!"));
player.sendMessage(F.main("Compass",
"Can't find anyone! Pointing to spawn!"));
player.setCompassTarget(_spawn);
}
}
else
{
player.sendMessage(F.main("Compass", "The compass breaks! No remaining uses!"));
player.sendMessage(F.main("Compass",
"The compass breaks! No remaining uses!"));
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BREAK, 1, 5);
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BREAK,
1, 5);
player.setItemInHand(new ItemStack(Material.AIR));
}
@ -991,8 +1034,10 @@ public abstract class SurvivalGames extends Game
{
DoubleChest doubleChest = (DoubleChest) state;
fillChest(event.getPlayer(), ((Chest) doubleChest.getLeftSide()).getBlock());
fillChest(event.getPlayer(), ((Chest) doubleChest.getRightSide()).getBlock());
fillChest(event.getPlayer(),
((Chest) doubleChest.getLeftSide()).getBlock());
fillChest(event.getPlayer(),
((Chest) doubleChest.getRightSide()).getBlock());
}
else if (state instanceof Chest)
{
@ -1012,7 +1057,8 @@ public abstract class SurvivalGames extends Game
if (random == 0)
{
inv.setFuel(new ItemStack(Material.STICK, new Random().nextInt(2) + 1));
inv.setFuel(new ItemStack(Material.STICK, new Random()
.nextInt(2) + 1));
}
else if (random <= 3)
{
@ -1053,35 +1099,42 @@ public abstract class SurvivalGames extends Game
double border = (_previousBorder - 0.3D) + distanceMovedSince;
//24 @ 100+ reduced to 0 at 32-
double borderAttackDist = Math.max(8, (Math.min(100, border) - 28d) / 3d);
// 24 @ 100+ reduced to 0 at 32-
double borderAttackDist = Math.max(8,
(Math.min(100, border) - 28d) / 3d);
double borderCheckDist = borderAttackDist + 6;
for (Player player : UtilServer.getPlayers())
{
Location loc = player.getLocation();
//Bump Players Back In
if (loc.getX() > _spawn.getX() + border ||
loc.getX() < _spawn.getX() - border ||
loc.getZ() > _spawn.getZ() + border ||
loc.getZ() < _spawn.getZ() - border)
// Bump Players Back In
if (loc.getX() > _spawn.getX() + border
|| loc.getX() < _spawn.getX() - border
|| loc.getZ() > _spawn.getZ() + border
|| loc.getZ() < _spawn.getZ() - border)
{
if (Recharge.Instance.use(player, "Hit by Border", 1000, false, false))
if (Recharge.Instance.use(player, "Hit by Border", 1000, false,
false))
{
Entity bottom = player;
while (bottom.getVehicle() != null)
bottom = bottom.getVehicle();
UtilAction.velocity(bottom, UtilAlg.getTrajectory2d(loc, GetSpectatorLocation()), 1.2, true, 0.4, 0, 10, true);
UtilAction.velocity(bottom, UtilAlg.getTrajectory2d(loc,
GetSpectatorLocation()), 1.2, true, 0.4, 0, 10,
true);
if (Manager.IsAlive(player))
{
Manager.GetDamage().NewDamageEvent(player, null, null, DamageCause.CUSTOM, 10, false, false, false, "Nether Field",
"Vaporize");
Manager.GetDamage().NewDamageEvent(player, null, null,
DamageCause.CUSTOM, 10, false, false, false,
"Nether Field", "Vaporize");
player.getWorld().playSound(loc, Sound.NOTE_BASS, 2f, 1f);
player.getWorld().playSound(loc, Sound.NOTE_BASS, 2f, 1f);
player.getWorld().playSound(loc, Sound.NOTE_BASS, 2f,
1f);
player.getWorld().playSound(loc, Sound.NOTE_BASS, 2f,
1f);
}
}
}
@ -1089,26 +1142,26 @@ public abstract class SurvivalGames extends Game
if (border < 32)
continue;
//Attack Players who are nearby
// Attack Players who are nearby
boolean isX = true;
Location attackSource = null;
if (loc.getX() > _spawn.getX() + (border-borderCheckDist))
if (loc.getX() > _spawn.getX() + (border - borderCheckDist))
{
attackSource = player.getLocation();
attackSource.setX(_spawn.getX() + border);
}
else if (loc.getX() < _spawn.getX() - (border-borderCheckDist))
else if (loc.getX() < _spawn.getX() - (border - borderCheckDist))
{
attackSource = player.getLocation();
attackSource.setX(_spawn.getX() - border);
}
else if (loc.getZ() > _spawn.getZ() + (border-borderCheckDist))
else if (loc.getZ() > _spawn.getZ() + (border - borderCheckDist))
{
attackSource = player.getLocation();
attackSource.setZ(_spawn.getZ() + border);
isX = false;
}
else if (loc.getZ() < _spawn.getZ() - (border-borderCheckDist))
else if (loc.getZ() < _spawn.getZ() - (border - borderCheckDist))
{
attackSource = player.getLocation();
attackSource.setZ(_spawn.getZ() - border);
@ -1117,50 +1170,67 @@ public abstract class SurvivalGames extends Game
if (attackSource != null)
{
double dist = UtilMath.offset(player.getLocation(), attackSource);
double dist = UtilMath.offset(player.getLocation(),
attackSource);
double scale = 1 - (dist / borderAttackDist);
player.playSound(player.getLocation().add(UtilAlg.getTrajectory(player.getLocation(), attackSource).multiply(8)),
Sound.PORTAL, (float)(1 - (dist / borderCheckDist)) * 2, 2f);
player.playSound(
player.getLocation().add(
UtilAlg.getTrajectory(player.getLocation(),
attackSource).multiply(8)),
Sound.PORTAL,
(float) (1 - (dist / borderCheckDist)) * 2, 2f);
if (!Manager.IsAlive(player))
continue;
//Shoot more frequently when they get closer
// Shoot more frequently when they get closer
if (dist < borderAttackDist && Math.random() < scale)
{
//Spawn Fireball
// Spawn Fireball
Location spawn = attackSource.clone();
spawn.add(isX ? 0 : (Math.random()-0.5)*12, 4 + Math.random() * 2 + (Math.random() * 12 * scale), isX ? (Math.random()-0.5)*12 : 0);
spawn.add(isX ? 0 : (Math.random() - 0.5) * 12,
4 + Math.random() * 2
+ (Math.random() * 12 * scale),
isX ? (Math.random() - 0.5) * 12 : 0);
//Raytrace back
// Raytrace back
double maxBack = 8;
double back = 0;
while (spawn.getBlock().getType() == Material.AIR && back < maxBack)
while (spawn.getBlock().getType() == Material.AIR
&& back < maxBack)
{
spawn.subtract(UtilAlg.getTrajectory(spawn, player.getLocation()).multiply(0.2));
spawn.subtract(UtilAlg.getTrajectory(spawn,
player.getLocation()).multiply(0.2));
back += 0.1;
}
//Move out of block
spawn.add(UtilAlg.getTrajectory(spawn, player.getLocation()).multiply(Math.min(back, 1)));
// Move out of block
spawn.add(UtilAlg
.getTrajectory(spawn, player.getLocation())
.multiply(Math.min(back, 1)));
Fireball ball = player.getWorld().spawn(spawn,
Fireball.class);
Fireball ball = player.getWorld().spawn(spawn, Fireball.class);
// Trajectory
Vector traj = UtilAlg.getTrajectory(spawn,
player.getLocation());
traj.add(new Vector((Math.random() - 0.5) * 0.2, (Math
.random() - 0.5) * 0.2, (Math.random() - 0.5) * 0.2));
//Trajectory
Vector traj = UtilAlg.getTrajectory(spawn, player.getLocation());
traj.add(new Vector((Math.random()-0.5)*0.2,(Math.random()-0.5)*0.2,(Math.random()-0.5)*0.2));
EntityLargeFireball eFireball = ((CraftLargeFireball) ball).getHandle();
EntityLargeFireball eFireball = ((CraftLargeFireball) ball)
.getHandle();
eFireball.dirX = traj.getX() * 0.1;
eFireball.dirY = traj.getY() * 0.1;
eFireball.dirZ = traj.getZ() * 0.1;
UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, spawn, 0, 0, 0, 0, 1,
ViewDist.MAX, UtilServer.getPlayers());
player.getWorld().playSound(attackSource, Sound.GHAST_FIREBALL, 2f, 2f);
UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE,
spawn, 0, 0, 0, 0, 1, ViewDist.MAX,
UtilServer.getPlayers());
player.getWorld().playSound(attackSource,
Sound.GHAST_FIREBALL, 2f, 2f);
}
}
}
@ -1175,18 +1245,24 @@ public abstract class SurvivalGames extends Game
if (!(event.getEntity() instanceof Fireball))
return;
Collection<Block> blocks = UtilBlock.getInRadius(event.getEntity().getLocation(), 2.4).keySet();
Collection<Block> blocks = UtilBlock.getInRadius(
event.getEntity().getLocation(), 2.4).keySet();
Manager.GetExplosion().BlockExplosion(blocks, event.getEntity().getLocation(), false);
Manager.GetExplosion().BlockExplosion(blocks,
event.getEntity().getLocation(), false);
}
public boolean isStableBlock(Block block)
{
int sides = 0;
if (UtilBlock.solid(block.getRelative(BlockFace.NORTH))) sides++;
if (UtilBlock.solid(block.getRelative(BlockFace.EAST))) sides++;
if (UtilBlock.solid(block.getRelative(BlockFace.SOUTH))) sides++;
if (UtilBlock.solid(block.getRelative(BlockFace.WEST))) sides++;
if (UtilBlock.solid(block.getRelative(BlockFace.NORTH)))
sides++;
if (UtilBlock.solid(block.getRelative(BlockFace.EAST)))
sides++;
if (UtilBlock.solid(block.getRelative(BlockFace.SOUTH)))
sides++;
if (UtilBlock.solid(block.getRelative(BlockFace.WEST)))
sides++;
return sides >= 3;
}
@ -1205,7 +1281,8 @@ public abstract class SurvivalGames extends Game
event.AddKnockback("Fireball", 2);
}
private ArrayList<Double> buildBorders(int seconds, double border, double leaveRemaining)
private ArrayList<Double> buildBorders(int seconds, double border,
double leaveRemaining)
{
double totalNumber = Math.pow(seconds, 1.9D) + (seconds * 50);
@ -1214,7 +1291,8 @@ public abstract class SurvivalGames extends Game
for (int i = 0; i <= seconds; i++)
{
borders.add(border - ((border - leaveRemaining) * (((Math.pow(i, 1.9D) + (i * 50))) / totalNumber)));
borders.add(border
- ((border - leaveRemaining) * (((Math.pow(i, 1.9D) + (i * 50))) / totalNumber)));
}
return borders;
@ -1263,7 +1341,8 @@ public abstract class SurvivalGames extends Game
Player player = (Player) event.GetEvent().getEntity();
FireworkEffect effect = FireworkEffect.builder().flicker(false).withColor(Color.RED).with(Type.BALL_LARGE).trail(false)
FireworkEffect effect = FireworkEffect.builder().flicker(false)
.withColor(Color.RED).with(Type.BALL_LARGE).trail(false)
.build();
for (int i = 0; i < 3; i++)
UtilFirework.launchFirework(player.getLocation(), effect, null, 3);
@ -1273,20 +1352,22 @@ public abstract class SurvivalGames extends Game
public void killLevelReward(CombatDeathEvent event)
{
Game game = Manager.GetGame();
if (game == null) return;
if (game == null)
return;
if (!(event.GetEvent().getEntity() instanceof Player))
return;
Player killed = (Player)event.GetEvent().getEntity();
Player killed = (Player) event.GetEvent().getEntity();
if (event.GetLog().GetKiller() != null)
{
Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller()
.GetName());
if (killer != null && !killer.equals(killed))
{
//Kill
// Kill
killer.giveExpLevels(2);
killer.playSound(killer.getLocation(), Sound.LEVEL_UP, 1f, 1f);
@ -1295,12 +1376,13 @@ public abstract class SurvivalGames extends Game
for (CombatComponent log : event.GetLog().GetAttackers())
{
if (event.GetLog().GetKiller() != null && log.equals(event.GetLog().GetKiller()))
if (event.GetLog().GetKiller() != null
&& log.equals(event.GetLog().GetKiller()))
continue;
Player assist = UtilPlayer.searchExact(log.GetName());
//Assist
// Assist
if (assist != null)
{
assist.giveExpLevels(1);
@ -1319,7 +1401,8 @@ public abstract class SurvivalGames extends Game
{
Material type = result.getType();
if (type == Material.BUCKET || type == Material.GOLDEN_APPLE || type == Material.FLINT_AND_STEEL || type.isBlock())
if (type == Material.BUCKET || type == Material.GOLDEN_APPLE
|| type == Material.FLINT_AND_STEEL || type.isBlock())
{
event.getInventory().setResult(new ItemStack(Material.AIR));
}
@ -1332,7 +1415,8 @@ public abstract class SurvivalGames extends Game
_lootedBlocks.clear();
WorldServer world = list.isEmpty() ? null : ((CraftWorld) list.get(0).getWorld()).getHandle();
WorldServer world = list.isEmpty() ? null : ((CraftWorld) list.get(0)
.getWorld()).getHandle();
for (Location loc : list)
{
@ -1353,7 +1437,8 @@ public abstract class SurvivalGames extends Game
if (_landedCrates.contains(loc))
continue;
fillChest((Player) holder.getInventory().getViewers().get(0), block);
fillChest((Player) holder.getInventory().getViewers()
.get(0), block);
}
}
}
@ -1382,7 +1467,7 @@ public abstract class SurvivalGames extends Game
WorldBorder border = new WorldBorder();
border.transitionSizeBetween(_currentBorder * 2, _previousBorder * 2,
border.transitionSizeBetween(_previousBorder * 2, _currentBorder * 2,
_currentBorder != _previousBorder ? 1000 : 0);
PacketPlayOutWorldBorder packet = new PacketPlayOutWorldBorder(border,
@ -1402,15 +1487,14 @@ public abstract class SurvivalGames extends Game
WorldBorder border = new WorldBorder();
border.transitionSizeBetween(
_currentBorder * 2,
_previousBorder * 2,
_currentBorder * 2,
_currentBorder != _previousBorder ? 1000 - Math.min(1000,
(System.currentTimeMillis() - _borderStartedMoving))
: 0);
border.setCenter(_spawn.getX(), _spawn.getZ());
border.setWarningDistance(-10);
border.setWarningTime(-10);
border.a(29999984);
PacketPlayOutWorldBorder packet = new PacketPlayOutWorldBorder(border,
EnumWorldBorderAction.INITIALIZE);
@ -1524,7 +1608,8 @@ public abstract class SurvivalGames extends Game
_baseLoot.addLoot(new RandomItem(Material.FLINT, 30, 1, 2));
_baseLoot.addLoot(new RandomItem(Material.FEATHER, 30, 1, 2));
_baseLoot.addLoot(new RandomItem(Material.GOLD_INGOT, 20));
_baseLoot.addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(Material.TNT, (byte)0, 1, F.item("Throwing TNT")), 15));
_baseLoot.addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(
Material.TNT, (byte) 0, 1, F.item("Throwing TNT")), 15));
_spawnLoot.addLoot(new RandomItem(Material.MUSHROOM_SOUP, 15));
_spawnLoot.cloneLoot(_baseLoot);
@ -1574,7 +1659,8 @@ public abstract class SurvivalGames extends Game
// Cooked furnace
_cookedFurnace.addLoot(new RandomItem(Material.COOKED_BEEF, 3, 1, 2));
_cookedFurnace.addLoot(new RandomItem(Material.COOKED_CHICKEN, 3, 1, 2));
_cookedFurnace
.addLoot(new RandomItem(Material.COOKED_CHICKEN, 3, 1, 2));
_cookedFurnace.addLoot(new RandomItem(Material.COOKED_FISH, 3, 1, 2));
_cookedFurnace.addLoot(new RandomItem(Material.GRILLED_PORK, 3, 1, 2));
_cookedFurnace.addLoot(new RandomItem(Material.BAKED_POTATO, 3, 1, 1));
@ -1620,8 +1706,14 @@ public abstract class SurvivalGames extends Game
{
player.playSound(player.getLocation(), Sound.DONKEY_DEATH, 0.8F, 0);
Manager.GetCondition().Factory().Speed("Start Speed", player, player, 30, 1, false, false, false);
Manager.GetCondition().Factory().HealthBoost("Start Health", player, player, 30, 1, false, false, false);
Manager.GetCondition()
.Factory()
.Speed("Start Speed", player, player, 30, 1, false, false,
false);
Manager.GetCondition()
.Factory()
.HealthBoost("Start Health", player, player, 30, 1, false,
false, false);
player.setHealth(player.getMaxHealth());
@ -1653,21 +1745,27 @@ public abstract class SurvivalGames extends Game
if (_supplyLocations.isEmpty())
return;
_supplyCurrent = _supplyLocations.remove(UtilMath.r(_supplyLocations.size()));
_supplyCurrent = _supplyLocations.remove(UtilMath
.r(_supplyLocations.size()));
// Remove Prior
_supplyCrates.remove(_supplyCurrent.getBlock().getRelative(BlockFace.UP));
_supplyCurrent.getBlock().getRelative(BlockFace.UP).setType(Material.AIR);
_supplyCrates.remove(_supplyCurrent.getBlock().getRelative(
BlockFace.UP));
_supplyCurrent.getBlock().getRelative(BlockFace.UP)
.setType(Material.AIR);
// Create New
_supplyCurrent.getBlock().setType(Material.BEACON);
for (int x = -1; x <= 1; x++)
for (int z = -1; z <= 1; z++)
_supplyCurrent.getBlock().getRelative(x, -1, z).setType(Material.IRON_BLOCK);
_supplyCurrent.getBlock().getRelative(x, -1, z)
.setType(Material.IRON_BLOCK);
// Announce
Announce(C.cYellow + C.Bold + "Supply Drop Incoming (" + ChatColor.RESET
+ UtilWorld.locToStrClean(_supplyCurrent) + C.cYellow + C.Bold + ")");
Announce(C.cYellow + C.Bold + "Supply Drop Incoming ("
+ ChatColor.RESET
+ UtilWorld.locToStrClean(_supplyCurrent) + C.cYellow
+ C.Bold + ")");
}
}
else
@ -1680,22 +1778,25 @@ public abstract class SurvivalGames extends Game
_supplyEffect.setY(250);
}
FireworkEffect effect = FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).with(Type.BURST)
.trail(false).build();
FireworkEffect effect = FireworkEffect.builder().flicker(false)
.withColor(Color.YELLOW).with(Type.BURST).trail(false)
.build();
UtilFirework.playFirework(_supplyEffect, effect);
_supplyEffect.setY(_supplyEffect.getY() - 2);
if (UtilMath.offset(_supplyEffect, _supplyCurrent) < 2)
{
effect = FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).with(Type.BALL_LARGE).trail(true)
.build();
effect = FireworkEffect.builder().flicker(false)
.withColor(Color.YELLOW).with(Type.BALL_LARGE)
.trail(true).build();
UtilFirework.playFirework(_supplyEffect, effect);
// Create Chest
_supplyCurrent.getBlock().setType(Material.GLASS);
Block block = _supplyCurrent.getBlock().getRelative(BlockFace.UP);
Block block = _supplyCurrent.getBlock().getRelative(
BlockFace.UP);
block.setType(Material.CHEST);
_landedCrates.add(block.getLocation());
_supplyCrates.add(block);
@ -1733,8 +1834,9 @@ public abstract class SurvivalGames extends Game
continue;
}
UtilParticle.PlayParticle(ParticleType.SPELL, block.getLocation().add(0.5, 0.5, 0.5), 0.3f, 0.3f, 0.3f, 0, 1,
ViewDist.LONG, UtilServer.getPlayers());
UtilParticle.PlayParticle(ParticleType.SPELL, block.getLocation()
.add(0.5, 0.5, 0.5), 0.3f, 0.3f, 0.3f, 0, 1, ViewDist.LONG,
UtilServer.getPlayers());
}
}
@ -1756,13 +1858,21 @@ public abstract class SurvivalGames extends Game
Player player = _tntMap.remove(event.getEntity());
/*CustomExplosion explosion = new CustomExplosion(getArcadeManager().GetDamage(), event.getEntity().getLocation(),
((TNTPrimed) event.getEntity()).getYield(), "Throwing TNT");
/*
* CustomExplosion explosion = new
* CustomExplosion(getArcadeManager().GetDamage(),
* event.getEntity().getLocation(), ((TNTPrimed)
* event.getEntity()).getYield(), "Throwing TNT");
*
* explosion.setPlayer(player, true);
*/
explosion.setPlayer(player, true);*/
for (Player other : UtilPlayer.getNearby(event.getEntity().getLocation(), 14))
Manager.GetCondition().Factory().Explosion("Throwing TNT", other, player, 50, 0.1, false, false);
for (Player other : UtilPlayer.getNearby(event.getEntity()
.getLocation(), 14))
Manager.GetCondition()
.Factory()
.Explosion("Throwing TNT", other, player, 50, 0.1, false,
false);
}
@EventHandler
@ -1783,26 +1893,35 @@ public abstract class SurvivalGames extends Game
if (!Recharge.Instance.use(player, "Throw TNT", 0, true, false))
{
UtilPlayer.message(event.getPlayer(), F.main(GetName(), "You cannot use " + F.item("Throw TNT") + " yet."));
UtilPlayer.message(
event.getPlayer(),
F.main(GetName(), "You cannot use " + F.item("Throw TNT")
+ " yet."));
return;
}
if (!Manager.GetGame().CanThrowTNT(player.getLocation()))
{
// Inform
UtilPlayer.message(event.getPlayer(), F.main(GetName(), "You cannot use " + F.item("Throw TNT") + " here."));
UtilPlayer.message(
event.getPlayer(),
F.main(GetName(), "You cannot use " + F.item("Throw TNT")
+ " here."));
return;
}
UtilInv.remove(player, Material.TNT, (byte) 0, 1);
UtilInv.Update(player);
TNTPrimed tnt = player.getWorld()
.spawn(player.getEyeLocation().add(player.getLocation().getDirection()), TNTPrimed.class);
TNTPrimed tnt = player.getWorld().spawn(
player.getEyeLocation()
.add(player.getLocation().getDirection()),
TNTPrimed.class);
tnt.setFuseTicks(60);
UtilAction.velocity(tnt, player.getLocation().getDirection(), 0.5, false, 0, 0.1, 10, false);
UtilAction.velocity(tnt, player.getLocation().getDirection(), 0.5,
false, 0, 0.1, 10, false);
_tntMap.put(tnt, player);
}
@ -1817,11 +1936,13 @@ public abstract class SurvivalGames extends Game
if (event.GetLog().GetKiller() != null)
{
Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller()
.GetName());
if (killer != null && !killer.equals(killed))
{
// Manager.GetStatsManager().addStat(killer, GetName(), "kills", 1);
// Manager.GetStatsManager().addStat(killer, GetName(), "kills",
// 1);
}
}
@ -1829,7 +1950,8 @@ public abstract class SurvivalGames extends Game
{
if (killed != null)
{
// Manager.GetStatsManager().addStat(killed, GetName(), "deaths", 1);
// Manager.GetStatsManager().addStat(killed, GetName(),
// "deaths", 1);
}
}
}
@ -1843,7 +1965,8 @@ public abstract class SurvivalGames extends Game
if (!IsLive())
return;
ArrayList<Player> alivePlayers = new ArrayList<Player>(_hiddenNames.keySet());
ArrayList<Player> alivePlayers = new ArrayList<Player>(
_hiddenNames.keySet());
HashMap<Player, HashMap<Player, Boolean>> checkedPlayers = new HashMap<Player, HashMap<Player, Boolean>>();
for (Player target : alivePlayers)
@ -1853,7 +1976,8 @@ public abstract class SurvivalGames extends Game
try
{
ScoreboardTeam nmsTeam = (ScoreboardTeam) _packetTeam.get(target.getScoreboard().getTeam(target.getName()));
ScoreboardTeam nmsTeam = (ScoreboardTeam) _packetTeam
.get(target.getScoreboard().getTeam(target.getName()));
packet = new PacketPlayOutScoreboardTeam(nmsTeam, 2);
}
@ -1868,9 +1992,11 @@ public abstract class SurvivalGames extends Game
{
boolean hideName = false;
if (!checkedPlayers.containsKey(target) || !checkedPlayers.get(target).containsKey(player))
if (!checkedPlayers.containsKey(target)
|| !checkedPlayers.get(target).containsKey(player))
{
if (player.getLocation().distance(target.getLocation()) > (GetKit(target) instanceof KitAssassin ? 8 : 24))
if (player.getLocation().distance(target.getLocation()) > (GetKit(target) instanceof KitAssassin ? 8
: 24))
{
hideName = true;
}
@ -1881,9 +2007,9 @@ public abstract class SurvivalGames extends Game
}
Player[] players = new Player[]
{
{
target, player
};
};
if (!(GetKit(player) instanceof KitAssassin || GetKit(target) instanceof KitAssassin))
{
@ -1894,7 +2020,8 @@ public abstract class SurvivalGames extends Game
if (!checkedPlayers.containsKey(p1))
{
checkedPlayers.put(p1, new HashMap<Player, Boolean>());
checkedPlayers.put(p1,
new HashMap<Player, Boolean>());
}
checkedPlayers.get(p1).put(p2, hideName);
@ -1907,7 +2034,8 @@ public abstract class SurvivalGames extends Game
}
// If hiddenNames conta
if (hideName != _hiddenNames.get(player).contains(target.getName()))
if (hideName != _hiddenNames.get(player).contains(
target.getName()))
{
if (!hideName)
{

View File

@ -281,7 +281,7 @@ public class UHC extends TeamGame
{
WorldBorder border = new WorldBorder();
border.transitionSizeBetween(_currentBorder * 2, _previousBorder * 2,
border.transitionSizeBetween(_previousBorder * 2, _currentBorder * 2,
_currentBorder != _previousBorder ? 1000 : 0);
PacketPlayOutWorldBorder packet = new PacketPlayOutWorldBorder(border,
@ -376,14 +376,13 @@ public class UHC extends TeamGame
WorldBorder border = new WorldBorder();
border.transitionSizeBetween(
_currentBorder * 2,
_previousBorder * 2,
_currentBorder * 2,
_currentBorder != _previousBorder ? 1000 - Math.min(1000,
(System.currentTimeMillis() - _borderStartedMoving))
: 0);
border.setWarningDistance(-10);
border.setWarningTime(-10);
border.a(29999984);
PacketPlayOutWorldBorder packet = new PacketPlayOutWorldBorder(border,
EnumWorldBorderAction.INITIALIZE);