From 96e0625548d197635326f93398404374a4bbf4f3 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Fri, 29 Jul 2016 03:15:22 -0400 Subject: [PATCH 01/10] Fix mislabeling of shop item in user display --- .../mineplex/staffServer/customerSupport/CustomerSupport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java index afbaea2d9..d64184f6c 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java @@ -284,7 +284,7 @@ public class CustomerSupport extends MiniPlugin implements ResultSetCallable caller.sendMessage(C.cBlue + "Uncle Sam Hat: " + getLockedFreedomStr(playerName, "Uncle Sam Hat")); caller.sendMessage(C.cDGreen + C.Strike + "============================================="); caller.sendMessage(C.cBlue + "Clan Banner Usage: " + getLockedFreedomStr(playerName, "Clan Banner Usage")); - caller.sendMessage(C.cBlue + "Uncle Sam Morph: " + getLockedFreedomStr(playerName, "Clan Banner Editor")); + caller.sendMessage(C.cBlue + "Clan Banner Editor: " + getLockedFreedomStr(playerName, "Clan Banner Editor")); caller.sendMessage(C.cDGreen + C.Strike + "============================================="); _accountBonusLog.remove(client.getAccountId()); From ecb56bf450db516a6e6de96e8a48071a94fcdd02 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Fri, 29 Jul 2016 13:35:09 -0400 Subject: [PATCH 02/10] Fix players being able to use de-blink to teleport between worlds --- .../minecraft/game/classcombat/Skill/Assassin/Blink.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Blink.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Blink.java index 2a87b1c30..2da9df000 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Blink.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Blink.java @@ -170,6 +170,12 @@ public class Blink extends SkillActive public void Deblink(Player player, int level) { + Location target = _loc.remove(player); + if (!player.getWorld().equals(target.getWorld())) + { + UtilPlayer.message(player, F.main(GetClassType().name(), "You cannot use " + F.skill("De-Blink") + " between worlds!")); + return; + } UtilPlayer.message(player, F.main(GetClassType().name(), "You used " + F.skill("De-Blink") + ".")); //Smoke Trail @@ -177,8 +183,6 @@ public class Blink extends SkillActive double curRange = 0; - Location target = _loc.remove(player); - boolean done = false; while (!done) { From 9e2ba8c65327de1ff53acaaa7e0a0ced53b52c50 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 30 Jul 2016 09:36:38 -0400 Subject: [PATCH 03/10] Fix fissure applying to anvils --- .../minecraft/game/classcombat/Skill/Mage/FissureData.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/FissureData.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/FissureData.java index 8fd59a6d1..e61fd8892 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/FissureData.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/FissureData.java @@ -12,6 +12,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.minecraft.game.classcombat.Skill.Mage.events.FissureModifyBlockEvent; import org.bukkit.Effect; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; @@ -133,6 +134,10 @@ public class FissureData return false; if (block.getRelative(BlockFace.UP).getType().toString().contains("BANNER")) return false; + if (block.getType() == Material.ANVIL) + return false; + if (block.getRelative(BlockFace.UP).getType() == Material.ANVIL) + return false; Block up = block.getRelative(0, _height + 1, 0); From d1d366dcf85b64cba50ca1c7de46fa1813397fb4 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 30 Jul 2016 09:46:02 -0400 Subject: [PATCH 04/10] Add a cooldown to clans shops to reduce chance of edge-case negative gold balances --- .../src/mineplex/game/clans/shop/ShopItemButton.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java index 9ea38cf70..1737e68d3 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java @@ -15,6 +15,7 @@ import mineplex.core.common.util.InventoryUtil; import mineplex.core.common.util.UtilItem; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.recharge.Recharge; import mineplex.core.shop.item.IButton; import mineplex.core.shop.page.ShopPageBase; import mineplex.game.clans.clans.event.ClansPlayerBuyItemEvent; @@ -57,6 +58,10 @@ public class ShopItemButton> implements IButton @Override public void onClick(final Player player, ClickType clickType) { + if (!Recharge.Instance.use(player, "Attempt Buy Clans Shop Item", 1500, false, false)) + { + return; + } boolean shiftClick = (clickType == ClickType.SHIFT_LEFT || clickType == ClickType.SHIFT_RIGHT); if (clickType == ClickType.SHIFT_RIGHT || clickType == ClickType.RIGHT) From fe926338020f766d5b4429b3dc9401e979a6cc9e Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 30 Jul 2016 16:49:39 -0400 Subject: [PATCH 05/10] Add claim limit override for admin claiming --- .../src/mineplex/game/clans/clans/ClansAdmin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java index 1c11b514b..33962eb48 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java @@ -771,7 +771,7 @@ public class ClansAdmin if (clientClan.getClaims() >= clientClan.getClaimsMax()) { - UtilPlayer.message(caller, F.main("Clans Admin", "Your Clan cannot claim more Territory.")); + UtilPlayer.message(caller, F.main("Clans Admin", "You have claimed for that clan past their normal limit.")); return; } From 2d39dbfb587f237e6db98ab88865c20ecab31765 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 30 Jul 2016 17:34:03 -0400 Subject: [PATCH 06/10] Move clans admin text --- .../src/mineplex/game/clans/clans/ClansAdmin.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java index 33962eb48..3b8c45896 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansAdmin.java @@ -767,13 +767,7 @@ public class ClansAdmin ClanInfo clientClan = getMimic(caller, true); if (clientClan == null) - return; - - if (clientClan.getClaims() >= clientClan.getClaimsMax()) - { - UtilPlayer.message(caller, F.main("Clans Admin", "You have claimed for that clan past their normal limit.")); return; - } String chunk = UtilWorld.chunkToStr(caller.getLocation().getChunk()); ClanInfo ownerClan = Clans.getClanUtility().getOwner(caller.getLocation()); @@ -788,8 +782,12 @@ public class ClansAdmin //Task Clans.getClanDataAccess().claim(clientClan.getName(), chunk, caller.getName(), false); - + //Inform + if (clientClan.getClaims() >= clientClan.getClaimsMax()) + { + UtilPlayer.message(caller, F.main("Clans Admin", "You have claimed for that clan past their normal limit.")); + } UtilPlayer.message(caller, F.main("Clans Admin", "You claimed Territory " + F.elem(UtilWorld.chunkToStrClean(caller.getLocation().getChunk())) + ".")); clientClan.inform(caller.getName() + " claimed Territory " + F.elem(UtilWorld.chunkToStrClean(caller.getLocation().getChunk())) + ".", caller.getName()); } From d12d353c20ef2d9c7740902c95104c3717a3de1c Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 30 Jul 2016 17:36:03 -0400 Subject: [PATCH 07/10] Fix pronoun in message autoreply --- .../Mineplex.Core/src/mineplex/core/message/MessageManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java b/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java index cc1c8d686..daac3f231 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java @@ -218,7 +218,7 @@ public class MessageManager extends MiniClientPlugin if (GetClientManager().Get(to).GetRank() == Rank.DEVELOPER) { UtilPlayer.message(from, C.cPurple + to.getName() + " is often AFK or minimized, due to plugin development."); - UtilPlayer.message(from, C.cPurple + "Please be patient if she does not reply instantly."); + UtilPlayer.message(from, C.cPurple + "Please be patient if they do not reply instantly."); } // Log From cd237b8d3b2a58ad7044107fa625b9db54f40def Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 30 Jul 2016 17:42:57 -0400 Subject: [PATCH 08/10] Make players teleport to shops once they return to the nether --- .../src/mineplex/game/clans/clans/nether/BossNetherPortal.java | 1 - .../src/mineplex/game/clans/clans/nether/NetherManager.java | 2 +- .../src/mineplex/game/clans/clans/nether/NetherPortal.java | 1 - .../game/clans/clans/nether/command/ForceTeleportCommand.java | 1 - 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java index 63f6045c5..3c44bcb40 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java @@ -250,7 +250,6 @@ public class BossNetherPortal implements Listener { ClansManager.getInstance().getNetherManager().InNether.put((Player)event.getEntity(), Expire); Location from = event.getEntity().getLocation(); - ClansManager.getInstance().getNetherManager().OverworldOrigins.put((Player)event.getEntity(), from); event.getEntity().teleport(ClansManager.getInstance().getNetherManager().getNetherWorld().getSpawnLocation()); ClansManager.getInstance().ClanTips.displayTip(TipType.ENTER_NETHER, (Player)event.getEntity()); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java index 0c5c39fa7..0fb01e99e 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java @@ -155,7 +155,7 @@ public class NetherManager extends MiniPlugin */ public Location getReturnLocation(Player player) { - return OverworldOrigins.getOrDefault(player, Spawn.getNorthSpawn()); + return OverworldOrigins.getOrDefault(player, Spawn.getWestTown()); } /** diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java index ff220fc7a..828bc2274 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java @@ -261,7 +261,6 @@ public class NetherPortal implements Listener { ClansManager.getInstance().getNetherManager().InNether.put((Player)event.getEntity(), Expire); Location from = event.getEntity().getLocation(); - ClansManager.getInstance().getNetherManager().OverworldOrigins.put((Player)event.getEntity(), from); event.getEntity().teleport(ClansManager.getInstance().getNetherManager().getNetherWorld().getSpawnLocation()); ClansManager.getInstance().ClanTips.displayTip(TipType.ENTER_NETHER, (Player)event.getEntity()); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java index 18ce12cc1..e798412a0 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java @@ -54,7 +54,6 @@ public class ForceTeleportCommand extends CommandBase if (natural) { Plugin.InNether.put(caller, System.currentTimeMillis() + UtilTime.convert(10, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); - Plugin.OverworldOrigins.put(caller, caller.getLocation()); caller.teleport(Plugin.getNetherWorld().getSpawnLocation()); ClansManager.getInstance().ClanTips.displayTip(TipType.ENTER_NETHER, caller); } From 4fdbb1fc9dd8cccd130521b017be99b79cb8f4d9 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Mon, 1 Aug 2016 14:48:44 -0400 Subject: [PATCH 09/10] Fix assorted bugs --- .../game/clans/clans/ClansManager.java | 3 + .../clans/clans/banners/BannerManager.java | 127 +++++++++++++----- .../clans/invsee/ui/InvseeInventory.java | 13 +- .../clans/clans/nether/BossNetherPortal.java | 25 ++-- .../clans/clans/nether/NetherManager.java | 59 ++++---- .../game/clans/clans/nether/NetherPortal.java | 27 ++-- .../nether/command/ForceTeleportCommand.java | 4 + .../game/clans/economy/GoldManager.java | 27 +++- 8 files changed, 190 insertions(+), 95 deletions(-) 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 03a19b238..7736952a9 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 @@ -1192,6 +1192,9 @@ public class ClansManager extends MiniClientPluginimplements IRelati _worldEvent.onDisable(); _goldManager.onDisable(); _playTracker.onDisable(); + _bannerManager.onDisable(); + _amplifierManager.onDisable(); + _netherManager.onDisable(); } @EventHandler(priority = EventPriority.HIGHEST) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java index ec022d057..d613f2939 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java @@ -2,21 +2,6 @@ package mineplex.game.clans.clans.banners; import java.util.HashMap; -import mineplex.core.MiniPlugin; -import mineplex.core.common.Rank; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilTime.TimeUnit; -import mineplex.core.recharge.Recharge; -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.banners.command.BannerCommand; -import mineplex.game.clans.core.repository.ClanTerritory; - import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Banner; @@ -25,18 +10,36 @@ import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPhysicsEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.event.inventory.PrepareItemCraftEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BannerMeta; import org.bukkit.plugin.java.JavaPlugin; +import mineplex.core.MiniPlugin; +import mineplex.core.common.Rank; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.recharge.Recharge; +import mineplex.game.clans.clans.ClanInfo; +import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.clans.banners.command.BannerCommand; +import mineplex.game.clans.core.repository.ClanTerritory; +import net.minecraft.server.v1_8_R3.MinecraftServer; + /** * Manager class for cosmetic clans banners */ public class BannerManager extends MiniPlugin { - private static final long BANNER_PLACE_DURATION = UtilTime.convert(30, TimeUnit.MINUTES, TimeUnit.MILLISECONDS); public final HashMap LoadedBanners = new HashMap<>(); - private final HashMap _placedBanners = new HashMap<>(); + private final BlockFace[] _radial = { BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST, BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST }; private BannerRepository _repo; public BannerManager(JavaPlugin plugin) @@ -48,18 +51,6 @@ public class BannerManager extends MiniPlugin addCommand(new BannerCommand(this)); } - /** - * Resets all placed banners to air - */ - @Override - public void disable() - { - for (Block changed : _placedBanners.keySet()) - { - changed.setType(Material.AIR); - } - } - /** * Checks what type of banner unlock a player has * @param player The player to check @@ -149,8 +140,17 @@ public class BannerManager extends MiniPlugin Banner state = (Banner) block.getState(); state.setBaseColor(banner.getBaseColor()); state.setPatterns(((BannerMeta)banner.getBanner().getItemMeta()).getPatterns()); + org.bukkit.material.Banner data = (org.bukkit.material.Banner) state.getData(); + try + { + data.setFacingDirection(_radial[Math.round(placing.getLocation().getYaw() / 45f) & 0x7]); + } + catch (Exception e) + { + e.printStackTrace(); + } + state.setData(data); state.update(); - _placedBanners.put(block, System.currentTimeMillis()); } else { @@ -163,26 +163,79 @@ public class BannerManager extends MiniPlugin @EventHandler public void onBreak(BlockBreakEvent event) { - if (_placedBanners.containsKey(event.getBlock())) + if (event.getBlock().getType() == Material.STANDING_BANNER || event.getBlock().getType() == Material.WALL_BANNER) { - _placedBanners.remove(event.getBlock()); event.setCancelled(true); event.getBlock().setType(Material.AIR); } } @EventHandler - public void onUpdate(UpdateEvent event) + public void onDropBanner(BlockPhysicsEvent event) { - if (event.getType() == UpdateType.FAST) + if (event.getBlock().getType() == Material.STANDING_BANNER || event.getBlock().getType() == Material.WALL_BANNER) { - for (Block reset : _placedBanners.keySet()) + event.setCancelled(true); + } + } + + @EventHandler + public void onCraftBanner(PrepareItemCraftEvent event) + { + if (event.getInventory().getResult() == null || event.getInventory().getResult().getType() != Material.BANNER) + { + return; + } + + event.getInventory().setResult(null); + } + + @EventHandler + public void onCraftBanner(CraftItemEvent event) + { + if (event.getInventory().getResult() == null || event.getInventory().getResult().getType() != Material.BANNER) + { + return; + } + + event.setCancelled(true); + } + + @EventHandler + public void onJoinWithBanner(PlayerJoinEvent event) + { + if (MinecraftServer.getServer().recentTps[0] < 19) + { + return; + } + runSyncLater(() -> + { + for (ItemStack item : event.getPlayer().getInventory().getContents()) { - if (UtilTime.elapsed(_placedBanners.get(reset), BANNER_PLACE_DURATION)) + if (item != null && item.getType() == Material.BANNER) { - reset.setType(Material.AIR); + event.getPlayer().getInventory().remove(item); } } + }, 20); + } + + @EventHandler + public void onPickupBanner(PlayerPickupItemEvent event) + { + if (event.getItem().getItemStack().getType() == Material.BANNER) + { + event.setCancelled(true); + event.getItem().remove(); + } + } + + @EventHandler + public void onPickupBanner(PlayerDropItemEvent event) + { + if (event.getItemDrop().getItemStack().getType() == Material.BANNER) + { + event.getItemDrop().remove(); } } } \ No newline at end of file diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/invsee/ui/InvseeInventory.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/invsee/ui/InvseeInventory.java index 69283e71a..61fcf7cd7 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/invsee/ui/InvseeInventory.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/invsee/ui/InvseeInventory.java @@ -110,17 +110,20 @@ public class InvseeInventory implements Listener else { // This should always work - _targetPlayer = Bukkit.getOfflinePlayer(_uuid); - updateInventory(); + if (_uuid.equals(event.getPlayer().getUniqueId())) + { + _targetPlayer = Bukkit.getOfflinePlayer(_uuid); + updateInventory(); + } } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void on(InventoryOpenEvent event) { - if (event.getPlayer().getUniqueId().equals(_targetPlayer.getUniqueId()) && !_canOpenInventory) + if (event.getPlayer().getUniqueId().equals(_uuid) && !_canOpenInventory) { - event.setCancelled(true); + Bukkit.getScheduler().runTaskLater(UtilServer.getPlugin(), () -> {event.getPlayer().closeInventory();}, 20); } } @@ -295,7 +298,7 @@ public class InvseeInventory implements Listener } } - /* + /** * Update the player inventory and invsee inventory. * * @param targetClick If true, then it means the player being invseen has modified their inventory. Otherwise, it's the admin who has modified something diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java index 3c44bcb40..815897c4e 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/BossNetherPortal.java @@ -102,16 +102,6 @@ public class BossNetherPortal implements Listener { _portalFacing = (byte)0; } - - _closeWarnings.add(UtilTime.convert(5, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); - _closeWarnings.add(UtilTime.convert(1, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); - _closeWarnings.add(30000L); - _closeWarnings.add(10000L); - _closeWarnings.add(5000L); - _closeWarnings.add(4000L); - _closeWarnings.add(3000L); - _closeWarnings.add(2000L); - _closeWarnings.add(1000L); } private boolean isInPortal(Block block) @@ -177,6 +167,15 @@ public class BossNetherPortal implements Listener block.setType(Material.PORTAL); block.setData(_portalFacing); } + _closeWarnings.add(UtilTime.convert(5, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); + _closeWarnings.add(UtilTime.convert(1, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); + _closeWarnings.add(30000L); + _closeWarnings.add(10000L); + _closeWarnings.add(5000L); + _closeWarnings.add(4000L); + _closeWarnings.add(3000L); + _closeWarnings.add(2000L); + _closeWarnings.add(1000L); } } @@ -196,6 +195,7 @@ public class BossNetherPortal implements Listener block.setType(Material.AIR); } HandlerList.unregisterAll(this); + _closeWarnings.clear(); } @EventHandler(priority = EventPriority.HIGHEST) @@ -245,11 +245,14 @@ public class BossNetherPortal implements Listener ClansManager.getInstance().getNetherManager().OverworldOrigins.remove((Player)event.getEntity()); ((Player)event.getEntity()).removePotionEffect(PotionEffectType.NIGHT_VISION); UtilPlayer.message(event.getEntity(), F.main(ClansManager.getInstance().getNetherManager().getName(), "You have escaped " + F.clansNether("The Nether") + "!")); + ClansManager.getInstance().runSyncLater(() -> + { + ClansManager.getInstance().getCombatManager().Get((Player)event.getEntity()).SetLastCombatEngaged(System.currentTimeMillis()); + }, 20); } else { ClansManager.getInstance().getNetherManager().InNether.put((Player)event.getEntity(), Expire); - Location from = event.getEntity().getLocation(); event.getEntity().teleport(ClansManager.getInstance().getNetherManager().getNetherWorld().getSpawnLocation()); ClansManager.getInstance().ClanTips.displayTip(TipType.ENTER_NETHER, (Player)event.getEntity()); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java index 0fb01e99e..9f139f30e 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherManager.java @@ -4,6 +4,32 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.WorldBorder; +import org.bukkit.WorldCreator; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.Action; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.EntityPortalEvent; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerPortalEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.google.common.collect.Lists; + import mineplex.core.MiniPlugin; import mineplex.core.common.Rank; import mineplex.core.common.generator.VoidGenerator; @@ -31,32 +57,6 @@ import mineplex.minecraft.game.core.boss.broodmother.SpiderCreature; import mineplex.minecraft.game.core.boss.ironwizard.GolemCreature; import mineplex.minecraft.game.core.boss.skeletonking.SkeletonCreature; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.WorldBorder; -import org.bukkit.WorldCreator; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.Action; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.entity.EntityPortalEvent; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.player.PlayerDropItemEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerPortalEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; - -import com.google.common.collect.Lists; - /** * Manager for all nether features */ @@ -155,7 +155,12 @@ public class NetherManager extends MiniPlugin */ public Location getReturnLocation(Player player) { - return OverworldOrigins.getOrDefault(player, Spawn.getWestTown()); + Location defaultLoc = Spawn.getWestTown(); + if (UtilMath.random.nextDouble() <= .5) + { + defaultLoc = Spawn.getEastTown(); + } + return OverworldOrigins.getOrDefault(player, defaultLoc); } /** diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java index 828bc2274..2e3ea55d4 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/NetherPortal.java @@ -104,16 +104,6 @@ public class NetherPortal implements Listener { _portalFacing = (byte)0; } - - _closeWarnings.add(UtilTime.convert(5, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); - _closeWarnings.add(UtilTime.convert(1, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); - _closeWarnings.add(30000L); - _closeWarnings.add(10000L); - _closeWarnings.add(5000L); - _closeWarnings.add(4000L); - _closeWarnings.add(3000L); - _closeWarnings.add(2000L); - _closeWarnings.add(1000L); } private boolean isInPortal(Block block) @@ -188,6 +178,15 @@ public class NetherPortal implements Listener block.setType(Material.PORTAL); block.setData(_portalFacing); } + _closeWarnings.add(UtilTime.convert(5, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); + _closeWarnings.add(UtilTime.convert(1, TimeUnit.MINUTES, TimeUnit.MILLISECONDS)); + _closeWarnings.add(30000L); + _closeWarnings.add(10000L); + _closeWarnings.add(5000L); + _closeWarnings.add(4000L); + _closeWarnings.add(3000L); + _closeWarnings.add(2000L); + _closeWarnings.add(1000L); } } @@ -207,6 +206,7 @@ public class NetherPortal implements Listener block.setType(Material.AIR); } HandlerList.unregisterAll(this); + _closeWarnings.clear(); } @EventHandler(priority = EventPriority.HIGHEST) @@ -256,11 +256,14 @@ public class NetherPortal implements Listener ClansManager.getInstance().getNetherManager().OverworldOrigins.remove((Player)event.getEntity()); ((Player)event.getEntity()).removePotionEffect(PotionEffectType.NIGHT_VISION); UtilPlayer.message(event.getEntity(), F.main(ClansManager.getInstance().getNetherManager().getName(), "You have escaped " + F.clansNether("The Nether") + "!")); + ClansManager.getInstance().runSyncLater(() -> + { + ClansManager.getInstance().getCombatManager().Get((Player)event.getEntity()).SetLastCombatEngaged(System.currentTimeMillis()); + }, 20); } else { ClansManager.getInstance().getNetherManager().InNether.put((Player)event.getEntity(), Expire); - Location from = event.getEntity().getLocation(); event.getEntity().teleport(ClansManager.getInstance().getNetherManager().getNetherWorld().getSpawnLocation()); ClansManager.getInstance().ClanTips.displayTip(TipType.ENTER_NETHER, (Player)event.getEntity()); } @@ -291,7 +294,7 @@ public class NetherPortal implements Listener Long warning = -1L; for (Long test : _closeWarnings) { - if ((Expire - System.currentTimeMillis()) < warning) + if ((Expire - System.currentTimeMillis()) < test) { warning = test; break; diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java index e798412a0..0bc4ac0be 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/nether/command/ForceTeleportCommand.java @@ -43,6 +43,10 @@ public class ForceTeleportCommand extends CommandBase Plugin.OverworldOrigins.remove(caller); caller.removePotionEffect(PotionEffectType.NIGHT_VISION); UtilPlayer.message(caller, F.main(ClansManager.getInstance().getNetherManager().getName(), "You have escaped " + F.clansNether("The Nether") + "!")); + ClansManager.getInstance().runSyncLater(() -> + { + ClansManager.getInstance().getCombatManager().Get(caller).SetLastCombatEngaged(System.currentTimeMillis()); + }, 20); } else { 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 fdd40a847..0979e7148 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 @@ -398,20 +398,41 @@ public class GoldManager extends MiniDbClientPlugin @Override - public String getQuery(int accountId, String uuid, String name) { + public String getQuery(int accountId, String uuid, String name) + { return "SELECT gold FROM clansGold WHERE id = '" + accountId + "' AND serverId=" + _serverId + ";"; } @Override - public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException { + public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException + { if (resultSet.next()) { Get(playerName).setBalance(resultSet.getInt(1)); + + if (resultSet.getInt(1) < 0) + { + setGold(new Callback() + { + public void run(Boolean success) + { + if (success) + { + System.out.println("Fixed negative gold balance for " + playerName + "!"); + } + else + { + System.out.println("Failed to fix negative gold balance for " + playerName + "!"); + } + } + }, "", playerName, accountId, 0, true); + } } } @Override - protected GoldData addPlayer(String player) { + protected GoldData addPlayer(String player) + { return new GoldData(); } } From fb3cfecc797332e8d6298af5f5f21cdb7ed65187 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Tue, 2 Aug 2016 20:44:09 -0400 Subject: [PATCH 10/10] Move recharge handler --- .../mineplex/game/clans/clans/banners/BannerManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java index d613f2939..0acc79e5d 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/banners/BannerManager.java @@ -118,10 +118,6 @@ public class BannerManager extends MiniPlugin */ public void placeBanner(Player placing, ClanBanner banner) { - if (!Recharge.Instance.use(placing, "Place Banner", 30000, true, false)) - { - return; - } Block block = placing.getLocation().getBlock(); BlockPlaceEvent event = new BlockPlaceEvent(block, block.getState(), block, placing.getItemInHand(), placing, true); Bukkit.getPluginManager().callEvent(event); @@ -136,6 +132,10 @@ public class BannerManager extends MiniPlugin ClansManager.getInstance().getBlockRestore().restore(block); if (block.getType() == Material.AIR && UtilBlock.fullSolid(block.getRelative(BlockFace.DOWN))) { + if (!Recharge.Instance.use(placing, "Place Banner", 30000, true, false)) + { + return; + } block.setType(Material.STANDING_BANNER); Banner state = (Banner) block.getState(); state.setBaseColor(banner.getBaseColor());