From eadbb22de9e9fc2664debcb0d51f81cdf6b8eb42 Mon Sep 17 00:00:00 2001 From: samczsun Date: Mon, 19 Dec 2016 17:53:15 -0500 Subject: [PATCH 01/20] Dinnerbone Morph with tab list --- .../core/disguise/DisguiseManager.java | 14 +++ .../disguise/disguises/DisguisePlayer.java | 52 ++++++-- .../mineplex/core/gadget/GadgetManager.java | 2 + .../gadget/gadgets/morph/MorphDinnerbone.java | 119 ++++++++++++++++++ 4 files changed, 178 insertions(+), 9 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java index 643652f1c..32bce79f1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java @@ -528,6 +528,20 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler Bukkit.getScheduler().runTaskLater(UtilServer.getPlugin(), r, pDisguise.getShowInTabListDelay()); } } + else + { + if (!pDisguise.replaceOriginalName()) + { + 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); + } + } } 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..e614acc7d 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,6 +60,7 @@ public class DisguisePlayer extends DisguiseHuman private boolean _sendSkinToSelf = true; private boolean _showInTabList = false; + private boolean _replaceOriginalName = true; private int _showInTabListDelay = 30; private DisguisePlayer(Entity entity) @@ -64,7 +89,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 +111,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 +459,16 @@ public class DisguisePlayer extends DisguiseHuman return selfProfile; } + public boolean replaceOriginalName() + { + return this._replaceOriginalName; + } + + public void setReplaceOriginalName(boolean b) + { + this._replaceOriginalName = b; + } + 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 91aead4c7..f2d007fb3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -114,6 +114,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; @@ -386,6 +387,7 @@ public class GadgetManager extends MiniPlugin addGadget(new MorphMetalMan(this)); addGadget(new MorphTurkey(this)); addGadget(new MorphChristmasKing(this)); + addGadget(new MorphDinnerbone(this)); // Not in this update //addGadget(new MorphStray(this)); addGadget(new MorphSanta(this)); 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..0e8d8b5cb --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -0,0 +1,119 @@ +package mineplex.core.gadget.gadgets.morph; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.function.Consumer; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import com.mojang.authlib.GameProfile; + +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.UtilText; +import mineplex.core.disguise.disguises.DisguisePlayer; +import mineplex.core.event.StackerEvent; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.morph.managers.UtilMorph; +import mineplex.core.gadget.types.MorphGadget; +import mineplex.core.utils.UtilGameProfile; + +public class MorphDinnerbone extends MorphGadget +{ + + private Map _armorStands = new HashMap<>(); + + private static final String NAME = "Dinnerbone"; + + public MorphDinnerbone(GadgetManager manager) + { + super(manager, "Dinnerbone Morph", UtilText.splitLinesToArray(new String[]{C.cGray + "Placeholder"}, LineFormat.LORE), + -14, Material.GLASS, (byte) 0); + // Creates display item + ItemStack dinnerboneHead = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3); + SkullMeta skullMeta = (SkullMeta) dinnerboneHead.getItemMeta(); + skullMeta.setOwner("Dinnerbone"); + dinnerboneHead.setItemMeta(skullMeta); + } + + @Override + public void enableCustom(Player player, boolean message) + { + applyArmor(player, message); + + UtilGameProfile.getProfileByName(NAME, true, requestedProfile -> + { + Consumer skinConsumer = requestedProfileSkin -> + { + SkinData skinData = SkinData.constructFromGameProfile(requestedProfileSkin, true, true); + requestedProfile.getProperties().clear(); + requestedProfile.getProperties().put("textures", skinData.getProperty()); + + DisguisePlayer disguisePlayer = new DisguisePlayer(player, requestedProfile); + disguisePlayer.setReplaceOriginalName(false); + disguisePlayer.showInTabList(true, 0); + UtilMorph.disguise(player, disguisePlayer, Manager); + }; + + UtilGameProfile.getProfileByName(player.getName(), true, skinConsumer); + }); + + ArmorStand nameTag = player.getWorld().spawn(player.getLocation(), ArmorStand.class); + nameTag.setVisible(false); + nameTag.setGravity(false); + nameTag.setSmall(true); + setName(player, nameTag, player.getName(), Manager.getClientManager().Get(player).getRealOrDisguisedRank()); + player.setPassenger(nameTag); + _armorStands.put(player.getUniqueId(), nameTag); + } + + @Override + public void disableCustom(Player player, boolean message) + { + removeArmor(player); + + UtilMorph.undisguise(player, Manager.getDisguiseManager()); + + if (_armorStands.containsKey(player.getUniqueId())) + { + _armorStands.get(player.getUniqueId()).remove(); + _armorStands.remove(player.getUniqueId()); + } + } + + private void setName(Player player, ArmorStand stand, String name, Rank rank) + { + if (rank != null) + { + if (rank.has(Rank.ULTRA)) + { + name = rank.getTag(true, true) + " " + ChatColor.RESET + name; + } + } + + stand.setCustomName(name); + stand.setCustomNameVisible(true); + } + + @EventHandler + public void onDismount(StackerEvent event) + { + if (!(event.getEntity() instanceof Player)) + return; + + Player player = (Player) event.getEntity(); + + if (isActive(player)) + event.setCancelled(true); + } + +} \ No newline at end of file From b85bd623f7316e1e47663302162a4da12004f88a Mon Sep 17 00:00:00 2001 From: samczsun Date: Mon, 19 Dec 2016 19:14:28 -0500 Subject: [PATCH 02/20] Fix not updating skin/tab list --- .../core/disguise/DisguiseManager.java | 27 +++++++++++++------ .../disguise/disguises/DisguisePlayer.java | 9 ++++++- .../gadget/gadgets/morph/MorphDinnerbone.java | 3 ++- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java index 32bce79f1..89c28093f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java @@ -532,14 +532,25 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler { if (!pDisguise.replaceOriginalName()) { - 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); + 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()); + } } } } 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 e614acc7d..9eef563d7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java @@ -62,6 +62,7 @@ public class DisguisePlayer extends DisguiseHuman private boolean _showInTabList = false; private boolean _replaceOriginalName = true; private int _showInTabListDelay = 30; + private int _replaceOriginalNameDelay; private DisguisePlayer(Entity entity) { @@ -464,9 +465,15 @@ public class DisguisePlayer extends DisguiseHuman return this._replaceOriginalName; } - public void setReplaceOriginalName(boolean b) + public int replaceOriginalNameDelay() + { + return this._replaceOriginalNameDelay; + } + + public void setReplaceOriginalName(boolean b, int delay) { this._replaceOriginalName = b; + this._replaceOriginalNameDelay = delay; } private UUID getOriginalUUID() 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 index 0e8d8b5cb..211162e54 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -59,7 +59,8 @@ public class MorphDinnerbone extends MorphGadget requestedProfile.getProperties().put("textures", skinData.getProperty()); DisguisePlayer disguisePlayer = new DisguisePlayer(player, requestedProfile); - disguisePlayer.setReplaceOriginalName(false); + disguisePlayer.setSendSkinDataToSelf(false); + disguisePlayer.setReplaceOriginalName(false, 5); disguisePlayer.showInTabList(true, 0); UtilMorph.disguise(player, disguisePlayer, Manager); }; From 06a05080ed828cad79871fe6cb433251dbf2bb36 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Mon, 19 Dec 2016 22:15:22 -0200 Subject: [PATCH 03/20] Added YearMonth for Dinnerbone Morph --- .../mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 index 0e8d8b5cb..64bb4c842 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -1,5 +1,7 @@ package mineplex.core.gadget.gadgets.morph; +import java.time.Month; +import java.time.YearMonth; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -37,7 +39,7 @@ public class MorphDinnerbone extends MorphGadget public MorphDinnerbone(GadgetManager manager) { super(manager, "Dinnerbone Morph", UtilText.splitLinesToArray(new String[]{C.cGray + "Placeholder"}, LineFormat.LORE), - -14, Material.GLASS, (byte) 0); + -14, Material.GLASS, (byte) 0, YearMonth.of(2017, Month.JANUARY)); // Creates display item ItemStack dinnerboneHead = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3); SkullMeta skullMeta = (SkullMeta) dinnerboneHead.getItemMeta(); From df2b0c7e994e271bafc07645df3860ab6ad49198 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Tue, 20 Dec 2016 17:16:42 -0200 Subject: [PATCH 04/20] Addef fix for dinnerbone morph not opening menus --- .../core/cosmetic/CosmeticManager.java | 50 +++++++++++++++---- .../gadget/gadgets/morph/MorphDinnerbone.java | 2 +- 2 files changed, 42 insertions(+), 10 deletions(-) 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/gadget/gadgets/morph/MorphDinnerbone.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java index eefcd7041..40e0e1319 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -62,7 +62,7 @@ public class MorphDinnerbone extends MorphGadget DisguisePlayer disguisePlayer = new DisguisePlayer(player, requestedProfile); disguisePlayer.setSendSkinDataToSelf(false); - disguisePlayer.setReplaceOriginalName(false, 5); + disguisePlayer.setReplaceOriginalName(false, 500); disguisePlayer.showInTabList(true, 0); UtilMorph.disguise(player, disguisePlayer, Manager); }; From 38e9daa377019ee5cd1fe0d7410652756e0b9539 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Thu, 22 Dec 2016 18:23:42 -0200 Subject: [PATCH 05/20] Added display item feature again --- .../core/cosmetic/ui/page/CostumePage.java | 6 ++-- .../mineplex/core/gadget/GadgetManager.java | 8 ++--- .../commands/UnlockCosmeticsCommand.java | 2 +- .../arrowtrail/freedom/ArrowTrailFreedom.java | 19 ++++++----- .../gadgets/death/freedom/DeathFreedom.java | 16 +++++---- .../doublejump/freedom/DoubleJumpFreedom.java | 11 +++--- .../gadget/gadgets/morph/MorphDinnerbone.java | 1 + .../core/gadget/gadgets/morph/MorphSquid.java | 2 +- .../gadget/gadgets/outfit/OutfitTeam.java | 34 +++++++++---------- .../outfit/freezesuit/OutfitFreezeSuit.java | 24 +++++++++++-- .../freezesuit/OutfitFreezeSuitBoots.java | 2 +- .../OutfitFreezeSuitChestplate.java | 2 +- .../freezesuit/OutfitFreezeSuitHelmet.java | 2 +- .../freezesuit/OutfitFreezeSuitLeggings.java | 2 +- .../outfit/ravesuit/OutfitRaveSuit.java | 10 +++--- .../outfit/ravesuit/OutfitRaveSuitBoots.java | 2 +- .../ravesuit/OutfitRaveSuitChestplate.java | 2 +- .../outfit/ravesuit/OutfitRaveSuitHelmet.java | 2 +- .../ravesuit/OutfitRaveSuitLeggings.java | 2 +- .../outfit/spacesuit/OutfitSpaceSuit.java | 2 +- .../spacesuit/OutfitSpaceSuitBoots.java | 2 +- .../spacesuit/OutfitSpaceSuitChestplate.java | 2 +- .../spacesuit/OutfitSpaceSuitHelmet.java | 2 +- .../spacesuit/OutfitSpaceSuitLeggings.java | 2 +- .../outfit/windupsuit/OutfitWindUpSuit.java | 8 ++--- .../windupsuit/OutfitWindUpSuitBoots.java | 2 +- .../OutfitWindUpSuitChestplate.java | 2 +- .../windupsuit/OutfitWindUpSuitHelmet.java | 2 +- .../windupsuit/OutfitWindUpSuitLeggings.java | 2 +- .../particle/freedom/ParticleFreedom.java | 15 ++++---- .../mineplex/core/gadget/types/Gadget.java | 18 ++++++++++ .../mineplex/core/gadget/types/HatGadget.java | 4 +-- .../core/gadget/types/OutfitGadget.java | 24 ++++++------- 33 files changed, 141 insertions(+), 95 deletions(-) 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/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index e0cc2219b..7eb90e4e2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -363,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)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java index 18afaab78..0da39bfe2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java @@ -22,7 +22,7 @@ public class UnlockCosmeticsCommand extends CommandBase public UnlockCosmeticsCommand(GadgetManager plugin) { - super(plugin, Rank.JNR_DEV, "unlockCosmetics"); + super(plugin, Rank.SNR_MODERATOR, "unlockCosmetics"); _plugin = plugin; } 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 index 40e0e1319..6f3e31ce8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -45,6 +45,7 @@ public class MorphDinnerbone extends MorphGadget SkullMeta skullMeta = (SkullMeta) dinnerboneHead.getItemMeta(); skullMeta.setOwner("Dinnerbone"); dinnerboneHead.setItemMeta(skullMeta); + setDisplayItem(dinnerboneHead); } @Override 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..3953fb217 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 @@ -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/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/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); } } From 7322e05ac4b2574c2646a6207db079d46c57fd6a Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Thu, 22 Dec 2016 18:58:38 -0200 Subject: [PATCH 06/20] Added the custom display item to menus --- .../core/cosmetic/ui/page/GadgetPage.java | 19 +++++++++---------- .../mineplex/core/reward/RewardManager.java | 4 ++++ 2 files changed, 13 insertions(+), 10 deletions(-) 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/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, From bbd695981dbd75c4faf009ba5b32cc39e6346b64 Mon Sep 17 00:00:00 2001 From: samczsun Date: Thu, 22 Dec 2016 21:06:39 -0500 Subject: [PATCH 07/20] Don't summon titles if player is morphed --- .../src/mineplex/core/titles/Titles.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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) { From 4c58e852d068642898fe75802dea6b94b5d08fc8 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Fri, 23 Dec 2016 00:53:01 -0200 Subject: [PATCH 08/20] Fixed a bug with treasure pages after buying a chest --- .../src/mineplex/core/treasure/gui/BuyChestButton.java | 5 ++++- .../src/mineplex/core/treasure/gui/pages/NextPageButton.java | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) 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..4a7ad379b 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,10 @@ 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(); + 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); } } From 7f6f3464a1d7de7a489b945426d6ee0e23c69c66 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Fri, 23 Dec 2016 17:48:37 -0200 Subject: [PATCH 09/20] Fixed chest pages again --- .../src/mineplex/core/treasure/gui/BuyChestButton.java | 1 + 1 file changed, 1 insertion(+) 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 4a7ad379b..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,6 +89,7 @@ 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); + player.closeInventory(); TreasurePage page = new TreasurePage(_page.getTreasureManager(), _page.getTreasureShop(), _page.getTreasureLocation(), _page.getClientManager(), _page.getDonationManager(), _page.getInventoryManager(), _page.getGadgetManager(), player, _page.getActualPage()); From c0afad072388fa3d5b13ab7fd8d0f131179ce876 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Fri, 23 Dec 2016 18:15:26 -0200 Subject: [PATCH 10/20] Fixed morph with lava, water, void and ender pearls --- .../mineplex/core/gadget/GadgetManager.java | 15 +++-- .../core/gadget/event/ItemGadgetUseEvent.java | 31 +++++++++- .../gadget/event/PlayerToggleSwimEvent.java | 9 ++- .../gadget/gadgets/morph/MorphDinnerbone.java | 58 +++++++++++++++---- .../core/gadget/gadgets/morph/MorphSquid.java | 2 +- .../gadgets/morph/managers/SwimManager.java | 25 ++++++++ .../core/gadget/types/ItemGadget.java | 14 +++-- 7 files changed, 130 insertions(+), 24 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 7eb90e4e2..bddc957e7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -1222,15 +1222,22 @@ 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) + { + SwimManager.addPlayerLava(uuid); + SwimManager.removePlayer(uuid); + Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), false, true)); + } 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/morph/MorphDinnerbone.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java index 6f3e31ce8..387f3dee6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -12,8 +12,7 @@ import org.bukkit.Material; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.event.entity.EntityDamageEvent; import com.mojang.authlib.GameProfile; @@ -25,6 +24,9 @@ import mineplex.core.common.util.UtilText; import mineplex.core.disguise.disguises.DisguisePlayer; import mineplex.core.event.StackerEvent; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.ItemGadgetUseEvent; +import mineplex.core.gadget.event.PlayerToggleSwimEvent; +import mineplex.core.gadget.gadgets.item.ItemEtherealPearl; import mineplex.core.gadget.gadgets.morph.managers.UtilMorph; import mineplex.core.gadget.types.MorphGadget; import mineplex.core.utils.UtilGameProfile; @@ -38,14 +40,8 @@ public class MorphDinnerbone extends MorphGadget public MorphDinnerbone(GadgetManager manager) { - super(manager, "Dinnerbone Morph", UtilText.splitLinesToArray(new String[]{C.cGray + "Placeholder"}, LineFormat.LORE), - -14, Material.GLASS, (byte) 0, YearMonth.of(2017, Month.JANUARY)); - // Creates display item - ItemStack dinnerboneHead = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3); - SkullMeta skullMeta = (SkullMeta) dinnerboneHead.getItemMeta(); - skullMeta.setOwner("Dinnerbone"); - dinnerboneHead.setItemMeta(skullMeta); - setDisplayItem(dinnerboneHead); + super(manager, "Over Easy Morph", UtilText.splitLinesToArray(new String[]{C.cGray + "Placeholder"}, LineFormat.LORE), + -14, Material.EGG, (byte) 0, YearMonth.of(2017, Month.JANUARY)); } @Override @@ -120,4 +116,46 @@ public class MorphDinnerbone extends MorphGadget event.setCancelled(true); } + @EventHandler + public void onToggleSwim(PlayerToggleSwimEvent event) + { + if (!isActive(event.getPlayer())) + return; + + // Disables morph if player is swimming or in lava + if (event.isSwimming() || event.isInLava()) + { + disable(event.getPlayer()); + } + } + + @EventHandler + public void onVoid(EntityDamageEvent event) + { + if (event.getEntity() instanceof Player) + { + Player player = (Player) event.getEntity(); + if (isActive(player)) + { + if (event.getCause() == EntityDamageEvent.DamageCause.VOID) + { + disable(player); + } + } + } + } + + @EventHandler + public void useEnderpearl(ItemGadgetUseEvent event) + { + if (event.getGadget() instanceof ItemEtherealPearl) + { + if (isActive(event.getPlayer())) + { + event.setCancelledMessage("You cannot use this item while morphed as " + getName() + "!"); + event.setCancelled(true); + } + } + } + } \ 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 3953fb217..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 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/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()); } From 9fad633b88102f60f1c1437597c0168276945ce3 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Fri, 23 Dec 2016 19:13:50 -0200 Subject: [PATCH 11/20] Ops, lava, not water --- .../src/mineplex/core/gadget/GadgetManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index bddc957e7..92a19810b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -1228,9 +1228,12 @@ public class GadgetManager extends MiniPlugin } else if (material == Material.LAVA || material == Material.STATIONARY_LAVA) { - SwimManager.addPlayerLava(uuid); - SwimManager.removePlayer(uuid); - Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), false, true)); + if (!SwimManager.isInLava(uuid)) + { + SwimManager.addPlayerLava(uuid); + SwimManager.removePlayer(uuid); + Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), true, false)); + } } else { From 675642a1007bb0366b3eaf616bf44130d1571bea Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Fri, 23 Dec 2016 19:53:49 -0200 Subject: [PATCH 12/20] Disable on tp and do not allow mounts --- .../mineplex/core/gadget/GadgetManager.java | 11 +++++++++ .../gadget/gadgets/morph/MorphDinnerbone.java | 24 +++++++++++++++++++ .../core/mount/event/MountActivateEvent.java | 12 ++++++---- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 92a19810b..b2d421ebf 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -1112,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 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 index 387f3dee6..31ce08f54 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -13,13 +13,16 @@ import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerTeleportEvent; import com.mojang.authlib.GameProfile; import mineplex.core.common.Rank; 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.UtilText; import mineplex.core.disguise.disguises.DisguisePlayer; import mineplex.core.event.StackerEvent; @@ -29,6 +32,7 @@ import mineplex.core.gadget.event.PlayerToggleSwimEvent; import mineplex.core.gadget.gadgets.item.ItemEtherealPearl; import mineplex.core.gadget.gadgets.morph.managers.UtilMorph; import mineplex.core.gadget.types.MorphGadget; +import mineplex.core.mount.event.MountActivateEvent; import mineplex.core.utils.UtilGameProfile; public class MorphDinnerbone extends MorphGadget @@ -158,4 +162,24 @@ public class MorphDinnerbone extends MorphGadget } } + @EventHandler + public void activateMount(MountActivateEvent event) + { + if (isActive(event.getPlayer())) + { + event.setCancelled(true); + UtilPlayer.message(event.getPlayer(), F.main("Cosmetics", "You cannot use mounts while morphed as " + getName() + "!")); + } + } + + @EventHandler + public void onTeleport(PlayerTeleportEvent event) + { + if (isActive(event.getPlayer())) + { + disable(event.getPlayer()); + UtilPlayer.message(event.getPlayer(), F.main("Cosmetics", "You were unmorphed from " + getName() + "!")); + } + } + } \ No newline at end of file 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; From 0aec8889fa53c908dd22a8b3abca2607e2d60689 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Fri, 23 Dec 2016 23:56:43 -0200 Subject: [PATCH 13/20] Added lore --- .../mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 index 31ce08f54..86e054a06 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -44,7 +44,11 @@ public class MorphDinnerbone extends MorphGadget public MorphDinnerbone(GadgetManager manager) { - super(manager, "Over Easy Morph", UtilText.splitLinesToArray(new String[]{C.cGray + "Placeholder"}, LineFormat.LORE), + super(manager, "Over Easy Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "This morph lets you walk around in your head. But be careful! While you're upside down some other cosmetics will be disabled.", + "", + C.cRedB + "You cannot right click mobs while using this morph!" + }, LineFormat.LORE), -14, Material.EGG, (byte) 0, YearMonth.of(2017, Month.JANUARY)); } From eacbdfdb0268ffbd010cad829fed8f3426d92799 Mon Sep 17 00:00:00 2001 From: samczsun Date: Sat, 24 Dec 2016 01:46:45 -0500 Subject: [PATCH 14/20] Convert morph to packets --- .../gadget/gadgets/morph/MorphDinnerbone.java | 378 ++++++++++++------ 1 file changed, 253 insertions(+), 125 deletions(-) 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 index 86e054a06..b0e54ba6a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -2,54 +2,73 @@ 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 java.util.function.Consumer; + +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.entity.ArmorStand; +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 org.bukkit.event.EventHandler; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.player.PlayerTeleportEvent; - -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.F; 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.event.StackerEvent; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.ItemGadgetUseEvent; -import mineplex.core.gadget.event.PlayerToggleSwimEvent; -import mineplex.core.gadget.gadgets.item.ItemEtherealPearl; import mineplex.core.gadget.gadgets.morph.managers.UtilMorph; +import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.MorphGadget; -import mineplex.core.mount.event.MountActivateEvent; +import mineplex.core.packethandler.IPacketHandler; +import mineplex.core.packethandler.PacketHandler; +import mineplex.core.packethandler.PacketInfo; import mineplex.core.utils.UtilGameProfile; -public class MorphDinnerbone extends MorphGadget +import static mineplex.core.common.util.UtilServer.runSync; + +public class MorphDinnerbone extends MorphGadget implements IPacketHandler { - - private Map _armorStands = new HashMap<>(); - 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 in your head. But be careful! While you're upside down some other cosmetics will be disabled.", - "", - C.cRedB + "You cannot right click mobs while using this morph!" - }, LineFormat.LORE), + C.cGray + "This morph lets you walk around in your head. But be careful! While you're upside down some other cosmetics will be disabled.", + "", + C.cRedB + "You cannot right click mobs while using this morph!" + }, 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 @@ -58,30 +77,18 @@ public class MorphDinnerbone extends MorphGadget applyArmor(player, message); UtilGameProfile.getProfileByName(NAME, true, requestedProfile -> - { - Consumer skinConsumer = requestedProfileSkin -> - { - SkinData skinData = SkinData.constructFromGameProfile(requestedProfileSkin, true, true); - requestedProfile.getProperties().clear(); - requestedProfile.getProperties().put("textures", skinData.getProperty()); + UtilGameProfile.getProfileByName(player.getName(), true, requestedProfileSkin -> + { + SkinData skinData = SkinData.constructFromGameProfile(requestedProfileSkin, true, true); + requestedProfile.getProperties().clear(); + requestedProfile.getProperties().put("textures", skinData.getProperty()); - DisguisePlayer disguisePlayer = new DisguisePlayer(player, requestedProfile); - disguisePlayer.setSendSkinDataToSelf(false); - disguisePlayer.setReplaceOriginalName(false, 500); - disguisePlayer.showInTabList(true, 0); - UtilMorph.disguise(player, disguisePlayer, Manager); - }; - - UtilGameProfile.getProfileByName(player.getName(), true, skinConsumer); - }); - - ArmorStand nameTag = player.getWorld().spawn(player.getLocation(), ArmorStand.class); - nameTag.setVisible(false); - nameTag.setGravity(false); - nameTag.setSmall(true); - setName(player, nameTag, player.getName(), Manager.getClientManager().Get(player).getRealOrDisguisedRank()); - player.setPassenger(nameTag); - _armorStands.put(player.getUniqueId(), nameTag); + DisguisePlayer disguisePlayer = new DisguisePlayer(player, requestedProfile); + disguisePlayer.setSendSkinDataToSelf(false); + disguisePlayer.setReplaceOriginalName(false, 500); + disguisePlayer.showInTabList(true, 0); + UtilMorph.disguise(player, disguisePlayer, Manager); + })); } @Override @@ -90,16 +97,204 @@ public class MorphDinnerbone extends MorphGadget removeArmor(player); UtilMorph.undisguise(player, Manager.getDisguiseManager()); + } - if (_armorStands.containsKey(player.getUniqueId())) + @Override + public void handle(PacketInfo packetInfo) + { + if (packetInfo.isCancelled()) + return; + + if (packetInfo.getPacket() instanceof PacketPlayOutNamedEntitySpawn) { - _armorStands.get(player.getUniqueId()).remove(); - _armorStands.remove(player.getUniqueId()); + 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 setName(Player player, ArmorStand stand, String name, Rank rank) + 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)) @@ -108,82 +303,15 @@ public class MorphDinnerbone extends MorphGadget } } - stand.setCustomName(name); - stand.setCustomNameVisible(true); + 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; } - - @EventHandler - public void onDismount(StackerEvent event) - { - if (!(event.getEntity() instanceof Player)) - return; - - Player player = (Player) event.getEntity(); - - if (isActive(player)) - event.setCancelled(true); - } - - @EventHandler - public void onToggleSwim(PlayerToggleSwimEvent event) - { - if (!isActive(event.getPlayer())) - return; - - // Disables morph if player is swimming or in lava - if (event.isSwimming() || event.isInLava()) - { - disable(event.getPlayer()); - } - } - - @EventHandler - public void onVoid(EntityDamageEvent event) - { - if (event.getEntity() instanceof Player) - { - Player player = (Player) event.getEntity(); - if (isActive(player)) - { - if (event.getCause() == EntityDamageEvent.DamageCause.VOID) - { - disable(player); - } - } - } - } - - @EventHandler - public void useEnderpearl(ItemGadgetUseEvent event) - { - if (event.getGadget() instanceof ItemEtherealPearl) - { - if (isActive(event.getPlayer())) - { - event.setCancelledMessage("You cannot use this item while morphed as " + getName() + "!"); - event.setCancelled(true); - } - } - } - - @EventHandler - public void activateMount(MountActivateEvent event) - { - if (isActive(event.getPlayer())) - { - event.setCancelled(true); - UtilPlayer.message(event.getPlayer(), F.main("Cosmetics", "You cannot use mounts while morphed as " + getName() + "!")); - } - } - - @EventHandler - public void onTeleport(PlayerTeleportEvent event) - { - if (isActive(event.getPlayer())) - { - disable(event.getPlayer()); - UtilPlayer.message(event.getPlayer(), F.main("Cosmetics", "You were unmorphed from " + getName() + "!")); - } - } - } \ No newline at end of file From 81d769db5b7c5a4f7924df66366be4c54442b625 Mon Sep 17 00:00:00 2001 From: samczsun Date: Sat, 24 Dec 2016 14:18:33 -0500 Subject: [PATCH 15/20] Fix issues regarding disguising --- .../gadget/gadgets/morph/MorphDinnerbone.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) 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 index b0e54ba6a..e67e33474 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -26,6 +26,8 @@ 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; @@ -76,19 +78,22 @@ public class MorphDinnerbone extends MorphGadget implements IPacketHandler { applyArmor(player, message); - UtilGameProfile.getProfileByName(NAME, true, requestedProfile -> - UtilGameProfile.getProfileByName(player.getName(), true, requestedProfileSkin -> - { - SkinData skinData = SkinData.constructFromGameProfile(requestedProfileSkin, true, true); - requestedProfile.getProperties().clear(); - requestedProfile.getProperties().put("textures", skinData.getProperty()); + GameProfile profile = UtilGameProfile.getGameProfile(player); + try + { + UtilGameProfile.changeName(profile, "Dinnerbone"); + } + catch (ReflectiveOperationException e) + { + // Literally should never happen + e.printStackTrace(); + } - DisguisePlayer disguisePlayer = new DisguisePlayer(player, requestedProfile); - disguisePlayer.setSendSkinDataToSelf(false); - disguisePlayer.setReplaceOriginalName(false, 500); - disguisePlayer.showInTabList(true, 0); - UtilMorph.disguise(player, disguisePlayer, Manager); - })); + DisguisePlayer disguisePlayer = new DisguisePlayer(player, profile); + disguisePlayer.setSendSkinDataToSelf(false); + disguisePlayer.setReplaceOriginalName(false, 10); + disguisePlayer.showInTabList(true, 0); + UtilMorph.disguise(player, disguisePlayer, Manager); } @Override From fe8823c134cefb6b164e4f5c152a4d107bc3a58c Mon Sep 17 00:00:00 2001 From: samczsun Date: Sat, 24 Dec 2016 17:38:09 -0500 Subject: [PATCH 16/20] Re-order morphs --- .../Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index b2d421ebf..bb0c257d6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -391,10 +391,10 @@ public class GadgetManager extends MiniPlugin addGadget(new MorphMetalMan(this)); addGadget(new MorphTurkey(this)); addGadget(new MorphChristmasKing(this)); - addGadget(new MorphDinnerbone(this)); // Not in this update //addGadget(new MorphStray(this)); addGadget(new MorphSanta(this)); + addGadget(new MorphDinnerbone(this)); // Particles addGadget(new ParticleFoot(this)); From 10bed92a6acac8f71d0886549f73fde1b38f457a Mon Sep 17 00:00:00 2001 From: samczsun Date: Sat, 24 Dec 2016 17:38:29 -0500 Subject: [PATCH 17/20] Change morph description --- .../mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 index e67e33474..510136908 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphDinnerbone.java @@ -64,9 +64,7 @@ public class MorphDinnerbone extends MorphGadget implements IPacketHandler public MorphDinnerbone(GadgetManager manager) { super(manager, "Over Easy Morph", UtilText.splitLinesToArray(new String[]{ - C.cGray + "This morph lets you walk around in your head. But be careful! While you're upside down some other cosmetics will be disabled.", - "", - C.cRedB + "You cannot right click mobs while using this morph!" + 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)); From de733077545e1d19f87a8ddb2f0b19beeb77668c Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Sun, 25 Dec 2016 15:35:25 -0200 Subject: [PATCH 18/20] Added morph to january ppc prize --- .../src/mineplex/core/powerplayclub/PowerPlayClubRewards.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 246db919d960ce3eaee290a793f4f1725fe0f85e Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Sun, 25 Dec 2016 15:35:53 -0200 Subject: [PATCH 19/20] Changed permissions for Unlock Cosmetics --- .../mineplex/core/gadget/commands/UnlockCosmeticsCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java index 0da39bfe2..18afaab78 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java @@ -22,7 +22,7 @@ public class UnlockCosmeticsCommand extends CommandBase public UnlockCosmeticsCommand(GadgetManager plugin) { - super(plugin, Rank.SNR_MODERATOR, "unlockCosmetics"); + super(plugin, Rank.JNR_DEV, "unlockCosmetics"); _plugin = plugin; } From c7d5e149f8eab819d6c447699bc0a3ecefb47ba7 Mon Sep 17 00:00:00 2001 From: cnr Date: Wed, 28 Dec 2016 13:50:04 -0700 Subject: [PATCH 20/20] Fix NullPointerException in speed builders --- .../game/arcade/game/games/speedbuilders/SpeedBuilders.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index c03f7f326..a1c7510d1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -64,6 +64,7 @@ import org.bukkit.entity.Item; 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.BlockBurnEvent; import org.bukkit.event.block.BlockFadeEvent; import org.bukkit.event.block.BlockFormEvent; @@ -1724,6 +1725,11 @@ public class SpeedBuilders extends SoloGame event.setCancelled(true); return; } + + if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.LEFT_CLICK_BLOCK) + { + return; + } Block block = event.getClickedBlock().getRelative(event.getBlockFace());