diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java index be0c8a6bb..421cd9015 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java @@ -1,5 +1,21 @@ package mineplex.core.cosmetic; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; + import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.boosters.BoosterManager; @@ -10,6 +26,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.cosmetic.ui.CosmeticShop; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.morph.MorphDinnerbone; import mineplex.core.gadget.gadgets.outfit.OutfitTeam; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; @@ -18,15 +35,6 @@ import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.mount.MountManager; import mineplex.core.pet.PetManager; import mineplex.core.treasure.TreasureManager; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerDropItemEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.plugin.java.JavaPlugin; public class CosmeticManager extends MiniPlugin { @@ -138,6 +146,30 @@ public class CosmeticManager extends MiniPlugin } } + // Allows player to open cosmetic shop while carrying armor stand + // Also calls PlayerInteractEvent to open other menus + @EventHandler + public void openShop(PlayerInteractAtEntityEvent event) + { + if (!_showInterface) + return; + + Player player = event.getPlayer(); + + if (!(_gadgetManager.getActive(player, GadgetType.MORPH) instanceof MorphDinnerbone)) + return; + + if (!event.getRightClicked().getType().equals(EntityType.ARMOR_STAND)) + return; + + Block block = event.getRightClicked().getLocation().getBlock(); + Action action = Action.RIGHT_CLICK_AIR; + BlockFace blockFace = BlockFace.SOUTH; + ItemStack item = player.getItemInHand(); + PlayerInteractEvent playerInteractEvent = new PlayerInteractEvent(player, action, item, block, blockFace); + Bukkit.getPluginManager().callEvent(playerInteractEvent); + } + public GadgetManager getGadgetManager() { return _gadgetManager; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java index 218390e2c..66cb24998 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java @@ -50,11 +50,11 @@ public class CostumePage extends GadgetPage slot = offset + 1 + 18; //1 buffer to left, 18 = 2 lines down - if (outfitGadget.getSlot() == OutfitGadget.ArmorSlot.Chest) + if (outfitGadget.getSlot() == OutfitGadget.ArmorSlot.CHEST) slot += 9; - else if (outfitGadget.getSlot() == OutfitGadget.ArmorSlot.Legs) + else if (outfitGadget.getSlot() == OutfitGadget.ArmorSlot.LEGS) slot += 18; - else if (outfitGadget.getSlot() == OutfitGadget.ArmorSlot.Boots) + else if (outfitGadget.getSlot() == OutfitGadget.ArmorSlot.BOOTS) slot += 27; addGadget(gadget, slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 566443c22..45da3c37c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -8,22 +8,17 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; -import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BannerMeta; import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.LeatherArmorMeta; import mineplex.core.account.CoreClientManager; import mineplex.core.common.currency.GlobalCurrency; -import mineplex.core.common.skin.SkinData; import mineplex.core.common.util.C; -import mineplex.core.common.util.F; import mineplex.core.common.util.LineFormat; -import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilText; import mineplex.core.common.util.banner.CountryFlag; @@ -34,10 +29,6 @@ import mineplex.core.cosmetic.ui.button.activate.ActivateGadgetButton; import mineplex.core.cosmetic.ui.button.deactivate.DeactivateGadgetButton; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.event.GadgetChangeEvent; -import mineplex.core.gadget.gadgets.death.christmas.DeathPresentDanger; -import mineplex.core.gadget.gadgets.morph.MorphWitch; -import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuit; -import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitHelmet; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.HatGadget; @@ -317,7 +308,7 @@ public class GadgetPage extends ShopPageBase if (gadget.ownsGadget(getPlayer())) { ItemStack gadgetItemStack; - if (gadget instanceof MorphWitch) + /*if (gadget instanceof MorphWitch) { gadgetItemStack = ((MorphWitch) gadget).getWitchItem(); } @@ -335,6 +326,14 @@ public class GadgetPage extends ShopPageBase LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) gadgetItemStack.getItemMeta(); leatherArmorMeta.setColor(Color.fromRGB(129, 212, 250)); gadgetItemStack.setItemMeta(leatherArmorMeta); + }*/ + if (gadget.hasDisplayItem()) + { + gadgetItemStack = gadget.getDisplayItem(); + } + else + { + gadgetItemStack = new ItemStack(gadget.getDisplayMaterial(), 1, gadget.getDisplayData()); } ItemMeta meta = gadgetItemStack.getItemMeta(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java index 643652f1c..89c28093f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java @@ -528,6 +528,31 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler Bukkit.getScheduler().runTaskLater(UtilServer.getPlugin(), r, pDisguise.getShowInTabListDelay()); } } + else + { + if (!pDisguise.replaceOriginalName()) + { + Runnable r = () -> + { + PacketPlayOutPlayerInfo playerInfoPacketRemove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER); + PacketPlayOutPlayerInfo.PlayerInfoData dataRemove = playerInfoPacketRemove.new PlayerInfoData(pDisguise.getProfile(), 0, WorldSettings.EnumGamemode.SURVIVAL, null); + playerInfoPacketRemove.b.add(dataRemove); + handlePacket(playerInfoPacketRemove, packetVerifier); + PacketPlayOutPlayerInfo playerInfoPacketAdd = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER); + PacketPlayOutPlayerInfo.PlayerInfoData dataAdd = playerInfoPacketRemove.new PlayerInfoData(pDisguise.getOriginalProfile(), 0, WorldSettings.EnumGamemode.SURVIVAL, null); + playerInfoPacketAdd.b.add(dataAdd); + handlePacket(playerInfoPacketAdd, packetVerifier); + }; + if (pDisguise.replaceOriginalNameDelay() == 0) + { + r.run(); + } + else + { + Bukkit.getScheduler().runTaskLater(UtilServer.getPlugin(), r, pDisguise.replaceOriginalNameDelay()); + } + } + } } else { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java index abfced0a4..9eef563d7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java @@ -6,14 +6,30 @@ import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; -import com.mojang.authlib.GameProfile; -import mineplex.core.common.skin.SkinData; -import mineplex.core.common.util.UtilMath; -import mineplex.core.disguise.playerdisguise.PlayerDisguiseManager; -import mineplex.core.thread.ThreadPool; -import mineplex.core.utils.UtilGameProfile; -import net.minecraft.server.v1_8_R3.*; +import net.minecraft.server.v1_8_R3.AttributeInstance; +import net.minecraft.server.v1_8_R3.AttributeMapServer; +import net.minecraft.server.v1_8_R3.EntityHuman; +import net.minecraft.server.v1_8_R3.EntityPlayer; +import net.minecraft.server.v1_8_R3.IInventory; +import net.minecraft.server.v1_8_R3.ITileEntityContainer; +import net.minecraft.server.v1_8_R3.MathHelper; +import net.minecraft.server.v1_8_R3.MobEffect; +import net.minecraft.server.v1_8_R3.Packet; +import net.minecraft.server.v1_8_R3.PacketPlayOutAbilities; +import net.minecraft.server.v1_8_R3.PacketPlayOutAnimation; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityEffect; +import net.minecraft.server.v1_8_R3.PacketPlayOutExperience; +import net.minecraft.server.v1_8_R3.PacketPlayOutHeldItemSlot; +import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn; +import net.minecraft.server.v1_8_R3.PacketPlayOutOpenWindow; +import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo; import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo.EnumPlayerInfoAction; +import net.minecraft.server.v1_8_R3.PacketPlayOutPosition; +import net.minecraft.server.v1_8_R3.PacketPlayOutRespawn; +import net.minecraft.server.v1_8_R3.PacketPlayOutUpdateAttributes; +import net.minecraft.server.v1_8_R3.PacketPlayOutUpdateHealth; +import net.minecraft.server.v1_8_R3.WorldSettings; + import org.bukkit.block.BlockFace; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; import org.bukkit.entity.Entity; @@ -21,6 +37,14 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import com.mojang.authlib.GameProfile; + +import mineplex.core.common.skin.SkinData; +import mineplex.core.common.util.UtilMath; +import mineplex.core.disguise.playerdisguise.PlayerDisguiseManager; +import mineplex.core.thread.ThreadPool; +import mineplex.core.utils.UtilGameProfile; + public class DisguisePlayer extends DisguiseHuman { private String _requestedUsername; @@ -36,7 +60,9 @@ public class DisguisePlayer extends DisguiseHuman private boolean _sendSkinToSelf = true; private boolean _showInTabList = false; + private boolean _replaceOriginalName = true; private int _showInTabListDelay = 30; + private int _replaceOriginalNameDelay; private DisguisePlayer(Entity entity) { @@ -64,7 +90,7 @@ public class DisguisePlayer extends DisguiseHuman /** * @param username The username to disguise this entity as - * @param skin The username of the player whose skin will be used + * @param skin The username of the player whose skin will be used */ public DisguisePlayer(Entity entity, String username, String skin) { @@ -86,7 +112,6 @@ public class DisguisePlayer extends DisguiseHuman * If this DisguisePlayer has been initialized with a requested username and requested skin, it must be initialized * * @param onComplete The Runnable which will be run once initialized. Can be null. It will be run on a separate thread if initialization took place, and the current thread if not - * * @returns A Future which, upon completion, implies the task is done */ public Future initialize(Runnable onComplete) @@ -435,6 +460,22 @@ public class DisguisePlayer extends DisguiseHuman return selfProfile; } + public boolean replaceOriginalName() + { + return this._replaceOriginalName; + } + + public int replaceOriginalNameDelay() + { + return this._replaceOriginalNameDelay; + } + + public void setReplaceOriginalName(boolean b, int delay) + { + this._replaceOriginalName = b; + this._replaceOriginalNameDelay = delay; + } + private UUID getOriginalUUID() { if (this._originalProfile.getProperties().containsKey(PlayerDisguiseManager.ORIGINAL_UUID_KEY)) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 4151ebe9a..bb0c257d6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -116,6 +116,7 @@ import mineplex.core.gadget.gadgets.morph.MorphChicken; import mineplex.core.gadget.gadgets.morph.MorphChristmasKing; import mineplex.core.gadget.gadgets.morph.MorphCow; import mineplex.core.gadget.gadgets.morph.MorphCreeper; +import mineplex.core.gadget.gadgets.morph.MorphDinnerbone; import mineplex.core.gadget.gadgets.morph.MorphEnderman; import mineplex.core.gadget.gadgets.morph.MorphGrimReaper; import mineplex.core.gadget.gadgets.morph.MorphMetalMan; @@ -362,10 +363,10 @@ public class GadgetManager extends MiniPlugin addGadget(new OutfitFreezeSuitLeggings(this)); addGadget(new OutfitFreezeSuitBoots(this)); - addGadget(new OutfitTeam(this, "Team Helmet", -1, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0)); - addGadget(new OutfitTeam(this, "Team Shirt", -1, ArmorSlot.Chest, Material.LEATHER_CHESTPLATE, (byte)0)); - addGadget(new OutfitTeam(this, "Team Pants", -1, ArmorSlot.Legs, Material.LEATHER_LEGGINGS, (byte)0)); - addGadget(new OutfitTeam(this, "Team Boots", -1, ArmorSlot.Boots, Material.LEATHER_BOOTS, (byte)0)); + addGadget(new OutfitTeam(this, "Team Helmet", -1, ArmorSlot.HELMET, Material.LEATHER_HELMET, (byte)0)); + addGadget(new OutfitTeam(this, "Team Shirt", -1, ArmorSlot.CHEST, Material.LEATHER_CHESTPLATE, (byte)0)); + addGadget(new OutfitTeam(this, "Team Pants", -1, ArmorSlot.LEGS, Material.LEATHER_LEGGINGS, (byte)0)); + addGadget(new OutfitTeam(this, "Team Boots", -1, ArmorSlot.BOOTS, Material.LEATHER_BOOTS, (byte)0)); // Morphs addGadget(new MorphVillager(this)); @@ -393,6 +394,7 @@ public class GadgetManager extends MiniPlugin // Not in this update //addGadget(new MorphStray(this)); addGadget(new MorphSanta(this)); + addGadget(new MorphDinnerbone(this)); // Particles addGadget(new ParticleFoot(this)); @@ -1110,6 +1112,17 @@ public class GadgetManager extends MiniPlugin event.setCancelled(true); player.sendMessage(F.main("Cosmetics", "You cannot enable particles while vanished!")); } + if (event.getGadget().getGadgetType() == GadgetType.MORPH) + { + if (event.getGadget() instanceof MorphDinnerbone) + { + if (_mountManager.getActive(player) != null) + { + event.setCancelled(true); + UtilPlayer.message(player, F.main("Cosmetics", "You cannot morph into " + event.getGadget().getName() + " with an active mount!")); + } + } + } } @EventHandler @@ -1220,15 +1233,25 @@ public class GadgetManager extends MiniPlugin if (!SwimManager.isSwimming(uuid)) { SwimManager.addPlayer(uuid); - Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), true)); + SwimManager.removePlayerLava(uuid); + Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), true, false)); + } + } + else if (material == Material.LAVA || material == Material.STATIONARY_LAVA) + { + if (!SwimManager.isInLava(uuid)) + { + SwimManager.addPlayerLava(uuid); + SwimManager.removePlayer(uuid); + Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), true, false)); } } else { - if (SwimManager.isSwimming(uuid)) + if (SwimManager.isSwimming(uuid) || SwimManager.isInLava(uuid)) { - SwimManager.removePlayer(uuid); - Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), false)); + SwimManager.removeLavaAndWater(uuid); + Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), false, false)); } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/ItemGadgetUseEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/ItemGadgetUseEvent.java index a4d9b13c0..3d4dc5c9f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/ItemGadgetUseEvent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/ItemGadgetUseEvent.java @@ -1,18 +1,21 @@ package mineplex.core.gadget.event; -import mineplex.core.gadget.types.ItemGadget; - import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class ItemGadgetUseEvent extends Event +import mineplex.core.gadget.types.ItemGadget; + +public class ItemGadgetUseEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); private Player _player; private ItemGadget _gadget; private int _count; + private boolean _cancelled; + private String _cancelledMessage = ""; public ItemGadgetUseEvent(Player player, ItemGadget gadget, int count) { @@ -45,4 +48,26 @@ public class ItemGadgetUseEvent extends Event { return _player; } + + @Override + public boolean isCancelled() + { + return _cancelled; + } + + @Override + public void setCancelled(boolean cancelled) + { + _cancelled = cancelled; + } + + public String getCancelledMessage() + { + return _cancelledMessage; + } + + public void setCancelledMessage(String cancelledMessage) + { + _cancelledMessage = cancelledMessage; + } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java index 2d5c5f00b..49803ac80 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java @@ -10,9 +10,9 @@ public class PlayerToggleSwimEvent extends Event private static final HandlerList handlers = new HandlerList(); private Player _player; - private boolean _swimming; + private boolean _swimming, _lava; - public PlayerToggleSwimEvent(Player player, boolean swimming) + public PlayerToggleSwimEvent(Player player, boolean swimming, boolean lava) { _player = player; _swimming = swimming; @@ -28,6 +28,11 @@ public class PlayerToggleSwimEvent extends Event return _swimming; } + public boolean isInLava() + { + return _lava; + } + public HandlerList getHandlers() { return handlers; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/freedom/ArrowTrailFreedom.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/freedom/ArrowTrailFreedom.java index cdc26c768..faeeecf75 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/freedom/ArrowTrailFreedom.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/freedom/ArrowTrailFreedom.java @@ -1,18 +1,20 @@ package mineplex.core.gadget.gadgets.arrowtrail.freedom; -import mineplex.core.common.util.LineFormat; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilText; -import mineplex.core.common.util.particles.ColoredParticle; -import mineplex.core.common.util.particles.DustSpellColor; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.particleeffects.BabyFireworkEffect; -import mineplex.core.gadget.types.ArrowEffectGadget; import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.entity.Arrow; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.banner.CountryFlag; +import mineplex.core.common.util.particles.ColoredParticle; +import mineplex.core.common.util.particles.DustSpellColor; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ArrowEffectGadget; +import mineplex.core.particleeffects.BabyFireworkEffect; + public class ArrowTrailFreedom extends ArrowEffectGadget { @@ -25,6 +27,7 @@ public class ArrowTrailFreedom extends ArrowEffectGadget ChatColor.RED, ChatColor.WHITE, ChatColor.BLUE), LineFormat.LORE), -8, Material.WOOL, (byte) 0); + setDisplayItem(CountryFlag.USA.getBanner()); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/freedom/DeathFreedom.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/freedom/DeathFreedom.java index bb2f1e1fb..24d43eb0b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/freedom/DeathFreedom.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/freedom/DeathFreedom.java @@ -1,17 +1,18 @@ package mineplex.core.gadget.gadgets.death.freedom; -import mineplex.core.blood.BloodEvent; -import mineplex.core.common.util.C; -import mineplex.core.common.util.LineFormat; -import mineplex.core.common.util.UtilFirework; -import mineplex.core.common.util.UtilText; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.types.DeathEffectGadget; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; +import mineplex.core.blood.BloodEvent; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.banner.CountryFlag; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.DeathEffectGadget; + public class DeathFreedom extends DeathEffectGadget { @@ -20,6 +21,7 @@ public class DeathFreedom extends DeathEffectGadget super(manager, "Price of Freedom", UtilText.splitLineToArray(UtilText.colorWords("Freedom isn't always free, Soldier.", ChatColor.RED, ChatColor.WHITE, ChatColor.BLUE), LineFormat.LORE), -8, Material.WOOL, (byte) 0); + setDisplayItem(CountryFlag.USA.getBanner()); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/freedom/DoubleJumpFreedom.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/freedom/DoubleJumpFreedom.java index 8caeb35e3..7f887e345 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/freedom/DoubleJumpFreedom.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/freedom/DoubleJumpFreedom.java @@ -1,13 +1,15 @@ package mineplex.core.gadget.gadgets.doublejump.freedom; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; + import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.banner.CountryFlag; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.DoubleJumpEffectGadget; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; public class DoubleJumpFreedom extends DoubleJumpEffectGadget { @@ -17,13 +19,12 @@ public class DoubleJumpFreedom extends DoubleJumpEffectGadget super(manager, "Leap of Freedom", UtilText.splitLineToArray(UtilText.colorWords("FREEEEEEEEEEEDOM!", ChatColor.RED, ChatColor.WHITE, ChatColor.BLUE), LineFormat.LORE), -8, Material.WOOL, (byte) 14); + setDisplayItem(CountryFlag.USA.getBanner()); } @Override public void doEffect(Player player) { - /*FreedomFireworkEffect freedomFireworkEffect = new FreedomFireworkEffect(player, Manager.getPlugin(), 3); - freedomFireworkEffect.start();*/ UtilFirework.playFreedomFirework(player.getLocation()); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java new file mode 100644 index 000000000..510136908 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -0,0 +1,320 @@ +package mineplex.core.gadget.gadgets.morph; + +import java.time.Month; +import java.time.YearMonth; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import net.minecraft.server.v1_8_R3.DataWatcher; +import net.minecraft.server.v1_8_R3.EntityArmorStand; +import net.minecraft.server.v1_8_R3.EntitySlime; +import net.minecraft.server.v1_8_R3.MathHelper; +import net.minecraft.server.v1_8_R3.PacketPlayOutAttachEntity; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy; +import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn; +import net.minecraft.server.v1_8_R3.PacketPlayOutNewAttachEntity; +import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; +import net.minecraft.server.v1_8_R3.World; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; + +import com.mojang.authlib.GameProfile; + +import mineplex.core.Managers; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.DummyEntity; +import mineplex.core.common.Rank; +import mineplex.core.common.skin.SkinData; +import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; +import mineplex.core.disguise.disguises.DisguisePlayer; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.morph.managers.UtilMorph; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.gadget.types.MorphGadget; +import mineplex.core.packethandler.IPacketHandler; +import mineplex.core.packethandler.PacketHandler; +import mineplex.core.packethandler.PacketInfo; +import mineplex.core.utils.UtilGameProfile; + +import static mineplex.core.common.util.UtilServer.runSync; + +public class MorphDinnerbone extends MorphGadget implements IPacketHandler +{ + private static final String NAME = "Dinnerbone"; + + private final CoreClientManager _coreClientManager = Managers.require(CoreClientManager.class); + + // Maps player to map of player and the id for the armorstand nametag + private final Map> _armorStandIds = new HashMap<>(); + // Maps player to map of player and all ids that it owns + private final Map>> _allIds = new HashMap<>(); + + public MorphDinnerbone(GadgetManager manager) + { + super(manager, "Over Easy Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "This morph lets you walk around on your head. But be careful, all the blood might go to your head!", + }, LineFormat.LORE), + -14, Material.EGG, (byte) 0, YearMonth.of(2017, Month.JANUARY)); + + Managers.require(PacketHandler.class).addPacketHandler(this, PacketHandler.ListenerPriority.LOW, PacketPlayOutNamedEntitySpawn.class, PacketPlayOutEntityDestroy.class); + } + + @Override + public void enableCustom(Player player, boolean message) + { + applyArmor(player, message); + + GameProfile profile = UtilGameProfile.getGameProfile(player); + try + { + UtilGameProfile.changeName(profile, "Dinnerbone"); + } + catch (ReflectiveOperationException e) + { + // Literally should never happen + e.printStackTrace(); + } + + DisguisePlayer disguisePlayer = new DisguisePlayer(player, profile); + disguisePlayer.setSendSkinDataToSelf(false); + disguisePlayer.setReplaceOriginalName(false, 10); + disguisePlayer.showInTabList(true, 0); + UtilMorph.disguise(player, disguisePlayer, Manager); + } + + @Override + public void disableCustom(Player player, boolean message) + { + removeArmor(player); + + UtilMorph.undisguise(player, Manager.getDisguiseManager()); + } + + @Override + public void handle(PacketInfo packetInfo) + { + if (packetInfo.isCancelled()) + return; + + if (packetInfo.getPacket() instanceof PacketPlayOutNamedEntitySpawn) + { + PacketPlayOutNamedEntitySpawn packet = (PacketPlayOutNamedEntitySpawn) packetInfo.getPacket(); + Player owner = (Player) UtilEnt.getEntityById(packet.a); + if (Manager.getActive(owner, GadgetType.MORPH) == this) + { + summonForEntity(packetInfo.getPlayer(), owner); + } + } + else if (packetInfo.getPacket() instanceof PacketPlayOutEntityDestroy) + { + PacketPlayOutEntityDestroy packet = (PacketPlayOutEntityDestroy) packetInfo.getPacket(); + for (int id : packet.a) + { + destroyForEntity(packetInfo.getPlayer(), id); + } + } + } + + private void summonForEntity(Player receiver, Player player) + { + switch (UtilPlayer.getVersion(receiver)) + { + case Version1_9: + summonForEntity19(receiver, player); + break; + case Version1_8: + summonForEntity18(receiver, player); + break; + case ALL: + // do nothing + break; + } + } + + private void summonForEntity19(Player receiver, Player player) + { + World world = ((CraftWorld) receiver.getWorld()).getHandle(); + + DataWatcher armorStandWatcher = getArmorStandWatcher(player); + armorStandWatcher.a(10, (byte) 0x10, EntityArmorStand.META_ARMOR_OPTION, (byte) 0x10); // Small + + DataWatcher squidWatcher = new DataWatcher(new DummyEntity(world)); + squidWatcher.a(0, (byte) 0x20, net.minecraft.server.v1_8_R3.Entity.META_ENTITYDATA, (byte) 0x20); + + PacketPlayOutSpawnEntityLiving spawnSquid = new PacketPlayOutSpawnEntityLiving(); + spawnSquid.a = UtilEnt.getNewEntityId(); + spawnSquid.b = EntityType.SQUID.getTypeId(); + spawnSquid.c = MathHelper.floor(player.getLocation().getX() * 32.0D); + spawnSquid.d = -150; + spawnSquid.e = MathHelper.floor(player.getLocation().getZ() * 32.0D); + spawnSquid.i = 0; + spawnSquid.j = 0; + spawnSquid.k = 0; + spawnSquid.f = 0; + spawnSquid.g = 0; + spawnSquid.h = 0; + spawnSquid.uuid = UUID.randomUUID(); + spawnSquid.l = squidWatcher; + + PacketPlayOutSpawnEntityLiving spawnArmorStand = new PacketPlayOutSpawnEntityLiving(); + spawnArmorStand.a = UtilEnt.getNewEntityId(); + spawnArmorStand.b = EntityType.ARMOR_STAND.getTypeId(); + spawnArmorStand.c = MathHelper.floor(player.getLocation().getX() * 32.0D); + spawnArmorStand.d = -150; + spawnArmorStand.e = MathHelper.floor(player.getLocation().getZ() * 32.0D); + spawnArmorStand.i = 0; + spawnArmorStand.j = 0; + spawnArmorStand.k = 0; + spawnArmorStand.f = 0; + spawnArmorStand.g = 0; + spawnArmorStand.h = 0; + spawnArmorStand.uuid = UUID.randomUUID(); + spawnArmorStand.l = armorStandWatcher; + + PacketPlayOutNewAttachEntity attachSquidtoPlayer = new PacketPlayOutNewAttachEntity(player.getEntityId(), new int[]{spawnSquid.a}); + PacketPlayOutNewAttachEntity attachArmorStandToSquid = new PacketPlayOutNewAttachEntity(spawnSquid.a, new int[]{spawnArmorStand.a}); + + _armorStandIds.computeIfAbsent(player.getEntityId(), key -> new HashMap<>()).put(receiver.getUniqueId(), spawnArmorStand.a); + _allIds.computeIfAbsent(player.getEntityId(), key -> new HashMap<>()).put(receiver.getUniqueId(), Arrays.asList(spawnSquid.a, spawnArmorStand.a)); + + runSync(() -> + { + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(spawnSquid); + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(spawnArmorStand); + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(attachSquidtoPlayer); + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(attachArmorStandToSquid); + }); + } + + private void summonForEntity18(Player receiver, Player player) + { + World world = ((CraftWorld) receiver.getWorld()).getHandle(); + + DataWatcher armorStandWatcher = getArmorStandWatcher(player); + armorStandWatcher.a(10, (byte) 0x10, EntityArmorStand.META_ARMOR_OPTION, (byte) 0x10); // Small + + DataWatcher squidWatcher = new DataWatcher(new DummyEntity(world)); + squidWatcher.a(0, (byte) 0x20, net.minecraft.server.v1_8_R3.Entity.META_ENTITYDATA, (byte) 0x20); + + PacketPlayOutSpawnEntityLiving spawnSquid = new PacketPlayOutSpawnEntityLiving(); + spawnSquid.a = UtilEnt.getNewEntityId(); + spawnSquid.b = EntityType.WOLF.getTypeId(); + spawnSquid.c = MathHelper.floor(player.getLocation().getX() * 32.0D); + spawnSquid.d = -150; + spawnSquid.e = MathHelper.floor(player.getLocation().getZ() * 32.0D); + spawnSquid.i = 0; + spawnSquid.j = 0; + spawnSquid.k = 0; + spawnSquid.f = 0; + spawnSquid.g = 0; + spawnSquid.h = 0; + spawnSquid.uuid = UUID.randomUUID(); + spawnSquid.l = squidWatcher; + + PacketPlayOutSpawnEntityLiving spawnArmorStand = new PacketPlayOutSpawnEntityLiving(); + spawnArmorStand.a = UtilEnt.getNewEntityId(); + spawnArmorStand.b = EntityType.ARMOR_STAND.getTypeId(); + spawnArmorStand.c = MathHelper.floor(player.getLocation().getX() * 32.0D); + spawnArmorStand.d = -150; + spawnArmorStand.e = MathHelper.floor(player.getLocation().getZ() * 32.0D); + spawnArmorStand.i = 0; + spawnArmorStand.j = 0; + spawnArmorStand.k = 0; + spawnArmorStand.f = 0; + spawnArmorStand.g = 0; + spawnArmorStand.h = 0; + spawnArmorStand.uuid = UUID.randomUUID(); + spawnArmorStand.l = armorStandWatcher; + + PacketPlayOutAttachEntity attachSquidtoPlayer = new PacketPlayOutAttachEntity(); + attachSquidtoPlayer.a = 0; + attachSquidtoPlayer.b = spawnSquid.a; + attachSquidtoPlayer.c = player.getEntityId(); + + PacketPlayOutAttachEntity attachArmorStandToSquid = new PacketPlayOutAttachEntity(); + attachArmorStandToSquid.a = 0; + attachArmorStandToSquid.b = spawnArmorStand.a; + attachArmorStandToSquid.c = spawnSquid.a; + + _armorStandIds.computeIfAbsent(player.getEntityId(), key -> new HashMap<>()).put(receiver.getUniqueId(), spawnArmorStand.a); + _allIds.computeIfAbsent(player.getEntityId(), key -> new HashMap<>()).put(receiver.getUniqueId(), Arrays.asList(spawnSquid.a, spawnArmorStand.a)); + + runSync(() -> + { + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(spawnSquid); + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(spawnArmorStand); + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(attachSquidtoPlayer); + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(attachArmorStandToSquid); + }); + } + + private void destroyForEntity(Player receiver, int id) + { + Map innerMap = _armorStandIds.get(id); + if (innerMap != null) + { + innerMap.remove(receiver.getUniqueId()); + + if (innerMap.isEmpty()) + { + _armorStandIds.remove(id); + } + } + + Map> allIdsMap = _allIds.get(id); + + if (allIdsMap != null) + { + List ids = allIdsMap.remove(receiver.getUniqueId()); + if (ids != null) + { + int[] idsArr = ids.stream().mapToInt(Integer::intValue).toArray(); + + PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(idsArr); + ((CraftPlayer) receiver).getHandle().playerConnection.networkManager.handle(destroy); + } + + if (allIdsMap.isEmpty()) + { + _allIds.remove(id); + } + } + } + + private DataWatcher getArmorStandWatcher(Player ownerOfTrack) + { + Rank rank = _coreClientManager.Get(ownerOfTrack).getRealOrDisguisedRank(); + String name = ownerOfTrack.getName(); + + if (rank != null) + { + if (rank.has(Rank.ULTRA)) + { + name = rank.getTag(true, true) + " " + ChatColor.RESET + name; + } + } + + World world = ((CraftWorld) ownerOfTrack.getWorld()).getHandle(); + + DataWatcher armorStandWatcher = new DataWatcher(new DummyEntity(world)); + armorStandWatcher.a(0, (byte) 0x20, net.minecraft.server.v1_8_R3.Entity.META_ENTITYDATA, (byte) 0x20); + armorStandWatcher.a(1, (short) 300, net.minecraft.server.v1_8_R3.Entity.META_AIR, 0); + + armorStandWatcher.a(2, name, net.minecraft.server.v1_8_R3.Entity.META_CUSTOMNAME, name); + armorStandWatcher.a(3, (byte) 1, net.minecraft.server.v1_8_R3.Entity.META_CUSTOMNAME_VISIBLE, true); + + return armorStandWatcher; + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java index b7a4fba03..096f453fd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java @@ -55,7 +55,7 @@ public class MorphSquid extends MorphGadget implements IThrown applyArmor(player, message); DisguiseSquid disguiseSquid = new DisguiseSquid(player); UtilMorph.disguise(player, disguiseSquid, Manager); - onToggleSwim(new PlayerToggleSwimEvent(player, SwimManager.isSwimming(player.getUniqueId()))); + onToggleSwim(new PlayerToggleSwimEvent(player, SwimManager.isSwimming(player.getUniqueId()), SwimManager.isInLava(player.getUniqueId()))); } @Override @@ -89,7 +89,7 @@ public class MorphSquid extends MorphGadget implements IThrown if (event.isSwimming()) { // Removes any costume player could be wearing - Manager.removeOutfit(event.getPlayer(), OutfitGadget.ArmorSlot.Boots); + Manager.removeOutfit(event.getPlayer(), OutfitGadget.ArmorSlot.BOOTS); // Adds enchanted boot ItemStack enchantedBoot = new ItemStack(Material.DIAMOND_BOOTS, 1); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/managers/SwimManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/managers/SwimManager.java index 6a76f4a96..ab526bad0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/managers/SwimManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/managers/SwimManager.java @@ -8,6 +8,7 @@ public class SwimManager { private static List _swimming = new ArrayList<>(); + private static List _lava = new ArrayList<>(); public static void addPlayer(UUID uuid) { @@ -22,9 +23,33 @@ public class SwimManager } } + public static void addPlayerLava(UUID uuid) + { + _lava.add(uuid); + } + + public static void removePlayerLava(UUID uuid) + { + if (_lava.contains(uuid)) + { + _lava.remove(uuid); + } + } + + public static void removeLavaAndWater(UUID uuid) + { + removePlayerLava(uuid); + removePlayer(uuid); + } + public static boolean isSwimming(UUID uuid) { return _swimming.contains(uuid); } + public static boolean isInLava(UUID uuid) + { + return _lava.contains(uuid); + } + } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java index 087893c88..0004420cd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java @@ -63,16 +63,16 @@ public class OutfitTeam extends OutfitGadget _active.add(player); - if (_slot == ArmorSlot.Helmet) player.getInventory().setHelmet( + if (_slot == ArmorSlot.HELMET) player.getInventory().setHelmet( ItemStackFactory.Instance.CreateStack(getDisplayMaterial().getId(), getDisplayData(), 1, getName())); - else if (_slot == ArmorSlot.Chest) player.getInventory().setChestplate( + else if (_slot == ArmorSlot.CHEST) player.getInventory().setChestplate( ItemStackFactory.Instance.CreateStack(getDisplayMaterial().getId(), getDisplayData(), 1, getName())); - else if (_slot == ArmorSlot.Legs) player.getInventory().setLeggings( + else if (_slot == ArmorSlot.LEGS) player.getInventory().setLeggings( ItemStackFactory.Instance.CreateStack(getDisplayMaterial().getId(), getDisplayData(), 1, getName())); - else if (_slot == ArmorSlot.Boots) player.getInventory().setBoots( + else if (_slot == ArmorSlot.BOOTS) player.getInventory().setBoots( ItemStackFactory.Instance.CreateStack(getDisplayMaterial().getId(), getDisplayData(), 1, getName())); } @@ -82,10 +82,10 @@ public class OutfitTeam extends OutfitGadget if (!_active.remove(player)) return; - if (_slot == ArmorSlot.Helmet) player.getInventory().setHelmet(null); - else if (_slot == ArmorSlot.Chest) player.getInventory().setChestplate(null); - else if (_slot == ArmorSlot.Legs) player.getInventory().setLeggings(null); - else if (_slot == ArmorSlot.Boots) player.getInventory().setBoots(null); + if (_slot == ArmorSlot.HELMET) player.getInventory().setHelmet(null); + else if (_slot == ArmorSlot.CHEST) player.getInventory().setChestplate(null); + else if (_slot == ArmorSlot.LEGS) player.getInventory().setLeggings(null); + else if (_slot == ArmorSlot.BOOTS) player.getInventory().setBoots(null); } @Override @@ -124,7 +124,7 @@ public class OutfitTeam extends OutfitGadget //Will only display the message once - if (getSlot() == ArmorSlot.Legs) + if (getSlot() == ArmorSlot.LEGS) { if (!Recharge.Instance.use(player, "Set Team Color", 20000, true, false)) return; @@ -140,28 +140,28 @@ public class OutfitTeam extends OutfitGadget { _colorSetting.put(player.getName(), Color.RED); - if (getSlot() == ArmorSlot.Legs) //Only Display Once + if (getSlot() == ArmorSlot.LEGS) //Only Display Once UtilPlayer.message(player, F.main("Gadget", "You equipped " + F.elem(C.cRed + "Red Team Outfit") + "!")); } else if (args[1].equals("yellow")) { _colorSetting.put(player.getName(), Color.YELLOW); - if (getSlot() == ArmorSlot.Legs) //Only Display Once + if (getSlot() == ArmorSlot.LEGS) //Only Display Once UtilPlayer.message(player, F.main("Gadget", "You equipped " + F.elem(C.cYellow + "Yellow Team Outfit") + "!")); } else if (args[1].equals("green")) { _colorSetting.put(player.getName(), Color.LIME); - if (getSlot() == ArmorSlot.Legs) //Only Display Once + if (getSlot() == ArmorSlot.LEGS) //Only Display Once UtilPlayer.message(player, F.main("Gadget", "You equipped " + F.elem(C.cGreen + "Green Team Outfit") + "!")); } else if (args[1].equals("blue")) { _colorSetting.put(player.getName(), Color.AQUA); - if (getSlot() == ArmorSlot.Legs) //Only Display Once + if (getSlot() == ArmorSlot.LEGS) //Only Display Once UtilPlayer.message(player, F.main("Gadget", "You equipped " + F.elem(C.cAqua + "Blue Team Outfit") + "!")); } else @@ -180,7 +180,7 @@ public class OutfitTeam extends OutfitGadget //Get Item ItemStack stack; - if (getSlot() == ArmorSlot.Helmet) + if (getSlot() == ArmorSlot.HELMET) { stack = player.getInventory().getHelmet(); @@ -190,7 +190,7 @@ public class OutfitTeam extends OutfitGadget return; } } - else if (getSlot() == ArmorSlot.Chest) + else if (getSlot() == ArmorSlot.CHEST) { stack = player.getInventory().getChestplate(); @@ -200,7 +200,7 @@ public class OutfitTeam extends OutfitGadget return; } } - else if (getSlot() == ArmorSlot.Legs) + else if (getSlot() == ArmorSlot.LEGS) { stack = player.getInventory().getLeggings(); @@ -210,7 +210,7 @@ public class OutfitTeam extends OutfitGadget return; } } - else if (getSlot() == ArmorSlot.Boots) + else if (getSlot() == ArmorSlot.BOOTS) { stack = player.getInventory().getBoots(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuit.java index b4fc6f213..0cba46733 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuit.java @@ -15,6 +15,8 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.util.Vector; import mineplex.core.common.util.C; @@ -48,6 +50,22 @@ public class OutfitFreezeSuit extends OutfitGadget "survive the coldest of weather! Press sneak to generate your ice bridge.", LineFormat.LORE), cost, slot, mat, data); setColor(Color.fromRGB(129, 212, 250)); + // Sets the display item + if (slot.equals(ArmorSlot.HELMET)) + { + setDisplayItem(new ItemStack(mat, 1, data)); + } + else + { + ItemStack displayItem = new ItemStack(mat, 1, data); + if (displayItem.getItemMeta() instanceof LeatherArmorMeta) + { + LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) displayItem.getItemMeta(); + leatherArmorMeta.setColor(Color.fromRGB(129, 212, 250)); + displayItem.setItemMeta(leatherArmorMeta); + } + setDisplayItem(displayItem); + } } @Override @@ -66,7 +84,7 @@ public class OutfitFreezeSuit extends OutfitGadget public void activateBridge(PlayerToggleSneakEvent event) { // Prevents running event 4 times - if (getSlot() != ArmorSlot.Helmet) + if (getSlot() != ArmorSlot.HELMET) return; if (!setActive(event.getPlayer())) @@ -90,7 +108,7 @@ public class OutfitFreezeSuit extends OutfitGadget public void snowAura(UpdateEvent event) { // Prevents running event 4 times - if (getSlot() != ArmorSlot.Helmet) + if (getSlot() != ArmorSlot.HELMET) return; if (event.getType() != UpdateType.FAST) @@ -141,7 +159,7 @@ public class OutfitFreezeSuit extends OutfitGadget public void icePath(UpdateEvent event) { // Prevents running event 4 times - if (getSlot() != ArmorSlot.Helmet) + if (getSlot() != ArmorSlot.HELMET) return; if (event.getType() != UpdateType.TICK) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitBoots.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitBoots.java index eae7ef9b7..dc4eb645f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitBoots.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitBoots.java @@ -9,7 +9,7 @@ public class OutfitFreezeSuitBoots extends OutfitFreezeSuit public OutfitFreezeSuitBoots(GadgetManager manager) { - super(manager, "Freeze Boots", -16, ArmorSlot.Boots, Material.LEATHER_BOOTS, (byte) 0); + super(manager, "Freeze Boots", -16, ArmorSlot.BOOTS, Material.LEATHER_BOOTS, (byte) 0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitChestplate.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitChestplate.java index 744fd3cc1..cb8edd7a6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitChestplate.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitChestplate.java @@ -9,7 +9,7 @@ public class OutfitFreezeSuitChestplate extends OutfitFreezeSuit public OutfitFreezeSuitChestplate(GadgetManager manager) { - super(manager, "Freeze Chest", -16, ArmorSlot.Chest, Material.LEATHER_CHESTPLATE, (byte) 0); + super(manager, "Freeze Chest", -16, ArmorSlot.CHEST, Material.LEATHER_CHESTPLATE, (byte) 0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitHelmet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitHelmet.java index 641fa293a..b8f3640a6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitHelmet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitHelmet.java @@ -9,7 +9,7 @@ public class OutfitFreezeSuitHelmet extends OutfitFreezeSuit public OutfitFreezeSuitHelmet(GadgetManager manager) { - super(manager, "Freeze Helmet", -16, ArmorSlot.Helmet, Material.ICE, (byte) 0); + super(manager, "Freeze Helmet", -16, ArmorSlot.HELMET, Material.ICE, (byte) 0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitLeggings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitLeggings.java index 638c1d5c8..c10a3b792 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitLeggings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/freezesuit/OutfitFreezeSuitLeggings.java @@ -9,7 +9,7 @@ public class OutfitFreezeSuitLeggings extends OutfitFreezeSuit public OutfitFreezeSuitLeggings(GadgetManager manager) { - super(manager, "Freeze Leggings", -16, ArmorSlot.Legs, Material.LEATHER_LEGGINGS, (byte) 0); + super(manager, "Freeze Leggings", -16, ArmorSlot.LEGS, Material.LEATHER_LEGGINGS, (byte) 0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuit.java index 2c851cced..48305d620 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuit.java @@ -64,7 +64,7 @@ public class OutfitRaveSuit extends OutfitGadget //Get Item ItemStack stack; - if (getSlot() == ArmorSlot.Helmet) + if (getSlot() == ArmorSlot.HELMET) { stack = player.getInventory().getHelmet(); @@ -74,7 +74,7 @@ public class OutfitRaveSuit extends OutfitGadget continue; } } - else if (getSlot() == ArmorSlot.Chest) + else if (getSlot() == ArmorSlot.CHEST) { stack = player.getInventory().getChestplate(); @@ -84,7 +84,7 @@ public class OutfitRaveSuit extends OutfitGadget continue; } } - else if (getSlot() == ArmorSlot.Legs) + else if (getSlot() == ArmorSlot.LEGS) { stack = player.getInventory().getLeggings(); @@ -94,7 +94,7 @@ public class OutfitRaveSuit extends OutfitGadget continue; } } - else if (getSlot() == ArmorSlot.Boots) + else if (getSlot() == ArmorSlot.BOOTS) { stack = player.getInventory().getBoots(); @@ -168,7 +168,7 @@ public class OutfitRaveSuit extends OutfitGadget if (event.getType() != UpdateType.FAST) return; - if (getSlot() != ArmorSlot.Helmet) + if (getSlot() != ArmorSlot.HELMET) return; for (Player player : UtilServer.getPlayers()) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitBoots.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitBoots.java index e8635180e..5c7f34fb2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitBoots.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitBoots.java @@ -9,7 +9,7 @@ public class OutfitRaveSuitBoots extends OutfitRaveSuit public OutfitRaveSuitBoots(GadgetManager manager) { - super(manager, "Rave Boots", -2, ArmorSlot.Boots, Material.LEATHER_BOOTS, (byte)0); + super(manager, "Rave Boots", -2, ArmorSlot.BOOTS, Material.LEATHER_BOOTS, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitChestplate.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitChestplate.java index 94ef200b4..3494794cd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitChestplate.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitChestplate.java @@ -9,7 +9,7 @@ public class OutfitRaveSuitChestplate extends OutfitRaveSuit public OutfitRaveSuitChestplate(GadgetManager manager) { - super(manager, "Rave Shirt", -2, ArmorSlot.Chest, Material.LEATHER_CHESTPLATE, (byte)0); + super(manager, "Rave Shirt", -2, ArmorSlot.CHEST, Material.LEATHER_CHESTPLATE, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitHelmet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitHelmet.java index 3de7d1c86..0f4433656 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitHelmet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitHelmet.java @@ -9,7 +9,7 @@ public class OutfitRaveSuitHelmet extends OutfitRaveSuit public OutfitRaveSuitHelmet(GadgetManager manager) { - super(manager, "Rave Hat", -2, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0); + super(manager, "Rave Hat", -2, ArmorSlot.HELMET, Material.LEATHER_HELMET, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitLeggings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitLeggings.java index b17a31b30..d7569c34a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitLeggings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/ravesuit/OutfitRaveSuitLeggings.java @@ -9,7 +9,7 @@ public class OutfitRaveSuitLeggings extends OutfitRaveSuit public OutfitRaveSuitLeggings(GadgetManager manager) { - super(manager, "Rave Pants", -2, ArmorSlot.Legs, Material.LEATHER_LEGGINGS, (byte)0); + super(manager, "Rave Pants", -2, ArmorSlot.LEGS, Material.LEATHER_LEGGINGS, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuit.java index bac66d1ae..c203d1b52 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuit.java @@ -43,7 +43,7 @@ public class OutfitSpaceSuit extends OutfitGadget if (event.getType() != UpdateType.FAST) return; - if (getSlot() != ArmorSlot.Helmet) + if (getSlot() != ArmorSlot.HELMET) return; for (Player player : UtilServer.getPlayers()) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitBoots.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitBoots.java index 4e5ad32a3..c1f8c3e28 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitBoots.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitBoots.java @@ -9,7 +9,7 @@ public class OutfitSpaceSuitBoots extends OutfitSpaceSuit public OutfitSpaceSuitBoots(GadgetManager manager) { - super(manager, "Space Boots", -2, ArmorSlot.Boots, Material.GOLD_BOOTS, (byte)0); + super(manager, "Space Boots", -2, ArmorSlot.BOOTS, Material.GOLD_BOOTS, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitChestplate.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitChestplate.java index 7df3e6e27..db8ea650e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitChestplate.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitChestplate.java @@ -9,7 +9,7 @@ public class OutfitSpaceSuitChestplate extends OutfitSpaceSuit public OutfitSpaceSuitChestplate(GadgetManager manager) { - super(manager, "Space Jacket", -2, ArmorSlot.Chest, Material.GOLD_CHESTPLATE, (byte)0); + super(manager, "Space Jacket", -2, ArmorSlot.CHEST, Material.GOLD_CHESTPLATE, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitHelmet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitHelmet.java index 2a46a4f9e..caabcdc2f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitHelmet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitHelmet.java @@ -9,7 +9,7 @@ public class OutfitSpaceSuitHelmet extends OutfitSpaceSuit public OutfitSpaceSuitHelmet(GadgetManager manager) { - super(manager, "Space Helmet", -2, ArmorSlot.Helmet, Material.GLASS, (byte)0); + super(manager, "Space Helmet", -2, ArmorSlot.HELMET, Material.GLASS, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitLeggings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitLeggings.java index d690f06cb..0a9c71647 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitLeggings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/spacesuit/OutfitSpaceSuitLeggings.java @@ -9,7 +9,7 @@ public class OutfitSpaceSuitLeggings extends OutfitSpaceSuit public OutfitSpaceSuitLeggings(GadgetManager manager) { - super(manager, "Space Pants", -2, ArmorSlot.Legs, Material.GOLD_LEGGINGS, (byte)0); + super(manager, "Space Pants", -2, ArmorSlot.LEGS, Material.GOLD_LEGGINGS, (byte)0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuit.java index 201eab634..1d084921c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuit.java @@ -230,19 +230,19 @@ public class OutfitWindUpSuit extends OutfitGadget { ItemStack stack; - if(getSlot() == ArmorSlot.Helmet) + if(getSlot() == ArmorSlot.HELMET) { stack = player.getInventory().getHelmet(); } - else if (getSlot() == ArmorSlot.Chest) + else if (getSlot() == ArmorSlot.CHEST) { stack = player.getInventory().getChestplate(); } - else if (getSlot() == ArmorSlot.Legs) + else if (getSlot() == ArmorSlot.LEGS) { stack = player.getInventory().getLeggings(); } - else if (getSlot() == ArmorSlot.Boots) + else if (getSlot() == ArmorSlot.BOOTS) { stack = player.getInventory().getBoots(); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitBoots.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitBoots.java index 54541e2c8..55448de2d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitBoots.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitBoots.java @@ -8,7 +8,7 @@ public class OutfitWindUpSuitBoots extends OutfitWindUpSuit public OutfitWindUpSuitBoots(GadgetManager manager) { - super(manager, "Wind Up Boots", -2, ArmorSlot.Boots, Material.LEATHER_BOOTS, (byte)0, manager.getBoosterManager()); + super(manager, "Wind Up Boots", -2, ArmorSlot.BOOTS, Material.LEATHER_BOOTS, (byte)0, manager.getBoosterManager()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitChestplate.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitChestplate.java index bf1f8c5e2..bc64a4bd5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitChestplate.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitChestplate.java @@ -8,7 +8,7 @@ public class OutfitWindUpSuitChestplate extends OutfitWindUpSuit public OutfitWindUpSuitChestplate(GadgetManager manager) { - super(manager, "Wind Up Shirt", -2, ArmorSlot.Chest, Material.LEATHER_CHESTPLATE, (byte)0, manager.getBoosterManager()); + super(manager, "Wind Up Shirt", -2, ArmorSlot.CHEST, Material.LEATHER_CHESTPLATE, (byte)0, manager.getBoosterManager()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitHelmet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitHelmet.java index c801db220..23d19d334 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitHelmet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitHelmet.java @@ -8,7 +8,7 @@ public class OutfitWindUpSuitHelmet extends OutfitWindUpSuit public OutfitWindUpSuitHelmet(GadgetManager manager) { - super(manager, "Wind Up Hat", -2, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0, manager.getBoosterManager()); + super(manager, "Wind Up Hat", -2, ArmorSlot.HELMET, Material.LEATHER_HELMET, (byte)0, manager.getBoosterManager()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitLeggings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitLeggings.java index 0f57f3875..c7b094e32 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitLeggings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/windupsuit/OutfitWindUpSuitLeggings.java @@ -8,7 +8,7 @@ public class OutfitWindUpSuitLeggings extends OutfitWindUpSuit public OutfitWindUpSuitLeggings(GadgetManager manager) { - super(manager, "Wind Up Pants", -2, ArmorSlot.Legs, Material.LEATHER_LEGGINGS, (byte)0, manager.getBoosterManager()); + super(manager, "Wind Up Pants", -2, ArmorSlot.LEGS, Material.LEATHER_LEGGINGS, (byte)0, manager.getBoosterManager()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/freedom/ParticleFreedom.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/freedom/ParticleFreedom.java index 4b639156c..bafa31183 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/freedom/ParticleFreedom.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/freedom/ParticleFreedom.java @@ -4,16 +4,18 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import mineplex.core.common.util.LineFormat; -import mineplex.core.common.util.UtilText; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.particleeffects.FreedomFireworkEffect; -import mineplex.core.gadget.types.ParticleGadget; -import mineplex.core.updater.event.UpdateEvent; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.banner.CountryFlag; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ParticleGadget; +import mineplex.core.particleeffects.FreedomFireworkEffect; +import mineplex.core.updater.event.UpdateEvent; + public class ParticleFreedom extends ParticleGadget { @@ -24,6 +26,7 @@ public class ParticleFreedom extends ParticleGadget super(manager, "Freedom Aura", UtilText.splitLineToArray(UtilText.colorWords("Do you hear that? It's the sound of Freedom swirling around you.", ChatColor.RED, ChatColor.WHITE, ChatColor.BLUE), LineFormat.LORE), -8, Material.WOOL, (byte) 11); + setDisplayItem(CountryFlag.USA.getBanner()); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java index 36c6c5d7b..2dc93ebf5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java @@ -9,6 +9,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; @@ -34,6 +35,8 @@ public abstract class Gadget extends SalesPackageBase implements Listener private boolean _free; private YearMonth _yearMonth = null; + + private ItemStack _displayItem = null; public Gadget(GadgetManager manager, GadgetType gadgetType, String name, String[] desc, int cost, Material mat, byte data) { @@ -208,4 +211,19 @@ public abstract class Gadget extends SalesPackageBase implements Listener { return _alternativePackageNames; } + + public void setDisplayItem(ItemStack displayItem) + { + _displayItem = displayItem; + } + + public boolean hasDisplayItem() + { + return _displayItem != null; + } + + public ItemStack getDisplayItem() + { + return _displayItem; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java index fb63ac704..b6becadc1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java @@ -20,7 +20,7 @@ public abstract class HatGadget extends OutfitGadget public HatGadget(GadgetManager manager, HatType type) { - super(manager, type.getName(), type.getLore(), type.getCost(), ArmorSlot.Helmet, type.getHat().getType(), type.getHat().getData().getData(), type.getAltNames()); + super(manager, type.getName(), type.getLore(), type.getCost(), ArmorSlot.HELMET, type.getHat().getType(), type.getHat().getData().getData(), type.getAltNames()); _hat = type.getHat(); _hatType = type; @@ -31,7 +31,7 @@ public abstract class HatGadget extends OutfitGadget public HatGadget(GadgetManager manager, String name, String[] desc, int cost, ItemStack item) { - super(manager, name, desc, cost, ArmorSlot.Helmet, item.getType(), item.getData().getData()); + super(manager, name, desc, cost, ArmorSlot.HELMET, item.getType(), item.getData().getData()); } public HatGadget(GadgetManager manager, String name, String[] desc, int cost, String playerName) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java index 382ad3560..82a685892 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java @@ -173,14 +173,20 @@ public abstract class ItemGadget extends Gadget UtilInv.Update(player); return; } - - Manager.getInventoryManager().addItemToInventory(player, getName(), -1); - - player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(getDisplayMaterial(), getDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(getName()) + " " + getName()))); ItemGadgetUseEvent itemGadgetUseEvent = new ItemGadgetUseEvent(player, this, 1); UtilServer.CallEvent(itemGadgetUseEvent); + if (itemGadgetUseEvent.isCancelled()) + { + UtilPlayer.message(player, F.main("Item", itemGadgetUseEvent.getCancelledMessage())); + return; + } + + Manager.getInventoryManager().addItemToInventory(player, getName(), -1); + + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(getDisplayMaterial(), getDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(getName()) + " " + getName()))); + ActivateCustom(event.getPlayer()); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java index 3e69cb6e6..6ce4d70b7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java @@ -14,10 +14,10 @@ public abstract class OutfitGadget extends Gadget { public enum ArmorSlot { - Helmet ("Helmet"), - Chest ("Chestplate"), - Legs ("Leggings"), - Boots ("Boots"); + HELMET("Helmet"), + CHEST("Chestplate"), + LEGS("Leggings"), + BOOTS("Boots"); private String _databaseKey; @@ -80,13 +80,13 @@ public abstract class OutfitGadget extends Gadget } } - if (_slot == ArmorSlot.Helmet) player.getInventory().setHelmet(itemStack); + if (_slot == ArmorSlot.HELMET) player.getInventory().setHelmet(itemStack); - else if (_slot == ArmorSlot.Chest) player.getInventory().setChestplate(itemStack); + else if (_slot == ArmorSlot.CHEST) player.getInventory().setChestplate(itemStack); - else if (_slot == ArmorSlot.Legs) player.getInventory().setLeggings(itemStack); + else if (_slot == ArmorSlot.LEGS) player.getInventory().setLeggings(itemStack); - else if (_slot == ArmorSlot.Boots) player.getInventory().setBoots(itemStack); + else if (_slot == ArmorSlot.BOOTS) player.getInventory().setBoots(itemStack); } public void removeArmor(Player player, boolean message) @@ -97,9 +97,9 @@ public abstract class OutfitGadget extends Gadget if (message) UtilPlayer.message(player, F.main("Gadget", "You took off " + F.elem(getName()) + ".")); - if (_slot == ArmorSlot.Helmet) player.getInventory().setHelmet(null); - else if (_slot == ArmorSlot.Chest) player.getInventory().setChestplate(null); - else if (_slot == ArmorSlot.Legs) player.getInventory().setLeggings(null); - else if (_slot == ArmorSlot.Boots) player.getInventory().setBoots(null); + if (_slot == ArmorSlot.HELMET) player.getInventory().setHelmet(null); + else if (_slot == ArmorSlot.CHEST) player.getInventory().setChestplate(null); + else if (_slot == ArmorSlot.LEGS) player.getInventory().setLeggings(null); + else if (_slot == ArmorSlot.BOOTS) player.getInventory().setBoots(null); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/event/MountActivateEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/event/MountActivateEvent.java index 09b9159c1..3b37a605b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/event/MountActivateEvent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/event/MountActivateEvent.java @@ -1,13 +1,13 @@ package mineplex.core.mount.event; -import mineplex.core.gadget.types.Gadget; -import mineplex.core.mount.Mount; - import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class MountActivateEvent extends Event +import mineplex.core.mount.Mount; + +public class MountActivateEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); @@ -42,11 +42,13 @@ public class MountActivateEvent extends Event return _player; } + @Override public void setCancelled(boolean cancel) { _cancelled = cancel; } - + + @Override public boolean isCancelled() { return _cancelled; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubRewards.java b/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubRewards.java index c7bbffaf1..83be22557 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubRewards.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubRewards.java @@ -31,7 +31,7 @@ public class PowerPlayClubRewards .put(YearMonth.of(2016, Month.OCTOBER), new PowerPlayClubItem("Witch Morph", SkinData.WITCH.getSkull())) .put(YearMonth.of(2016, Month.NOVEMBER), new PowerPlayClubItem("Turkey Morph", SkinData.TURKEY.getSkull())) .put(YearMonth.of(2016, Month.DECEMBER), new PowerPlayClubItem("Santa Morph", SkinData.SANTA.getSkull())) - .put(YearMonth.of(2017, Month.JANUARY), new PowerPlayClubItem("Chicken Mount", new ItemStack(Material.GLASS))) + .put(YearMonth.of(2017, Month.JANUARY), new PowerPlayClubItem("Over Easy Morph", new ItemStack(Material.EGG))) .build(); public static class PowerPlayClubItem diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 75b658660..0157d87df 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -744,6 +744,10 @@ public class RewardManager display = CountryFlag.USA.getBanner(); } } + if (gadget.hasDisplayItem()) + { + display = gadget.getDisplayItem(); + } UnknownPackageReward reward = new UnknownPackageReward(_donationManager, gadget.getGadgetType().getCategoryType(), displayName, gadget.getName(), display, rarity, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titles/Titles.java b/Plugins/Mineplex.Core/src/mineplex/core/titles/Titles.java index 3c6fd2dab..210405c95 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/titles/Titles.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/titles/Titles.java @@ -47,7 +47,6 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerToggleSneakEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.BookMeta; import mineplex.core.Managers; import mineplex.core.MiniDbClientPlugin; @@ -61,10 +60,11 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; -import mineplex.core.common.util.UtilItem; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilText; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.GadgetType; import mineplex.core.itemstack.ItemBuilder; import mineplex.core.packethandler.IPacketHandler; import mineplex.core.packethandler.PacketHandler; @@ -93,6 +93,8 @@ public class Titles extends MiniDbClientPlugin implements IPacketHand private final TrackManager _trackManager = require(TrackManager.class); private final TitlesRepository _titlesRepository = new TitlesRepository(); + private final GadgetManager _gadgetManager = require(GadgetManager.class); + private final BaseComponent[] CLICK_ENABLE_TRACK = new ComponentBuilder("") .append("Click to enable this track") .color(ChatColor.GREEN) @@ -699,7 +701,11 @@ public class Titles extends MiniDbClientPlugin implements IPacketHand if (packetInfo.getPacket() instanceof PacketPlayOutNamedEntitySpawn) { PacketPlayOutNamedEntitySpawn packet = (PacketPlayOutNamedEntitySpawn) packetInfo.getPacket(); - summonForEntity(packetInfo.getPlayer(), (Player) UtilEnt.getEntityById(packet.a)); + Player owner = (Player) UtilEnt.getEntityById(packet.a); + if (_gadgetManager.getActive(owner, GadgetType.MORPH) == null) + { + summonForEntity(packetInfo.getPlayer(), owner); + } } else if (packetInfo.getPacket() instanceof PacketPlayOutEntityDestroy) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java index 5a519e16f..c12c434fb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java @@ -89,7 +89,11 @@ public class BuyChestButton implements IButton _page.getShop().openPageForPlayer(player, new ConfirmationPage<>(player, _page, new SalesPackageProcessor(player, GlobalCurrency.TREASURE_SHARD, salesPackage, _page.getDonationManager(), () -> { _inventoryManager.addItemToInventory(player, _chestName, 1); - _page.refresh(); + player.closeInventory(); + TreasurePage page = new TreasurePage(_page.getTreasureManager(), _page.getTreasureShop(), _page.getTreasureLocation(), + _page.getClientManager(), _page.getDonationManager(), _page.getInventoryManager(), + _page.getGadgetManager(), player, _page.getActualPage()); + _page.getTreasureShop().openPageForPlayer(player, page); }), salesPackage.buildIcon())); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/pages/NextPageButton.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/pages/NextPageButton.java index c98745293..7fe48ca3f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/pages/NextPageButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/pages/NextPageButton.java @@ -25,8 +25,8 @@ public class NextPageButton implements IButton return; player.closeInventory(); TreasurePage nextPage = new TreasurePage(_treasurePage.getTreasureManager(), _treasurePage.getTreasureShop(), _treasurePage.getTreasureLocation(), - _treasurePage.getClientManager(), _treasurePage.getDonationManager(), _treasurePage.getInventoryManager(), - _treasurePage.getGadgetManager(), _player, _treasurePage.getActualPage() + 1); + _treasurePage.getClientManager(), _treasurePage.getDonationManager(), _treasurePage.getInventoryManager(), + _treasurePage.getGadgetManager(), _player, _treasurePage.getActualPage() + 1); _treasurePage.getTreasureShop().openPageForPlayer(player, nextPage); } }