use of net.dzikoysk.funnyguilds.basic.User in project FunnyGuilds by FunnyGuilds.
the class PlayerDeath method onDeath.
@EventHandler
public void onDeath(PlayerDeathEvent event) {
Player v = event.getEntity();
Player a = event.getEntity().getKiller();
User victim = User.get(v);
victim.getRank().addDeath();
if (a == null) {
return;
}
User attacker = User.get(a);
if (victim.equals(attacker)) {
return;
}
if (PluginHook.isPresent(PluginHook.PLUGIN_WORLDGUARD)) {
if (WorldGuardHook.isOnNonPointsRegion(v.getLocation()) || WorldGuardHook.isOnNonPointsRegion(a.getLocation())) {
return;
}
}
PluginConfig config = Settings.getConfig();
MessagesConfig messages = Messages.getInstance();
if (config.rankFarmingProtect) {
if (attacker.getLastVictim() != null && attacker.getLastVictim().equals(victim)) {
if (attacker.getLastVictimTime() + (config.rankFarmingCooldown * 1000) >= System.currentTimeMillis()) {
v.sendMessage(messages.rankLastVictimV);
a.sendMessage(messages.rankLastVictimA);
event.setDeathMessage(null);
return;
}
} else if (victim.getLastAttacker() != null && victim.getLastAttacker().equals(attacker)) {
if (victim.getLastVictimTime() + (config.rankFarmingCooldown * 1000) >= System.currentTimeMillis()) {
v.sendMessage(messages.rankLastAttackerV);
a.sendMessage(messages.rankLastAttackerA);
event.setDeathMessage(null);
return;
}
}
}
if (config.rankIPProtect) {
if (a.getAddress().getHostString().equalsIgnoreCase(v.getAddress().getHostString())) {
v.sendMessage(messages.rankIPVictim);
a.sendMessage(messages.rankIPAttacker);
event.setDeathMessage(null);
return;
}
}
int[] rankChanges = new int[2];
int aP = attacker.getRank().getPoints();
int vP = victim.getRank().getPoints();
switch(config.rankSystem) {
case ELO:
rankChanges = getEloValues(vP, aP);
break;
case PERCENT:
Double d = victim.getRank().getPoints() * (config.percentRankChange / 100);
rankChanges[0] = d.intValue();
rankChanges[1] = d.intValue();
break;
case STATIC:
rankChanges[0] = config.staticAttackerChange;
rankChanges[1] = config.staticVictimChange;
break;
default:
rankChanges = getEloValues(vP, aP);
break;
}
RankChangeEvent attackerEvent = new PointsChangeEvent(EventCause.USER, attacker.getRank(), attacker, rankChanges[0]);
RankChangeEvent victimEvent = new PointsChangeEvent(EventCause.USER, victim.getRank(), attacker, rankChanges[1]);
List<String> assistEntries = new ArrayList<>();
if (SimpleEventHandler.handle(attackerEvent) && SimpleEventHandler.handle(victimEvent)) {
double attackerDamage = victim.killedBy(attacker);
if (config.assistEnable && victim.isAssisted()) {
double toShare = attackerEvent.getChange() * (1 - config.assistKillerShare);
double totalDamage = victim.getTotalDamage() + attackerDamage;
int givenPoints = 0;
Map<User, Double> damage = MapUtil.sortByValue(victim.getDamage());
int assists = 0;
for (Entry<User, Double> assist : damage.entrySet()) {
double assistFraction = assist.getValue() / totalDamage;
int addedPoints = (int) Math.round(assistFraction * toShare);
if (addedPoints <= 0) {
continue;
}
if (config.assistsLimit > 0) {
if (assists >= config.assistsLimit) {
continue;
}
assists++;
}
givenPoints += addedPoints;
String assistEntry = StringUtils.replace(messages.rankAssistEntry, "{PLAYER}", assist.getKey().getName());
assistEntry = StringUtils.replace(assistEntry, "{+}", Integer.toString(addedPoints));
assistEntry = StringUtils.replace(assistEntry, "{SHARE}", StringUtils.getPercent(assistFraction));
assistEntries.add(assistEntry);
assist.getKey().getRank().addPoints(addedPoints);
}
double attackerPoints = attackerEvent.getChange() - toShare + (givenPoints < toShare ? toShare - givenPoints : 0);
attackerEvent.setChange((int) Math.round(attackerPoints));
}
attacker.getRank().addKill();
attacker.getRank().addPoints(attackerEvent.getChange());
attacker.setLastVictim(victim);
victim.getRank().removePoints(victimEvent.getChange());
victim.setLastAttacker(attacker);
victim.clearDamage();
}
ConcurrencyManager concurrencyManager = FunnyGuilds.getInstance().getConcurrencyManager();
ConcurrencyTaskBuilder taskBuilder = ConcurrencyTask.builder();
if (config.dataType.mysql) {
if (victim.hasGuild()) {
// IndependentThread.actions(ActionType.MYSQL_UPDATE_GUILD_POINTS, victim.getGuild());
taskBuilder.delegate(new DatabaseUpdateGuildPointsRequest(victim.getGuild()));
}
if (attacker.hasGuild()) {
// IndependentThread.actions(ActionType.MYSQL_UPDATE_GUILD_POINTS, attacker.getGuild());
taskBuilder.delegate(new DatabaseUpdateGuildPointsRequest(attacker.getGuild()));
}
// IndependentThread.actions(ActionType.MYSQL_UPDATE_USER_POINTS, victim);
// IndependentThread.actions(ActionType.MYSQL_UPDATE_USER_POINTS, attacker);
taskBuilder.delegate(new DatabaseUpdateUserPointsRequest(victim));
taskBuilder.delegate(new DatabaseUpdateUserPointsRequest(attacker));
}
/*
IndependentThread.actions(ActionType.DUMMY_GLOBAL_UPDATE_USER, victim);
IndependentThread.actions(ActionType.DUMMY_GLOBAL_UPDATE_USER, attacker);
IndependentThread.actions(ActionType.RANK_UPDATE_USER, victim);
IndependentThread.action(ActionType.RANK_UPDATE_USER, attacker);
*/
ConcurrencyTask task = taskBuilder.delegate(new DummyGlobalUpdateUserRequest(victim)).delegate(new DummyGlobalUpdateUserRequest(attacker)).delegate(new RankUpdateUserRequest(victim)).delegate(new RankUpdateUserRequest(attacker)).build();
concurrencyManager.postTask(task);
String deathMessage = messages.rankDeathMessage;
deathMessage = StringUtils.replace(deathMessage, "{ATTACKER}", attacker.getName());
deathMessage = StringUtils.replace(deathMessage, "{VICTIM}", victim.getName());
deathMessage = StringUtils.replace(deathMessage, "{+}", Integer.toString(attackerEvent.getChange()));
deathMessage = StringUtils.replace(deathMessage, "{-}", Integer.toString(victimEvent.getChange()));
deathMessage = StringUtils.replace(deathMessage, "{POINTS-FORMAT}", IntegerRange.inRange(vP, config.pointsFormat));
deathMessage = StringUtils.replace(deathMessage, "{POINTS}", String.valueOf(victim.getRank().getPoints()));
deathMessage = StringUtils.replace(deathMessage, "{WEAPON}", MaterialUtil.getMaterialName(a.getItemInHand().getType()));
deathMessage = StringUtils.replace(deathMessage, "{REMAINING-HEALTH}", Double.toString(a.getHealth()));
deathMessage = StringUtils.replace(deathMessage, "{REMAINING-HEARTS}", Double.toString(a.getHealth() / 2));
if (victim.hasGuild()) {
deathMessage = StringUtils.replace(deathMessage, "{VTAG}", StringUtils.replace(config.chatGuild, "{TAG}", victim.getGuild().getTag()));
}
if (attacker.hasGuild()) {
deathMessage = StringUtils.replace(deathMessage, "{ATAG}", StringUtils.replace(config.chatGuild, "{TAG}", attacker.getGuild().getTag()));
}
deathMessage = StringUtils.replace(deathMessage, "{VTAG}", "");
deathMessage = StringUtils.replace(deathMessage, "{ATAG}", "");
event.setDeathMessage(deathMessage);
}
use of net.dzikoysk.funnyguilds.basic.User in project FunnyGuilds by FunnyGuilds.
the class PlayerKick method onKick.
@EventHandler
public void onKick(PlayerKickEvent event) {
Player player = event.getPlayer();
User user = User.get(player);
NotificationBar.remove(player);
user.setIndividualPrefix(null);
user.setScoreboard(null);
user.setDummy(null);
user.removeFromCache();
user.clearDamage();
AbstractTablist.removeTablist(player);
}
use of net.dzikoysk.funnyguilds.basic.User in project FunnyGuilds by FunnyGuilds.
the class EntityExplode method onExplode.
@EventHandler
public void onExplode(EntityExplodeEvent event) {
List<Block> destroyedBlocks = event.blockList();
Location explodeLocation = event.getLocation();
PluginConfig pluginConfiguration = Settings.getConfig();
List<Location> sphere = SpaceUtils.sphere(explodeLocation, pluginConfiguration.explodeRadius, pluginConfiguration.explodeRadius, false, true, 0);
Map<Material, Double> materials = pluginConfiguration.explodeMaterials;
destroyedBlocks.removeIf(blocks -> {
Region region = RegionUtils.getAt(blocks.getLocation());
return region != null && region.getGuild() != null && !region.getGuild().canBeAttacked();
});
Region region = RegionUtils.getAt(explodeLocation);
if (region != null) {
Guild guild = region.getGuild();
if (pluginConfiguration.guildTNTProtectionEnabled) {
LocalDateTime start = pluginConfiguration.guildTNTProtectionStartTime;
LocalDateTime end = pluginConfiguration.guildTNTProtectionEndTime;
LocalDateTime now = LocalDateTime.now();
if ((now.isAfter(start) || now.equals(start)) && (now.isBefore(end) || now.equals(end))) {
event.setCancelled(true);
return;
}
}
if (pluginConfiguration.warTntProtection & !guild.canBeAttacked()) {
event.setCancelled(true);
return;
}
Location protect = region.getCenter().getBlock().getRelative(BlockFace.DOWN).getLocation();
destroyedBlocks.removeIf(block -> block.getLocation().equals(protect));
guild.setBuild(System.currentTimeMillis() + Settings.getConfig().regionExplode * 1000L);
for (User user : guild.getMembers()) {
Player player = user.getPlayer();
if (player != null) {
if (informationMessageCooldowns.cooldown(player, TimeUnit.SECONDS, pluginConfiguration.infoPlayerCooldown)) {
player.sendMessage(Messages.getInstance().regionExplode.replace("{TIME}", Integer.toString(Settings.getConfig().regionExplode)));
}
}
}
}
for (Location l : sphere) {
Material material = l.getBlock().getType();
if (!materials.containsKey(material)) {
continue;
}
if (material == Material.WATER || material == Material.LAVA) {
if (SpaceUtils.chance(materials.get(material))) {
l.getBlock().setType(Material.AIR);
}
} else {
if (SpaceUtils.chance(materials.get(material))) {
l.getBlock().breakNaturally();
}
}
}
}
use of net.dzikoysk.funnyguilds.basic.User in project FunnyGuilds by FunnyGuilds.
the class PlayerCommand method onCommand.
@EventHandler
public void onCommand(PlayerCommandPreprocessEvent event) {
Player player = event.getPlayer();
if (player.hasPermission("funnyguilds.admin")) {
return;
}
String[] splited = event.getMessage().split("\\s+");
if (splited.length == 0) {
return;
}
String command = splited[0];
for (String s : Settings.getConfig().regionCommands) {
if (("/" + s).equalsIgnoreCase(command)) {
command = null;
break;
}
}
if (command != null) {
return;
}
Region region = RegionUtils.getAt(player.getLocation());
if (region == null) {
return;
}
Guild guild = region.getGuild();
User user = User.get(player);
if (guild.getMembers().contains(user)) {
return;
}
event.setCancelled(true);
player.sendMessage(Messages.getInstance().regionCommand);
}
use of net.dzikoysk.funnyguilds.basic.User in project FunnyGuilds by FunnyGuilds.
the class ExcCreate method execute.
@SuppressWarnings("deprecation")
@Override
public void execute(CommandSender sender, String[] args) {
MessagesConfig messages = Messages.getInstance();
PluginConfig config = Settings.getConfig();
Player player = (Player) sender;
User user = User.get(player);
if (!config.guildsEnabled) {
player.sendMessage(messages.adminGuildsDisabled);
return;
}
boolean isBlockedWorld = this.checkWorld(player);
if (isBlockedWorld) {
player.sendMessage(messages.blockedWorld);
return;
}
if (user.hasGuild()) {
player.sendMessage(messages.generalHasGuild);
return;
}
if (args.length != 2) {
switch(args.length) {
case 0:
player.sendMessage(messages.generalNoTagGiven);
return;
case 1:
player.sendMessage(messages.generalNoNameGiven);
return;
default:
player.sendMessage(messages.createMore);
return;
}
}
String tag = args[0];
if (!config.guildTagKeepCase) {
tag = config.guildTagUppercase ? tag.toUpperCase() : tag.toLowerCase();
}
String name = args[1];
if (tag.length() > config.createTagLength) {
player.sendMessage(messages.createTagLength.replace("{LENGTH}", Integer.toString(config.createTagLength)));
return;
}
if (tag.length() < config.createTagMinLength) {
player.sendMessage(messages.createTagMinLength.replace("{LENGTH}", Integer.toString(config.createTagMinLength)));
return;
}
if (name.length() > config.createNameLength) {
player.sendMessage(messages.createNameLength.replace("{LENGTH}", Integer.toString(config.createNameLength)));
return;
}
if (name.length() < config.createNameMinLength) {
player.sendMessage(messages.createNameMinLength.replace("{LENGTH}", Integer.toString(config.createNameMinLength)));
return;
}
if (!tag.matches(config.tagRegex.getPattern())) {
player.sendMessage(messages.createOLTag);
return;
}
if (!name.matches(config.nameRegex.getPattern())) {
player.sendMessage(messages.createOLName);
return;
}
if (GuildUtils.nameExists(name)) {
player.sendMessage(messages.createNameExists);
return;
}
if (GuildUtils.tagExists(tag)) {
player.sendMessage(messages.createTagExists);
return;
}
if (config.checkForRestrictedGuildNames) {
if (!GuildUtils.isNameValid(name)) {
player.sendMessage(messages.restrictedGuildName);
return;
} else if (!GuildUtils.isTagValid(tag)) {
player.sendMessage(messages.restrictedGuildTag);
return;
}
}
Location guildLocation = player.getLocation().getBlock().getLocation();
if (config.regionsEnabled) {
if (config.createCenterY != 0) {
guildLocation.setY(config.createCenterY);
}
int d = config.regionSize + config.createDistance;
if (config.enlargeItems != null) {
d += config.enlargeItems.size() * config.enlargeSize;
}
if (d > player.getWorld().getSpawnLocation().distance(guildLocation)) {
player.sendMessage(messages.createSpawn.replace("{DISTANCE}", Integer.toString(d)));
return;
}
}
if (config.rankCreateEnable) {
int requiredRank = player.hasPermission("funnyguilds.vip.rank") ? config.rankCreateVip : config.rankCreate;
int points = user.getRank().getPoints();
if (points < requiredRank) {
String msg = messages.createRank;
msg = StringUtils.replace(msg, "{REQUIRED-FORMAT}", IntegerRange.inRange(requiredRank, config.pointsFormat).replace("{POINTS}", "{REQUIRED}"));
msg = StringUtils.replace(msg, "{REQUIRED}", String.valueOf(requiredRank));
msg = StringUtils.replace(msg, "{POINTS-FORMAT}", IntegerRange.inRange(points, config.pointsFormat));
msg = StringUtils.replace(msg, "{POINTS}", String.valueOf(points));
player.sendMessage(msg);
return;
}
}
List<ItemStack> requiredItems = player.hasPermission("funnyguilds.vip.items") ? config.createItemsVip : config.createItems;
int requiredExperience = player.hasPermission("funnyguilds.vip.items") ? config.requiredExperienceVip : config.requiredExperience;
double requiredMoney = player.hasPermission("funnyguilds.vip.items") ? config.requiredMoneyVip : config.requiredMoney;
if (!user.getBypass()) {
if (player.getTotalExperience() < requiredExperience) {
String msg = messages.createExperience;
msg = StringUtils.replace(msg, "{EXP}", String.valueOf(requiredExperience));
player.sendMessage(msg);
return;
}
if (VaultHook.isHooked() && !VaultHook.canAfford(player, requiredMoney)) {
String notEnoughMoneyMessage = messages.createMoney;
notEnoughMoneyMessage = StringUtils.replace(notEnoughMoneyMessage, "{MONEY}", Double.toString(requiredMoney));
player.sendMessage(notEnoughMoneyMessage);
return;
}
for (ItemStack requiredItem : requiredItems) {
if (player.getInventory().containsAtLeast(requiredItem, requiredItem.getAmount())) {
continue;
}
String msg = ItemUtils.translatePlaceholder(messages.createItems, requiredItems, requiredItem);
player.sendMessage(msg);
return;
}
}
if (config.regionsEnabled) {
if (RegionUtils.isIn(guildLocation)) {
player.sendMessage(messages.createIsNear);
return;
}
if (RegionUtils.isNear(guildLocation)) {
player.sendMessage(messages.createIsNear);
return;
}
if (config.createMinDistanceFromBorder != -1) {
WorldBorder border = player.getWorld().getWorldBorder();
double borderSize = border.getSize() / 2;
double borderX = border.getCenter().getX() + borderSize;
double borderZ = border.getCenter().getZ() + borderSize;
double distanceX = Math.abs(borderX) - Math.abs(player.getLocation().getX());
double distanceZ = Math.abs(borderZ) - Math.abs(player.getLocation().getZ());
if ((distanceX < config.createMinDistanceFromBorder) || (distanceZ < config.createMinDistanceFromBorder)) {
String notEnoughDistanceMessage = messages.createNotEnoughDistanceFromBorder;
notEnoughDistanceMessage = StringUtils.replace(notEnoughDistanceMessage, "{BORDER-MIN-DISTANCE}", Double.toString(config.createMinDistanceFromBorder));
player.sendMessage(notEnoughDistanceMessage);
return;
}
}
}
if (!SimpleEventHandler.handle(new GuildCreateEvent(EventCause.USER, user, name, tag, guildLocation))) {
return;
}
if (user.getBypass()) {
user.setBypass(false);
} else {
player.getInventory().removeItem(ItemUtils.toArray(requiredItems));
player.setTotalExperience(player.getTotalExperience() - requiredExperience);
if (VaultHook.isHooked()) {
VaultHook.withdrawFromPlayerBank(player, requiredMoney);
}
}
Manager.getInstance().stop();
Guild guild = new Guild(name);
guild.setTag(tag);
guild.setOwner(user);
guild.setLives(config.warLives);
guild.setBorn(System.currentTimeMillis());
guild.setValidity(System.currentTimeMillis() + config.validityStart);
guild.setAttacked(System.currentTimeMillis() - config.warWait + config.warProtection);
guild.setPvP(config.damageGuild);
user.setGuild(guild);
if (config.regionsEnabled) {
Region region = new Region(guild, guildLocation, config.regionSize);
guild.setRegion(region.getName());
guild.addRegion(region.getName());
if (config.pasteSchematicOnCreation) {
if (!SchematicHelper.pasteSchematic(config.guildSchematicFile, guildLocation, config.pasteSchematicWithAir)) {
player.sendMessage(messages.createGuildCouldNotPasteSchematic);
}
} else if (config.createCenterSphere) {
for (Location l : SpaceUtils.sphere(guildLocation, 4, 4, false, true, 0)) {
if (l.getBlock().getType() != Material.BEDROCK) {
l.getBlock().setType(Material.AIR);
}
}
for (Location l : SpaceUtils.sphere(guildLocation, 4, 4, true, true, 0)) {
if (l.getBlock().getType() != Material.BEDROCK) {
l.getBlock().setType(Material.OBSIDIAN);
}
}
}
if (config.createMaterialData != null && config.createMaterialData.getItemType() != Material.AIR) {
Block heart = guildLocation.getBlock().getRelative(BlockFace.DOWN);
heart.setType(config.createMaterialData.getItemType());
heart.setData(config.createMaterialData.getData());
} else if (config.createEntityType != null) {
EntityUtil.spawn(guild);
}
player.teleport(guildLocation);
}
Manager.getInstance().start();
/*
IndependentThread.actions(ActionType.RANK_UPDATE_GUILD, guild);
IndependentThread.actions(ActionType.PREFIX_GLOBAL_ADD_GUILD, guild);
IndependentThread.action(ActionType.PREFIX_GLOBAL_ADD_PLAYER, user.getName());
*/
ConcurrencyManager concurrencyManager = FunnyGuilds.getInstance().getConcurrencyManager();
concurrencyManager.postRequests(new RankUpdateGuildRequest(guild), new PrefixGlobalAddGuildRequest(guild), new PrefixGlobalAddPlayerRequest(user.getName()));
MessageTranslator translator = new MessageTranslator().register("{GUILD}", name).register("{TAG}", tag).register("{PLAYER}", player.getName());
player.sendMessage(translator.translate(messages.createGuild));
Bukkit.broadcastMessage(translator.translate(messages.broadcastCreate));
}
Aggregations