From bcfe4a42c0486c79fc6426ee4566e9b1000a9d16 Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 11 Mar 2016 00:41:28 +0000 Subject: [PATCH] changerooonis --- .../mineplex/cache/player/PlayerCache.java | 2 +- .../src/mineplex/core/common/util/F.java | 2 +- .../org.eclipse.m2e.core.maven2Builder.launch | 7 + .../src/mineplex/core/chat/Chat.java | 3 +- .../repository/IncognitoRepository.java | 1 + .../game/clans/clans/ClansManager.java | 5 + .../game/clans/clans/pvptimer/PvpTimer.java | 2 +- .../game/clans/clans/siege/SiegeManager.java | 11 +- .../clans/clans/siege/outpost/Outpost.java | 45 +---- .../clans/siege/outpost/OutpostManager.java | 4 +- .../game/clans/clans/siege/weapon/Cannon.java | 5 +- .../clans/clans/siege/weapon/SiegeWeapon.java | 4 +- .../tntGenerator/TntGeneratorManager.java | 2 +- .../game/clans/economy/GoldManager.java | 9 + .../game/clans/items/GearManager.java | 1 + .../items/legendaries/MeridianScepter.java | 14 +- .../game/clans/items/rares/RunedPickaxe.java | 8 +- .../game/clans/shop/pvp/tnt/TNTGenPage.java | 154 ++++++++++++++++++ .../game/clans/shop/pvp/tnt/TNTGenShop.java | 22 +++ 19 files changed, 243 insertions(+), 58 deletions(-) create mode 100644 Plugins/Mineplex.Core/.externalToolBuilders/org.eclipse.m2e.core.maven2Builder.launch create mode 100644 Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenPage.java create mode 100644 Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenShop.java diff --git a/Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerCache.java b/Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerCache.java index 4ab7fbbc6..d6dc266e6 100644 --- a/Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerCache.java +++ b/Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerCache.java @@ -48,9 +48,9 @@ public class PlayerCache try { PlayerInfo playerInfo = _repository.getElement(uuid.toString()); - System.out.println("Got playerInfo: " + playerInfo); if (playerInfo != null) { + System.out.println("Got playerInfo: " + playerInfo); System.out.println("account id: " + playerInfo.getAccountId()); System.out.println("name: " + playerInfo.getName()); } diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java index 2c06ace26..668220aa2 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java @@ -48,7 +48,7 @@ public class F { return C.mElem + elem.toString() + ChatColor.RESET + C.mBody; } - + public static String name(String elem) { return C.mElem + elem + C.mBody; diff --git a/Plugins/Mineplex.Core/.externalToolBuilders/org.eclipse.m2e.core.maven2Builder.launch b/Plugins/Mineplex.Core/.externalToolBuilders/org.eclipse.m2e.core.maven2Builder.launch new file mode 100644 index 000000000..f07519153 --- /dev/null +++ b/Plugins/Mineplex.Core/.externalToolBuilders/org.eclipse.m2e.core.maven2Builder.launch @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java b/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java index 48416a366..cb4432ae2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java @@ -54,7 +54,6 @@ public class Chat extends MiniPlugin private CoreClientManager _clientManager; private PreferencesManager _preferences; private AchievementManager _achievements; - private IncognitoManager _incognitoManager; private String[] _hackusations = {"hack", "hax", "hacker", "hacking", "cheat", "cheater", "cheating", "forcefield", "flyhack", "flyhacking", "autoclick", "aimbot"}; private String _filterUrl = "https://chat.mineplex.com:8003/content/item/moderate"; @@ -303,7 +302,7 @@ public class Chat extends MiniPlugin Player sender = event.getPlayer(); - if (_incognitoManager.Get(sender).Status) + if (IncognitoManager.Instance.Get(sender).Status) { UtilPlayer.message(sender, C.cYellow + "You can not chat while incognito."); event.setCancelled(true); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/incognito/repository/IncognitoRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/incognito/repository/IncognitoRepository.java index b764c8d68..a7fa15e46 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/incognito/repository/IncognitoRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/incognito/repository/IncognitoRepository.java @@ -31,6 +31,7 @@ public class IncognitoRepository extends MinecraftRepository public void SetStatus(int accountId, boolean status) { + System.out.println("[INCOGNITO] Updated status for " + accountId + " to " + status); executeUpdate(SET_STATUS, new ColumnInt("accountId", accountId), new ColumnBoolean("status", status)); } 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 5b41d02ac..635866252 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 @@ -1073,6 +1073,11 @@ public class ClansManager extends MiniClientPluginimplements IRelati @EventHandler(priority = EventPriority.HIGHEST) public void onJoin(PlayerLoginEvent event) { + if (true) + { + return; + } + Rank rank = _clientManager.Get(event.getPlayer()).GetRank(); if (!event.getPlayer().isOp() && !event.getPlayer().isWhitelisted() && !rank.has(Rank.LEGEND)) { diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/pvptimer/PvpTimer.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/pvptimer/PvpTimer.java index 30f0c8e3c..426b42787 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/pvptimer/PvpTimer.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/pvptimer/PvpTimer.java @@ -102,7 +102,7 @@ public class PvpTimer extends MiniClientPlugin if (territory != null && territory.Owner.equals("Borderlands")) { - UtilAction.velocity(player, UtilAlg.getTrajectory2d(player.getLocation(), Spawn.ORIGIN), 2.6, true, 0.5, 1, 1.35, true); + UtilAction.velocity(player, UtilAlg.getTrajectory2d(player.getLocation(), Spawn.ORIGIN), 2.6, true, 0.5, .2, 1.35, true); player.playSound(player.getLocation(), Sound.NOTE_BASS, 1.0f, 1.0f); UtilPlayer.message(player, " "); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java index ba9c80641..e328bdaad 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java @@ -2,16 +2,17 @@ package mineplex.game.clans.clans.siege; import java.util.Stack; -import mineplex.game.clans.clans.pvptimer.PvpTimer; import org.bukkit.Location; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.entity.Slime; import org.bukkit.event.EventHandler; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.player.PlayerJoinEvent; import com.google.gson.Gson; import mineplex.core.MiniPlugin; -import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilInv; @@ -64,6 +65,12 @@ public class SiegeManager extends MiniPlugin }); } + @EventHandler + public void join(PlayerJoinEvent event) + { + event.getPlayer().getWorld().getEntitiesByClass(Slime.class).forEach(Entity::remove); + } + @EventHandler public void save(UpdateEvent event) { 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 19029c5af..1e8b6e1a9 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 @@ -1,6 +1,5 @@ package mineplex.game.clans.clans.siege.outpost; -import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; @@ -21,7 +20,6 @@ import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.material.Door; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.util.Vector; @@ -29,7 +27,6 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.ColorFader; import mineplex.core.common.util.EnclosedObject; import mineplex.core.common.util.F; -import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.LoopIterator; import mineplex.core.common.util.RGBData; import mineplex.core.common.util.UtilAction; @@ -104,8 +101,6 @@ public class Outpost implements Listener public ClanInfo _againstClan; - private List _nameHolograms; - private Hologram _lifetimeLeft; public Outpost(OutpostManager outpostManager, OutpostToken token) @@ -116,8 +111,6 @@ public class Outpost implements Listener _ownerClan = token.OwnerClan; - _nameHolograms = new ArrayList<>(); - _startCorner = token.Origin.clone().subtract(token.Type._size, 1.1, token.Type._size); _endCorner = token.Origin.clone().add(token.Type._size + .9, token.Type._ySize - 1, token.Type._size + .9); @@ -166,30 +159,6 @@ public class Outpost implements Listener Collections.reverse(reverse); _reverseCircleStages = new LoopIterator(reverse); - if (token.OutpostState == OutpostState.CONSTRUCTING || token.OutpostState == OutpostState.LIVE) - { - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().add((_type._size / 2) + 1, 2, 0).add(2, 0, 0).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().subtract((_type._size / 2) + 1, -2, 0).subtract(2, 0, 0).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().add(0, 2, (_type._size / 2) + 1).add(0, 0, 2).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().subtract(0, -2, (_type._size / 2) + 1).subtract(0, 0, 2).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); - - _nameHolograms.forEach(Hologram::start); - - _nameHolograms.forEach(hologram -> - hologram.setInteraction((player, click) -> - UtilBlock.getInRadius(hologram.getLocation(), 2, 2).forEach((block, dist) -> { - if (block.getType() == Material.IRON_DOOR) - { - Door door = (Door) block.getState(); - - door.setOpen(!door.isOpen()); - } - }) - ) - ); - - _lifetimeLeft.start(); - } } public Outpost(OutpostManager outpostManager, ClanInfo clan, Location location, OutpostType type) @@ -213,7 +182,6 @@ public class Outpost implements Listener _timeSpawned = System.currentTimeMillis(); _core = _type.getCoreLocation(_origin); - _nameHolograms = new ArrayList<>(); _preHologram = new Hologram(_ownerClan.Clans.getHologramManager(), _origin.clone().add(0.5, 2.3, 0.5), F.elem(_ownerClan.getName()) + C.cWhite + "'s Outpost block (Right-Click to activate)"); _preHologram2 = new Hologram(_ownerClan.Clans.getHologramManager(), _origin.clone().add(0.5, 3, 0.5), "Despawning: " + UtilText.getProgress(null, 0, null, true)); @@ -245,11 +213,6 @@ public class Outpost implements Listener kill(); } }); - - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().add((_type._size / 2) + 1, 2, 0).add(2, 0, 0).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().subtract((_type._size / 2) + 1, -2, 0).subtract(2, 0, 0).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().add(0, 2, (_type._size / 2) + 1).add(0, 0, 2).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); - _nameHolograms.add(new Hologram(outpostManager.getClansManager().getHologramManager(), _origin.clone().subtract(0, -2, (_type._size / 2) + 1).subtract(0, 0, 2).add(.5, 0, .5), C.cGreen + _ownerClan.getName())); } private void cleanup() @@ -264,8 +227,6 @@ public class Outpost implements Listener _state = OutpostState.DEAD; - _nameHolograms.forEach(Hologram::stop); - _outpostManager.queueForRemoval(_ownerClan.getName()); } @@ -309,7 +270,7 @@ public class Outpost implements Listener if(_outpostManager.getClansManager().getPvpTimer().hasTimer(event.getPlayer())) { - UtilPlayer.message(event.getPlayer(), F.main("Clans", "You cannot activate an Outpost whilst on protected from pvp.")); + UtilPlayer.message(event.getPlayer(), F.main("Clans", "You cannot activate an Outpost whilst protected from pvp.")); return; } @@ -321,7 +282,7 @@ public class Outpost implements Listener if (event.getClickedBlock() != null && _origin.equals(event.getClickedBlock().getLocation())) { - if (event.getClickedBlock().getType().equals(Material.NETHERRACK)) + if (event.getClickedBlock().getType().equals(Material.BEACON)) { _origin.getBlock().setType(Material.AIR); beginConstruction(); @@ -551,8 +512,6 @@ public class Outpost implements Listener UtilTextMiddle.display("Siege", "A Siege has been declared on your Clan!", 20, 100, 20, clan.getOnlinePlayersArray()); } } - - _nameHolograms.forEach(Hologram::start); } public void kill() diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/OutpostManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/OutpostManager.java index 824937b3a..56722307b 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/OutpostManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/OutpostManager.java @@ -126,8 +126,8 @@ public class OutpostManager extends MiniPlugin } } - for (int x = -4; x < 4; x++) - for (int z = -4; z < 4; z++) + for (int x = -2; x < 2; x++) + for (int z = -2; z < 2; z++) { Chunk chunk = location.getWorld().getChunkAt(location.getChunk().getX() + x, location.getChunk().getZ() + z); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java index 8298be2be..e30e3c05b 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java @@ -74,7 +74,8 @@ public class Cannon extends SiegeWeapon return false; } - if(_clans.getPvpTimer().hasTimer(player)) { + if(_clans.getPvpTimer().hasTimer(player)) + { UtilPlayer.message(player, F.main("Clans", "You cannot fire a cannon whilst on PvPTimer")); return false; } @@ -371,7 +372,7 @@ public class Cannon extends SiegeWeapon protected void handleLeftClick(Player player) { - if (_rider == null) + if (_rider == null && _ownerClan.isMember(player)) { UtilPlayer.message(player, F.main("Clans", "You picked up your Cannon.")); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java index 53d09b49f..194596f3e 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java @@ -349,6 +349,8 @@ public abstract class SiegeWeapon implements Listener _comprisedOf.clear(); _infoHologram.stop(); + if (_collisionBox != null) _collisionBox.Destruct(); + _siegeManager.dead(this); _alive = false; @@ -654,7 +656,7 @@ public abstract class SiegeWeapon implements Listener @EventHandler(priority = EventPriority.HIGHEST) public void onDmg(EntityDamageByEntityEvent event) { - if (!_comprisedOf.contains(event.getEntity()) && event.getDamager() instanceof Player) + if (_comprisedOf.contains(event.getEntity()) && event.getDamager() instanceof Player) handleLeftClick((Player) event.getDamager()); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/tntGenerator/TntGeneratorManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/tntGenerator/TntGeneratorManager.java index 2654c99b5..22a370533 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/tntGenerator/TntGeneratorManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/tntGenerator/TntGeneratorManager.java @@ -12,7 +12,7 @@ import mineplex.game.clans.clans.ClansManager; public class TntGeneratorManager extends MiniPlugin { - public static final int SECONDS_PER_TNT = 1000 * 30;//60 * 60 * 10; // 10 Hours + public static final int SECONDS_PER_TNT = 30;//60 * 60 * 10; // 10 Hours public static final int MAX_GENERATOR_STOCK = 3; private ClansManager _clansManager; diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java index 66261b6ad..a7649a2fa 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java @@ -236,6 +236,15 @@ public class GoldManager extends MiniPlugin public void dropGold(Location location, int amount, double velMult) { int count = amount / 1000; + + if (count > 75) + { + double x = Math.random() * 2 * Math.PI; + Vector velocity = new Vector(Math.sin(x), 0, Math.cos(x)); + dropGold(location, amount, velocity, velMult, "Gold " + 0); + return; + } + int extraGold = amount % 1000; for (int i = 0; i < count; i++) 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 e6a78a9bf..2ae629733 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 @@ -570,6 +570,7 @@ public class GearManager extends MiniPlugin implements IPacketHandler, Runnable if (ci != null && LegendaryWeights.elements().contains(ci.getClass())) { + lore.add(" "); lore.add(C.cWhite + "Original Owner: " + C.cYellow + (ci.OriginalOwner == null ? "You" : Bukkit.getOfflinePlayer(UUID.fromString(ci.OriginalOwner)).getName())); } 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 c4557b7de..16c56b321 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 @@ -50,6 +50,18 @@ public class MeridianScepter extends LegendaryItem { if ((System.currentTimeMillis() - _lastBlock) < 98 && (System.currentTimeMillis() - _interactWait) >= 98) { + if (ClansManager.getInstance().getPvpTimer().hasTimer(wielder)) + { + UtilPlayer.message(wielder, F.main("Clans", "You are not allowed to fire the Meridian Scepter whilst under pvp protection.")); + return; + } + + if (ClansManager.getInstance().getClanUtility().getClaim(wielder.getLocation()) != null && ClansManager.getInstance().getClanUtility().getClaim(wielder.getLocation()).isSafe(wielder.getLocation())) + { + UtilPlayer.message(wielder, F.main("Clans", "You are not allowed to fire the " + F.elem("Meridian Scepter") + " whilst in a safe zone.")); + return; + } + if (Recharge.Instance.use(wielder, "Meridian Scepter", 4000, true, true)) { fire(wielder); @@ -153,7 +165,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.2); + direction.add(newDirection.normalize().multiply(0.01)).normalize().multiply(0.15); } 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 990a21d3d..a8d929e09 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 @@ -16,6 +16,7 @@ import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.UtilTextBottom; import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTime; import mineplex.core.recharge.Recharge; @@ -52,6 +53,11 @@ public class RunedPickaxe extends RareItem RunedPickaxe pick = (RunedPickaxe) gear.getWeapon(); + if (!pick._enabled && !UtilTime.elapsed(pick._instamineEnabled, 12000)) + { + UtilTextBottom.displayProgress("Instant mine", (((double) (((double) System.currentTimeMillis()) - ((double) pick._instamineEnabled))) / 12000D), null, true, player); + } + if (pick._enabled && (System.currentTimeMillis() - pick._instamineEnabled) >= 12000) { @@ -110,7 +116,7 @@ public class RunedPickaxe extends RareItem return; } - if (Recharge.Instance.usable(event.getPlayer(), "Instant Mine", true)) + if (Recharge.Instance.usable(event.getPlayer(), "Instant Mine", true) && UtilTime.elapsed(_instamineEnabled, 15000)) { UtilTextMiddle.display("", "Instant mine enabled for " + F.elem("12 Seconds"), 20, 80, 20, event.getPlayer()); _instamineEnabled = System.currentTimeMillis(); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenPage.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenPage.java new file mode 100644 index 000000000..1fdd76656 --- /dev/null +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenPage.java @@ -0,0 +1,154 @@ +package mineplex.game.clans.shop.pvp.tnt; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.ItemStack; +import org.bukkit.scheduler.BukkitRunnable; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilUI; +import mineplex.core.donation.DonationManager; +import mineplex.core.itemstack.ItemBuilder; +import mineplex.core.shop.page.ShopPageBase; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.game.clans.clans.ClanInfo; +import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.clans.tntGenerator.TntGenerator; +import mineplex.game.clans.clans.tntGenerator.TntGeneratorManager; +import mineplex.game.clans.economy.GoldManager; +import mineplex.game.clans.shop.ClansShopItem; + +public class TNTGenPage extends ShopPageBase +{ + public TNTGenPage(ClansManager plugin, TNTGenShop shop, CoreClientManager clientManager, DonationManager donationManager, org.bukkit.entity.Player player) + { + super(plugin, shop, clientManager, donationManager, "TNT Generator", player); + + buildPage(); + } + + @Override + protected void buildPage() + { + ClanInfo clan = _plugin.getClan(_player); + + if (clan == null) + { + _player.closeInventory(); + _player.playSound(_player.getLocation(), Sound.NOTE_BASS, 1, 1); + UtilPlayer.message(_player, F.main("Clans", "You must be in a clan to manage a TNT Generator.")); + return; + } + + if (clan.getGenerator() == null) + { + addButton(13, new ItemBuilder(Material.BREWING_STAND_ITEM).setTitle(C.cRed + "Buy TNT Generator").setLore(" ", C.cYellow + ClansShopItem.TNT_GENERATOR.getBuyPrice() + " Gold").build(), (player, click) -> { + clearPage(); + buildPage(); + + // Check if generator is still null + // Prevents someone from buying a generator at the same time as another clan member does. + if (clan.getGenerator() != null) + { + _player.playSound(_player.getLocation(), Sound.NOTE_BASS, 1, 1); + UtilPlayer.message(_player, F.main("Clans", "Your clan already has a TNT Generator.")); + return; + } + + if (_donationManager.Get(player).getGold() >= ClansShopItem.TNT_GENERATOR.getBuyPrice()) + { + GoldManager.getInstance().deductGold(success -> { + UtilPlayer.message(player, F.main("Clans", "You purchased a " + F.elem("TNT Generator") + " for your Clan. You can now access it from the " + F.elem("PvP Shop") + ".")); + clan.inform(F.main("Clans", F.elem(player.getName()) + " purchased a " + F.elem("TNT Generator") + " for the Clan. You can now access it from the " + F.elem("PvP Shop") + "."), player.getName()); + + TntGenerator generator = new TntGenerator(player.getUniqueId().toString()); + clan.setGenerator(generator); + _plugin.getClanDataAccess().updateGenerator(clan, null); + }, player, ClansShopItem.TNT_GENERATOR.getBuyPrice()); + } + else + { + UtilPlayer.message(player, F.main("Clans", "You can not afford to purchase a " + F.elem("TNT Generator") + " for your Clan.")); + _player.playSound(player.getLocation(), Sound.NOTE_BASS, 1, 1); + } + + clearPage(); + buildPage(); + }); + } + else + { + TntGenerator generator = clan.getGenerator(); + + String nextTnt = "Never"; + + if (generator.getStock() < 3) + { + nextTnt = UtilTime.MakeStr((TntGeneratorManager.SECONDS_PER_TNT - generator.getTicks()) * 1000); + } + + addButton(13, new ItemBuilder(Material.BREWING_STAND_ITEM) + .setTitle(C.cGreen + "TNT Generator") + .setLore( + " ", + C.cWhite + "Purchased by " + F.elem(clan.getMembers().get(generator.getCreator()).getPlayerName()), + " ", + C.cWhite + "TNT Available: " + F.elem(Integer.valueOf(generator.getStock())), + " ", + C.cWhite + "Next TNT: " + F.elem(nextTnt)).build(), (player, click) -> { + clearPage(); + buildPage(); + }); + + if (generator.getStock() == 0) + { + return; + } + + int[] indices = UtilUI.getIndicesFor(generator.getStock(), 2); + + for (int index : indices) + { + addButton(index, new ItemBuilder(Material.TNT).setTitle(C.cGreen + "Retrieve TNT").setLore(" ", "Click to collect this TNT.").build(), (player, click) -> { + clearPage(); + buildPage(); + + if (generator.getStock() <= 0) + { + UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("TNT Generator") + " no longer contains this piece of TNT.")); + _player.playSound(player.getLocation(), Sound.NOTE_BASS, 1, 1); + return; + } + + if (UtilInv.HasSpace(player, Material.TNT, 1)) + { + UtilPlayer.message(player, F.main("Clans", "You have successfully collected TNT from your " + F.elem("TNT Generator") + ".")); + clan.inform(F.main("Clans", F.elem(player.getName()) + " has collected TNT from the Clan's " + F.elem("TNT Generator") + "."), player.getName()); + player.getInventory().addItem(new ItemStack(Material.TNT, 1)); + generator.setStock(generator.getStock() - 1); + _player.playSound(player.getLocation(), Sound.NOTE_PLING, 1, 1); + } + else + { + UtilPlayer.message(player, F.main("Clans", "You do not have enough sufficient space in your inventory to collect TNT.")); + _player.playSound(player.getLocation(), Sound.NOTE_BASS, 1, 1); + } + + clearPage(); + buildPage(); + + }); + } + } + } + +} diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenShop.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenShop.java new file mode 100644 index 000000000..4e54909a4 --- /dev/null +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/pvp/tnt/TNTGenShop.java @@ -0,0 +1,22 @@ +package mineplex.game.clans.shop.pvp.tnt; + +import org.bukkit.entity.Player; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.shop.ShopBase; +import mineplex.core.shop.page.ShopPageBase; +import mineplex.game.clans.clans.ClansManager; + +public class TNTGenShop extends ShopBase +{ + public TNTGenShop(ClansManager plugin, CoreClientManager clientManager, mineplex.core.donation.DonationManager donationManager) + { + super(plugin, clientManager, donationManager, "TNT Generator"); + } + + @Override + protected ShopPageBase> buildPagesFor(Player player) + { + return new TNTGenPage(getPlugin(), this, getClientManager(), getDonationManager(), player); + } +}