diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java index 85c30066f..8e4034cfa 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java @@ -341,7 +341,7 @@ public class UtilPlayer { if (cur.getName().equalsIgnoreCase(player)) return cur; - + if (cur.getName().toLowerCase().contains(player.toLowerCase())) matchList.add(cur); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansGame.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansGame.java index 737481910..57b84f1a4 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansGame.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansGame.java @@ -78,6 +78,7 @@ public class ClansGame extends MiniPlugin } } + @EventHandler(priority = EventPriority.LOW) public void BlockBurn(BlockBurnEvent event) { diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java index 4f0445230..55214807c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java @@ -95,6 +95,7 @@ import mineplex.game.clans.clans.redis.ClanLoadCommandHandler; import mineplex.game.clans.clans.regions.ClansRegions; import mineplex.game.clans.clans.scoreboard.ClansScoreboardManager; import mineplex.game.clans.clans.siege.SiegeManager; +import mineplex.game.clans.clans.staff.SilentChestOpen; import mineplex.game.clans.clans.supplyDrop.SupplyDropManager; import mineplex.game.clans.clans.tntGenerator.TntGeneratorManager; import mineplex.game.clans.clans.war.WarManager; @@ -112,7 +113,6 @@ import mineplex.game.clans.gameplay.Gameplay; import mineplex.game.clans.gameplay.safelog.SafeLog; import mineplex.game.clans.gameplay.safelog.npc.NPCManager; import mineplex.game.clans.items.GearManager; -import mineplex.game.clans.legacytutorial.Tutorial; import mineplex.game.clans.spawn.Spawn; import mineplex.game.clans.tutorial.TutorialManager; import mineplex.minecraft.game.classcombat.Class.ClassManager; @@ -274,6 +274,8 @@ public class ClansManager extends MiniClientPluginimplements IRelati new Field(plugin, creature, _condition, this, energy, serverName); + new SilentChestOpen(this); + // Required managers to be initialized new Spawn(plugin, this); new NPCManager(this, _hologramManager); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java index a10f9498d..22203f4d7 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java @@ -28,6 +28,7 @@ import mineplex.core.common.util.UtilTime.TimeUnit; import mineplex.core.common.util.UtilWorld; import mineplex.core.delayedtask.DelayedTask; import mineplex.core.delayedtask.DelayedTaskClient; +import mineplex.core.incognito.IncognitoManager; import mineplex.core.recharge.Recharge; import mineplex.game.clans.clans.ClanInfo; import mineplex.game.clans.clans.ClanRole; @@ -357,7 +358,7 @@ public class ClansCommand extends CommandBase } Player target = UtilPlayer.searchOnline(caller, args[1], true); - if (target == null) return; + if (target == null || IncognitoManager.Instance.Get(target).Status) return; Plugin.getClanUtility().invite(caller, clan, target); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java index 15ddf2aa9..cf7f7484c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java @@ -57,6 +57,7 @@ import mineplex.game.clans.clans.ClanInfo; import mineplex.game.clans.clans.ClansBlacklist; import mineplex.game.clans.clans.event.ClansWaterPlaceEvent; import mineplex.game.clans.clans.event.PlayerClaimTerritoryEvent; +import mineplex.game.clans.clans.siege.events.SiegeWeaponExplodeEvent; import mineplex.game.clans.clans.siege.outpost.build.OutpostBlock; import mineplex.game.clans.clans.siege.repository.tokens.OutpostToken; import mineplex.game.clans.core.repository.ClanTerritory; @@ -587,6 +588,18 @@ public class Outpost implements Listener _ownerClan.inform("Your Clan's Outpost has been destroyed.", null); } + @EventHandler + public void onSiegeWeaponExplode(SiegeWeaponExplodeEvent event) + { + if (UtilAlg.inBoundingBox(event.getProjectile().getLocation(), _startCorner.clone().subtract(2, 2, 2), _endCorner.clone().add(2, 2, 2))) + { + if (getLifetime() < 15 * 60 * 1000) + { + event.setCancelled(true); + } + } + } + public ClanInfo getOwner() { return _ownerClan; diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/CustomItem.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/CustomItem.java index 0f3a4f696..534fc3391 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/CustomItem.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/CustomItem.java @@ -6,13 +6,18 @@ import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.Material; +import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import mineplex.core.common.util.EnclosedObject; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilServer; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.game.clans.clans.ClansManager; import mineplex.game.clans.items.attributes.AttributeContainer; import mineplex.game.clans.items.attributes.ItemAttribute; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -90,6 +95,34 @@ public class CustomItem implements Listener return _description; } + @EventHandler + public void update(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + { + return; + } + + final EnclosedObject success = new EnclosedObject<>(Boolean.FALSE); + + UtilServer.getPlayersCollection().forEach(player -> { + PlayerGear gear = ClansManager.getInstance().getGearManager().getPlayerGear(player); + + if (gear.getWeapon() == null) + return; + + if (gear.getWeapon().getUuid().equals(getUuid())) + { + success.Set(Boolean.TRUE); + } + }); + + if (!success.Get().booleanValue()) + { + UtilServer.Unregister(this); + } + } + public List getLore() { List lore = new ArrayList(); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/GearManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/GearManager.java index 79880bf9e..340fee52a 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/GearManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/GearManager.java @@ -164,9 +164,9 @@ public class GearManager extends MiniPlugin implements IPacketHandler, Runnable // TODO: Initialize list of attributes and types // Initialize various LegendaryItem types - LegendaryWeights = new WeightSet>(MeridianScepter.class, EnergyCrossbow.class, AlligatorsTooth.class, WindBlade.class, GiantsBroadsword.class, HyperAxe.class, MagneticMaul.class); + LegendaryWeights = new WeightSet>(MeridianScepter.class, AlligatorsTooth.class, WindBlade.class, GiantsBroadsword.class, HyperAxe.class, MagneticMaul.class); - RareWeights = new WeightSet>(RunedPickaxe.class, Crossbow.class); + RareWeights = new WeightSet>(RunedPickaxe.class); // TODO: Add rest of legendaries, find better way? // Register listeners diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/MeridianScepter.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/MeridianScepter.java index 2c73519e8..0ec1d436f 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/MeridianScepter.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/MeridianScepter.java @@ -7,6 +7,8 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; @@ -83,21 +85,18 @@ public class MeridianScepter extends LegendaryItem Location eLoc = entity.getLocation(); // If they are less than 0.5 blocks away - if (eLoc.clone().add(0, projectile.getY() - eLoc.getY(), 0).distance(projectile) <= 0.7) + if (eLoc.clone().add(0, entity.getEyeHeight() / 2, 0).distance(projectile) <= 0.7) { - // If it is in their body height - if (Math.abs((eLoc.getY() + (entity.getEyeHeight() / 1.5)) - projectile.getY()) <= entity - .getEyeHeight() / 2) + ClansManager.getInstance().getDamageManager().NewDamageEvent(entity, player, null, + DamageCause.CUSTOM, damage, true, true, false, + player.getName(), "Meridian Scepter"); + + entity.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 20 * 4, 0)); + + if (entity instanceof Player) { - if (entity != player) - { - ClansManager.getInstance().getDamageManager().NewDamageEvent(entity, player, null, - DamageCause.CUSTOM, damage, true, true, false, - player.getName(), "Meridian Scepter"); - - UtilPlayer.message(entity, F.main("Clans", F.elem(entity.getName()) + " hit you with a " + F.elem("Meridian Scepter") + C.mBody + ".")); - UtilPlayer.message(player, F.main("Clans", "You hit " + F.elem(player.getName()) + " with your " + F.elem("Meridian Scepter") + C.mBody + ".")); - } + UtilPlayer.message(entity, F.main("Clans", F.elem(player.getName()) + " hit you with a " + F.elem("Meridian Scepter") + C.mBody + ".")); + UtilPlayer.message(player, F.main("Clans", "You hit " + F.elem(entity.getName()) + " with your " + F.elem("Meridian Scepter") + C.mBody + ".")); } } } @@ -154,7 +153,7 @@ public class MeridianScepter extends LegendaryItem Vector newDirection = closestPlayer.getLocation().add(0, 1, 0).toVector() .subtract(projectile.toVector()); - direction.add(newDirection.normalize().multiply(0.01)).normalize().multiply(0.25); + direction.add(newDirection.normalize().multiply(0.01)).normalize().multiply(0.2); } projectile.add(direction); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/rares/RunedPickaxe.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/rares/RunedPickaxe.java index b7309568b..953e59d40 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/rares/RunedPickaxe.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/rares/RunedPickaxe.java @@ -1,7 +1,6 @@ package mineplex.game.clans.items.rares; import org.bukkit.Effect; -import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -13,16 +12,12 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.RGBData; -import mineplex.core.common.util.UtilCollections; import mineplex.core.common.util.UtilColor; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.common.util.UtilShapes; import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilTime; import mineplex.core.recharge.Recharge; import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.core.repository.ClanTerritory; import mineplex.game.clans.items.PlayerGear; public class RunedPickaxe extends RareItem @@ -44,14 +39,15 @@ public class RunedPickaxe extends RareItem @Override public void update(Player wielder) { + if ((System.currentTimeMillis() - _lastBlock) < 98) + System.out.println((System.currentTimeMillis() - _lastBlock) + ", " + (System.currentTimeMillis() - _interactWait)); + if ((System.currentTimeMillis() - _lastBlock) < 98 && (System.currentTimeMillis() - _interactWait) >= 98) { + _interactWait = System.currentTimeMillis(); + if (Recharge.Instance.use(wielder, "Instant Mine", 30000, true, true)) { - fire(wielder); - - _interactWait = System.currentTimeMillis(); - _instamineEnabled = System.currentTimeMillis(); } } @@ -62,9 +58,21 @@ public class RunedPickaxe extends RareItem { PlayerGear gear = ClansManager.getInstance().getGearManager().getPlayerGear(event.getPlayer()); - if (gear.getWeapon() == this && !UtilTime.elapsed(_instamineEnabled, 12000)) + System.out.println(event.getBlock()); + + String playerClan = ClansManager.getInstance().getClanUtility().getClanByPlayer(event.getPlayer()) == null ? null : ClansManager.getInstance().getClanUtility().getClanByPlayer(event.getPlayer()).getName(); + + ClanTerritory territory = ClansManager.getInstance().getClanUtility().getClaim(event.getBlock().getLocation()); + + if (territory != null && !territory.Owner.equals(playerClan)) + return; + + if (event.getBlock().getType() == Material.BEDROCK) + return; + + if (equals(gear.getWeapon()) && !UtilTime.elapsed(_instamineEnabled, 12000)) { - event.setInstaBreak(true); + event.getBlock().breakNaturally(); event.getBlock().getWorld().playEffect(event.getBlock().getLocation(), Effect.STEP_SOUND, event.getBlock().getType(), 10); @@ -72,15 +80,4 @@ public class RunedPickaxe extends RareItem } } - private void fire(final Player player) - { - } - - private void playParticle(Location start, Location end) - { - for (Location loc : UtilShapes.getLinesDistancedPoints(start, end, 0.06)) - { - UtilParticle.PlayParticleToAll(ParticleType.RED_DUST, loc, UtilCollections.random(colors).ToVector(), 1f, 0, ViewDist.LONG); - } - } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/ui/GearPage.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/ui/GearPage.java index 88af7671a..ab1f249c8 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/ui/GearPage.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/ui/GearPage.java @@ -105,9 +105,9 @@ public class GearPage extends ShopPageBase } }; - _legendaryItems = Arrays.> asList(MeridianScepter.class, EnergyCrossbow.class, AlligatorsTooth.class, WindBlade.class, GiantsBroadsword.class, HyperAxe.class, MagneticMaul.class); + _legendaryItems = Arrays.> asList(MeridianScepter.class, AlligatorsTooth.class, WindBlade.class, GiantsBroadsword.class, HyperAxe.class, MagneticMaul.class); - _rareItems = Arrays.> asList(Crossbow.class, RunedPickaxe.class); + _rareItems = Arrays.> asList(RunedPickaxe.class); _armorSuperPrefixes = Arrays.> asList(LavaAttribute.class); _armorPrefixes = Arrays.> asList(PaddedAttribute.class, ReinforcedAttribute.class, SlantedAttribute.class);