2013-08-27 17:14:08 +02:00
|
|
|
package mineplex.hub;
|
|
|
|
|
2013-08-31 10:19:23 +02:00
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
import org.bukkit.Effect;
|
|
|
|
import org.bukkit.GameMode;
|
|
|
|
import org.bukkit.Location;
|
|
|
|
import org.bukkit.World;
|
|
|
|
import org.bukkit.block.BlockFace;
|
2013-08-31 10:19:23 +02:00
|
|
|
import org.bukkit.entity.Chicken;
|
|
|
|
import org.bukkit.entity.Cow;
|
2013-08-27 17:14:08 +02:00
|
|
|
import org.bukkit.entity.Entity;
|
2013-08-31 10:19:23 +02:00
|
|
|
import org.bukkit.entity.LivingEntity;
|
|
|
|
import org.bukkit.entity.Pig;
|
2013-08-27 17:14:08 +02:00
|
|
|
import org.bukkit.entity.Player;
|
2013-08-31 10:19:23 +02:00
|
|
|
import org.bukkit.entity.Sheep;
|
2013-08-27 17:14:08 +02:00
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.EventPriority;
|
|
|
|
import org.bukkit.event.block.BlockBreakEvent;
|
|
|
|
import org.bukkit.event.block.BlockPlaceEvent;
|
|
|
|
import org.bukkit.event.block.LeavesDecayEvent;
|
|
|
|
import org.bukkit.event.entity.EntityDamageEvent;
|
2013-08-31 11:51:59 +02:00
|
|
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
2013-08-27 17:14:08 +02:00
|
|
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
|
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
|
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
|
|
|
import org.bukkit.event.player.PlayerJoinEvent;
|
|
|
|
import org.bukkit.event.player.PlayerPickupItemEvent;
|
|
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
|
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
|
|
|
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
2013-08-31 11:01:41 +02:00
|
|
|
import org.bukkit.event.world.ChunkLoadEvent;
|
2013-08-27 17:14:08 +02:00
|
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
|
|
import org.bukkit.scoreboard.DisplaySlot;
|
|
|
|
import org.bukkit.scoreboard.Objective;
|
|
|
|
import org.bukkit.scoreboard.Scoreboard;
|
|
|
|
|
|
|
|
import mineplex.core.MiniClientPlugin;
|
|
|
|
import mineplex.core.account.CoreClientManager;
|
|
|
|
import mineplex.core.common.Rank;
|
|
|
|
import mineplex.core.common.util.C;
|
|
|
|
import mineplex.core.common.util.UtilAction;
|
|
|
|
import mineplex.core.common.util.UtilBlock;
|
|
|
|
import mineplex.core.common.util.UtilEnt;
|
|
|
|
import mineplex.core.common.util.UtilInv;
|
|
|
|
import mineplex.core.common.util.UtilMath;
|
|
|
|
import mineplex.core.common.util.UtilPlayer;
|
|
|
|
import mineplex.core.common.util.UtilServer;
|
|
|
|
import mineplex.core.common.util.UtilWorld;
|
2013-08-31 11:01:41 +02:00
|
|
|
import mineplex.core.disguise.DisguiseManager;
|
|
|
|
import mineplex.core.disguise.disguises.DisguisePlayer;
|
2013-08-27 17:14:08 +02:00
|
|
|
import mineplex.core.donation.DonationManager;
|
|
|
|
import mineplex.core.updater.UpdateType;
|
|
|
|
import mineplex.core.updater.event.UpdateEvent;
|
|
|
|
|
|
|
|
public class HubManager extends MiniClientPlugin<HubClient>
|
|
|
|
{
|
|
|
|
private CoreClientManager _clientManager;
|
|
|
|
private DonationManager _donationManager;
|
2013-08-31 11:01:41 +02:00
|
|
|
private DisguiseManager _disguiseManager;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
private Location _spawn;
|
|
|
|
private int _scoreboardTick = 0;
|
|
|
|
|
|
|
|
private String _pigStacker = "0 - Nobody";
|
2013-08-31 10:19:23 +02:00
|
|
|
|
|
|
|
private HashSet<LivingEntity> _mobs = new HashSet<LivingEntity>();
|
2013-08-27 17:14:08 +02:00
|
|
|
|
2013-08-31 11:01:41 +02:00
|
|
|
public HubManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, DisguiseManager disguiseManager)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
|
|
|
super("Hub Manager", plugin);
|
|
|
|
|
|
|
|
_clientManager = clientManager;
|
|
|
|
_donationManager = donationManager;
|
2013-08-31 11:01:41 +02:00
|
|
|
_disguiseManager = disguiseManager;
|
|
|
|
|
2013-08-31 10:19:23 +02:00
|
|
|
_spawn = new Location(UtilWorld.getWorld("world"), 0.5, 74, 0.5);
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
new TextCreator(this);
|
2013-08-31 11:51:59 +02:00
|
|
|
new Dragon(this);
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void PlayerRespawn(PlayerRespawnEvent event)
|
|
|
|
{
|
2013-08-31 10:19:23 +02:00
|
|
|
event.setRespawnLocation(GetSpawn());
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
|
2013-08-31 11:01:41 +02:00
|
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
|
|
|
public void OnChunkLoad(ChunkLoadEvent event)
|
|
|
|
{
|
|
|
|
for (Entity entity : event.getChunk().getEntities())
|
|
|
|
{
|
|
|
|
if (entity instanceof LivingEntity)
|
|
|
|
{
|
2013-08-31 11:25:06 +02:00
|
|
|
if (((LivingEntity)entity).isCustomNameVisible() && ((LivingEntity)entity).getCustomName() != null)
|
2013-08-31 11:01:41 +02:00
|
|
|
{
|
2013-08-31 11:25:06 +02:00
|
|
|
if (((LivingEntity)entity).getCustomName().equalsIgnoreCase("minekartrider"))
|
|
|
|
_disguiseManager.Disguise(new DisguisePlayer(entity, "Play " + ChatColor.YELLOW + "MineKart"));
|
|
|
|
else if (((LivingEntity)entity).getCustomName().equalsIgnoreCase("defek7"))
|
|
|
|
_disguiseManager.Disguise(new DisguisePlayer(entity, "defek7"));
|
|
|
|
else if (((LivingEntity)entity).getCustomName().equalsIgnoreCase("chiss"))
|
|
|
|
_disguiseManager.Disguise(new DisguisePlayer(entity, "Chiss"));
|
|
|
|
else if (((LivingEntity)entity).getCustomName().equalsIgnoreCase("Sterling_"))
|
2013-08-31 11:36:31 +02:00
|
|
|
_disguiseManager.Disguise(new DisguisePlayer(entity, "sterling_"));
|
2013-08-31 11:25:06 +02:00
|
|
|
else if (((LivingEntity)entity).getCustomName().equalsIgnoreCase("Spu_"))
|
|
|
|
_disguiseManager.Disguise(new DisguisePlayer(entity, "Spu_"));
|
2013-08-31 11:01:41 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
@EventHandler(priority = EventPriority.LOW)
|
|
|
|
public void PlayerJoin(PlayerJoinEvent event)
|
|
|
|
{
|
|
|
|
final Player player = event.getPlayer();
|
|
|
|
|
|
|
|
//Survival
|
|
|
|
player.setGameMode(GameMode.SURVIVAL);
|
|
|
|
|
|
|
|
//Public Message
|
|
|
|
event.setJoinMessage(null);
|
|
|
|
|
|
|
|
//Teleport
|
2013-08-31 10:19:23 +02:00
|
|
|
player.teleport(GetSpawn());
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
//Allow Double Jump
|
|
|
|
player.setAllowFlight(true);
|
|
|
|
|
|
|
|
UtilInv.Clear(player);
|
|
|
|
|
|
|
|
//Scoreboard
|
|
|
|
Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
|
|
|
|
player.setScoreboard(board);
|
|
|
|
|
|
|
|
//Objective
|
|
|
|
Objective obj = board.registerNewObjective(C.Bold + "Player Data", "dummy");
|
|
|
|
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
|
|
|
|
|
|
|
|
for (Rank rank : Rank.values())
|
|
|
|
{
|
|
|
|
if (rank != Rank.ALL)
|
|
|
|
board.registerNewTeam(rank.Name).setPrefix(rank.Color + C.Bold + rank.Name + ChatColor.RESET + " ");
|
|
|
|
else
|
|
|
|
board.registerNewTeam(rank.Name).setPrefix("");
|
|
|
|
}
|
|
|
|
|
|
|
|
for (Player otherPlayer : Bukkit.getOnlinePlayers())
|
|
|
|
{
|
|
|
|
//Add Other to Self
|
|
|
|
board.getTeam(_clientManager.Get(otherPlayer).GetRank().Name).addPlayer(otherPlayer);
|
|
|
|
|
|
|
|
//Add Self to Other
|
|
|
|
otherPlayer.getScoreboard().getTeam(_clientManager.Get(player).GetRank().Name).addPlayer(player);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void PlayerQuit(PlayerQuitEvent event)
|
|
|
|
{
|
|
|
|
event.setQuitMessage(null);
|
|
|
|
|
|
|
|
event.getPlayer().leaveVehicle();
|
|
|
|
event.getPlayer().eject();
|
|
|
|
|
|
|
|
for (Player player : UtilServer.getPlayers())
|
|
|
|
player.getScoreboard().resetScores(event.getPlayer());
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void PlayerChat(AsyncPlayerChatEvent event)
|
|
|
|
{
|
|
|
|
if (event.isCancelled())
|
|
|
|
return;
|
|
|
|
|
|
|
|
event.setCancelled(true);
|
|
|
|
|
|
|
|
Player player = event.getPlayer();
|
|
|
|
|
|
|
|
Rank rank = GetClients().Get(player).GetRank();
|
|
|
|
|
|
|
|
String rankStr = "";
|
|
|
|
if (rank != Rank.ALL)
|
|
|
|
rankStr = rank.Color + C.Bold + GetClients().Get(player).GetRank().Name.toUpperCase() + " ";
|
|
|
|
|
|
|
|
for (Player other : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
UtilPlayer.message(other, rankStr + C.cYellow + player.getName() + " " + C.cWhite + event.getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void Damage(EntityDamageEvent event)
|
|
|
|
{
|
|
|
|
if (event.getEntity() instanceof Player && event.getCause() == DamageCause.VOID)
|
2013-08-31 10:19:23 +02:00
|
|
|
event.getEntity().teleport(GetSpawn());
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.LOW)
|
|
|
|
public void ItemPickup(PlayerPickupItemEvent event)
|
|
|
|
{
|
|
|
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
|
|
|
return;
|
|
|
|
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.LOW)
|
|
|
|
public void ItemDrop(PlayerDropItemEvent event)
|
|
|
|
{
|
|
|
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
|
|
|
return;
|
|
|
|
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void BlockBreak(BlockBreakEvent event)
|
|
|
|
{
|
2013-08-31 10:19:23 +02:00
|
|
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
|
|
|
return;
|
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void LeaveDecay(LeavesDecayEvent event)
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void BlockPlace(BlockPlaceEvent event)
|
|
|
|
{
|
2013-08-31 10:19:23 +02:00
|
|
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
|
|
|
return;
|
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void FlightHop(PlayerToggleFlightEvent event)
|
|
|
|
{
|
|
|
|
Player player = event.getPlayer();
|
|
|
|
|
|
|
|
if (player.getGameMode() == GameMode.CREATIVE)
|
|
|
|
return;
|
|
|
|
|
|
|
|
event.setCancelled(true);
|
|
|
|
player.setFlying(false);
|
|
|
|
|
|
|
|
//Disable Flight
|
|
|
|
player.setAllowFlight(false);
|
|
|
|
|
|
|
|
//Velocity
|
|
|
|
UtilAction.velocity(player, 1.4, 0.2, 1, true);
|
|
|
|
|
|
|
|
//Sound
|
|
|
|
player.getWorld().playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void FlightUpdate(UpdateEvent event)
|
|
|
|
{
|
|
|
|
if (event.getType() != UpdateType.TICK)
|
|
|
|
return;
|
|
|
|
|
|
|
|
for (Player player : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
if (player.getGameMode() == GameMode.CREATIVE)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
if (UtilEnt.isGrounded(player) || UtilBlock.solid(player.getLocation().getBlock().getRelative(BlockFace.DOWN)))
|
|
|
|
player.setAllowFlight(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void FoodHealthUpdate(UpdateEvent event)
|
|
|
|
{
|
|
|
|
if (event.getType() != UpdateType.SLOW)
|
|
|
|
return;
|
|
|
|
|
|
|
|
for (Player player : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
player.setHealth(20);
|
|
|
|
player.setFoodLevel(20);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void UpdateWeather(UpdateEvent event)
|
|
|
|
{
|
|
|
|
if (event.getType() != UpdateType.SEC)
|
|
|
|
return;
|
|
|
|
|
|
|
|
World world = UtilWorld.getWorld("world");
|
|
|
|
world.setTime(6000);
|
|
|
|
world.setStorm(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void UpdateScoreboard(UpdateEvent event)
|
|
|
|
{
|
|
|
|
if (event.getType() != UpdateType.TICK)
|
|
|
|
return;
|
|
|
|
|
|
|
|
_scoreboardTick = (_scoreboardTick + 1)%3;
|
|
|
|
|
|
|
|
if (_scoreboardTick != 0)
|
|
|
|
return;
|
|
|
|
|
|
|
|
int bestPig = 0;
|
|
|
|
for (Player player : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
if (player.getVehicle() != null)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
int count = 0;
|
|
|
|
|
|
|
|
Entity ent = player;
|
|
|
|
while (ent.getPassenger() != null)
|
|
|
|
{
|
|
|
|
ent = ent.getPassenger();
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (count > bestPig)
|
|
|
|
{
|
|
|
|
_pigStacker = player.getName();
|
|
|
|
bestPig = count;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (bestPig == 0)
|
|
|
|
{
|
|
|
|
_pigStacker = "0 - Nobody";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_pigStacker = bestPig + " - " + _pigStacker;
|
|
|
|
|
|
|
|
if (_pigStacker.length() > 16)
|
|
|
|
_pigStacker = _pigStacker.substring(0, 16);
|
|
|
|
}
|
|
|
|
|
|
|
|
for (Player player : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
//Objective
|
|
|
|
Objective obj = player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
|
|
|
|
|
|
|
|
//Title
|
|
|
|
obj.setDisplayName(C.cWhite + C.Bold + Get(player).GetScoreboardText());
|
|
|
|
|
|
|
|
int line = 15;
|
|
|
|
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(C.cGreen + C.Bold + "Gems")).setScore(line--);
|
|
|
|
|
|
|
|
// Remove Old
|
|
|
|
player.getScoreboard().resetScores(Bukkit.getOfflinePlayer(Get(player.getName()).GetLastGemCount() + ""));
|
|
|
|
// Add New
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(GetDonation().Get(player.getName()).GetGems() + "")).setScore(line--);
|
|
|
|
|
|
|
|
Get(player.getName()).SetLastGemCount(GetDonation().Get(player.getName()).GetGems());
|
|
|
|
|
|
|
|
//Space
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(" ")).setScore(line--);
|
|
|
|
|
|
|
|
/*
|
|
|
|
//News
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(C.cGray + C.Bold + "Latest News")).setScore(line--);
|
|
|
|
player.getScoreboard().resetScores(Bukkit.getOfflinePlayer(Get(player).GetNewsText(false)));
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(Get(player).GetNewsText(true))).setScore(line--);
|
|
|
|
*/
|
|
|
|
|
|
|
|
//Stacker
|
2013-08-31 10:19:23 +02:00
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(C.cGray + C.Bold + "Stacker")).setScore(line--);
|
2013-08-27 17:14:08 +02:00
|
|
|
player.getScoreboard().resetScores(Bukkit.getOfflinePlayer(Get(player).BestPig));
|
|
|
|
Get(player).BestPig = _pigStacker;
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(Get(player).BestPig)).setScore(line--);
|
|
|
|
|
|
|
|
//Space
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(" ")).setScore(line--);
|
|
|
|
|
|
|
|
//Display Rank
|
|
|
|
if (GetClients().Get(player).GetRank().Has(Rank.ULTRA))
|
|
|
|
{
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(C.cPurple + C.Bold + "Ultra Rank")).setScore(line--);
|
|
|
|
|
|
|
|
player.getScoreboard().resetScores(Bukkit.getOfflinePlayer(Get(player).GetUltraText(false)));
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(Get(player).GetUltraText(true))).setScore(line--);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(C.cRed + C.Bold + "No Rank")).setScore(line--);
|
|
|
|
|
|
|
|
player.getScoreboard().resetScores(Bukkit.getOfflinePlayer(Get(player).GetPurchaseText(false)));
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(Get(player).GetPurchaseText(true))).setScore(line--);
|
|
|
|
}
|
|
|
|
|
|
|
|
//Space
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(" ")).setScore(line--);
|
|
|
|
|
|
|
|
//Display Staff
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(C.cGold + C.Bold + "Online Staff")).setScore(line--);
|
|
|
|
String staff = "";
|
|
|
|
for (Player other : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
Rank rank = GetClients().Get(other).GetRank();
|
|
|
|
|
|
|
|
if (!rank.Has(Rank.HELPER))
|
|
|
|
continue;
|
|
|
|
|
|
|
|
staff += other.getName() + " ";
|
|
|
|
}
|
|
|
|
if (staff.length() == 0)
|
|
|
|
staff = "None";
|
|
|
|
|
|
|
|
player.getScoreboard().resetScores(Bukkit.getOfflinePlayer(Get(player).GetStaffText(false)));
|
|
|
|
Get(player).StaffString = staff;
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(Get(player).GetStaffText(true))).setScore(line--);
|
|
|
|
|
|
|
|
//Space
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(" ")).setScore(line--);
|
|
|
|
|
|
|
|
//Website
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer(C.cYellow + C.Bold + "Website")).setScore(line--);
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer("www.mineplex.com")).setScore(line--);
|
|
|
|
obj.getScore(Bukkit.getOfflinePlayer("----------------")).setScore(line--);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected HubClient AddPlayer(String player)
|
|
|
|
{
|
|
|
|
return new HubClient(player);
|
|
|
|
}
|
|
|
|
|
|
|
|
public CoreClientManager GetClients()
|
|
|
|
{
|
|
|
|
return _clientManager;
|
|
|
|
}
|
|
|
|
|
|
|
|
public DonationManager GetDonation()
|
|
|
|
{
|
|
|
|
return _donationManager;
|
|
|
|
}
|
|
|
|
|
2013-08-31 10:19:23 +02:00
|
|
|
public Location GetSpawn()
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
2013-08-31 10:19:23 +02:00
|
|
|
return _spawn.clone();
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
|
2013-08-31 10:19:23 +02:00
|
|
|
@EventHandler
|
|
|
|
public void UpdateVisibility(UpdateEvent event)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
2013-08-31 10:19:23 +02:00
|
|
|
if (event.getType() != UpdateType.FAST)
|
|
|
|
return;
|
|
|
|
|
|
|
|
for (Player player : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
for (Player other : UtilServer.getPlayers())
|
|
|
|
{
|
|
|
|
if (player.equals(other))
|
|
|
|
continue;
|
|
|
|
|
|
|
|
if (UtilMath.offset(player.getLocation(), GetSpawn()) < 4)
|
|
|
|
{
|
|
|
|
other.hidePlayer(player);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
other.showPlayer(player);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void SpawnAnimals(UpdateEvent event)
|
|
|
|
{
|
|
|
|
if (event.getType() != UpdateType.SLOW)
|
|
|
|
return;
|
|
|
|
|
|
|
|
Iterator<LivingEntity> entIterator = _mobs.iterator();
|
|
|
|
|
|
|
|
while (entIterator.hasNext())
|
|
|
|
{
|
|
|
|
LivingEntity ent = entIterator.next();
|
|
|
|
|
|
|
|
if (!ent.isValid())
|
|
|
|
{
|
|
|
|
ent.remove();
|
|
|
|
entIterator.remove();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_mobs.size() > 24)
|
|
|
|
return;
|
|
|
|
|
|
|
|
//Loc
|
|
|
|
double r = Math.random();
|
|
|
|
|
|
|
|
Location loc = GetSpawn();
|
|
|
|
|
|
|
|
if (r > 0.75) loc.add(32, 0.5, 0);
|
|
|
|
else if (r > 0.5) loc.add(0, 0.5, 32);
|
|
|
|
else if (r > 0.25) loc.add(-32, 0.5, 0);
|
|
|
|
else loc.add(0, 0.5, -32);
|
|
|
|
|
|
|
|
//Spawn
|
|
|
|
r = Math.random();
|
|
|
|
|
|
|
|
if (r > 0.75) _mobs.add(loc.getWorld().spawn(loc, Cow.class));
|
|
|
|
else if (r > 0.5) _mobs.add(loc.getWorld().spawn(loc, Pig.class));
|
|
|
|
else if (r > 0.25) _mobs.add(loc.getWorld().spawn(loc, Sheep.class));
|
|
|
|
else _mobs.add(loc.getWorld().spawn(loc, Chicken.class));
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
2013-08-31 11:51:59 +02:00
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.LOWEST)
|
|
|
|
public void Explosion(EntityExplodeEvent event)
|
|
|
|
{
|
|
|
|
event.blockList().clear();
|
|
|
|
}
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|