Added rank-based win effects
This commit is contained in:
parent
f8566437d5
commit
08150b2c0f
@ -78,6 +78,11 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
}
|
||||
|
||||
protected void addGadget(Gadget gadget, int slot)
|
||||
{
|
||||
addGadget(gadget, slot, false);
|
||||
}
|
||||
|
||||
protected void addGadget(Gadget gadget, int slot, boolean locked)
|
||||
{
|
||||
|
||||
List<String> itemLore = new ArrayList<String>();
|
||||
@ -102,7 +107,7 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
itemLore.add(" " + (gadget.getSet().isActive(getPlayer()) ? C.cGreen : C.cGray) + bonus);
|
||||
}
|
||||
|
||||
if (!gadget.ownsGadget(getPlayer()))
|
||||
if (!gadget.ownsGadget(getPlayer()) || locked)
|
||||
{
|
||||
if (gadget.getCost(GlobalCurrency.TREASURE_SHARD) == -1)
|
||||
{
|
||||
@ -261,7 +266,7 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
ItemMeta im = item.getItemMeta();
|
||||
im.setDisplayName(C.cGreen + C.Bold + gadget.getName());
|
||||
|
||||
if (gadget.ownsGadget(getPlayer()))
|
||||
if (gadget.ownsGadget(getPlayer()) && !locked)
|
||||
{
|
||||
if (gadget.getActive().contains(getPlayer()))
|
||||
{
|
||||
@ -320,7 +325,7 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
}
|
||||
|
||||
//Standard
|
||||
if (gadget.ownsGadget(getPlayer()))
|
||||
if (gadget.ownsGadget(getPlayer()) && !locked)
|
||||
{
|
||||
ItemStack gadgetItemStack;
|
||||
/*if (gadget instanceof MorphWitch)
|
||||
|
@ -5,10 +5,12 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.cosmetic.CosmeticManager;
|
||||
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.WinEffectRankBased;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.shop.item.IButton;
|
||||
@ -30,6 +32,9 @@ public class WinEffectPage extends GadgetPage
|
||||
|
||||
for (Gadget gadget : getPlugin().getGadgetManager().getGadgets(GadgetType.WIN_EFFECT))
|
||||
{
|
||||
if (gadget instanceof WinEffectRankBased)
|
||||
continue;
|
||||
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.WIN_EFFECT) == gadget)
|
||||
@ -41,6 +46,31 @@ public class WinEffectPage extends GadgetPage
|
||||
slot += 2;
|
||||
}
|
||||
|
||||
// Adds rank based win effects
|
||||
Rank maxRank = WinEffectRankBased.getHighestRankForPlayer(getPlayer());
|
||||
|
||||
for (WinEffectRankBased.WinEffectType winEffectType : WinEffectRankBased.WinEffectType.values())
|
||||
{
|
||||
Rank originalRank = maxRank;
|
||||
|
||||
if (maxRank.equals(Rank.ALL))
|
||||
maxRank = Rank.ULTRA;
|
||||
|
||||
WinEffectRankBased winEffectRankBased = getPlugin().getGadgetManager().getRankBasedWinEffect(winEffectType, maxRank);
|
||||
if (winEffectRankBased != null)
|
||||
{
|
||||
addGadget(winEffectRankBased, slot, (originalRank.equals(Rank.ALL)));
|
||||
|
||||
if (winEffectRankBased.isActive(getPlayer()))
|
||||
addGlow(slot);
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17)
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
{
|
||||
public void onClick(Player player, ClickType clickType)
|
||||
|
@ -29,6 +29,7 @@ import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.achievement.AchievementManager;
|
||||
import mineplex.core.blockrestore.BlockRestore;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilEnt;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
@ -208,6 +209,12 @@ import mineplex.core.gadget.gadgets.wineffect.WinEffectPodium;
|
||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectRiseOfTheElderGuardian;
|
||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectSnowTrails;
|
||||
import mineplex.core.gadget.gadgets.wineffect.WinEffectWinterWarfare;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.WinEffectRankBased;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffectRankEternal;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffectRankHero;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffectRankLegend;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffectRankTitan;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffectRankUltra;
|
||||
import mineplex.core.gadget.persistence.UserGadgetPersistence;
|
||||
import mineplex.core.gadget.set.SetCandyCane;
|
||||
import mineplex.core.gadget.set.SetCupidsLove;
|
||||
@ -276,6 +283,7 @@ public class GadgetManager extends MiniPlugin
|
||||
private SoulManager _soulManager;
|
||||
|
||||
private Map<GadgetType, List<Gadget>> _gadgets;
|
||||
private List<WinEffectRankBased> _rankBasedWinEffects;
|
||||
|
||||
private final Map<Player, Long> _lastMove = new HashMap<>();
|
||||
private final Map<Player, Map<GadgetType, Gadget>> _playerActiveGadgetMap = new HashMap<>();
|
||||
@ -357,6 +365,7 @@ public class GadgetManager extends MiniPlugin
|
||||
private void createGadgets()
|
||||
{
|
||||
_gadgets = new HashMap<>();
|
||||
_rankBasedWinEffects = new ArrayList<>();
|
||||
|
||||
// Items
|
||||
addGadget(new ItemEtherealPearl(this));
|
||||
@ -538,6 +547,13 @@ public class GadgetManager extends MiniPlugin
|
||||
addGadget(new WinEffectWinterWarfare(this));
|
||||
addGadget(new WinEffectLoveIsABattlefield(this));
|
||||
|
||||
// Rank based win effects
|
||||
addGadget(new WinEffectRankUltra(this));
|
||||
addGadget(new WinEffectRankHero(this));
|
||||
addGadget(new WinEffectRankLegend(this));
|
||||
addGadget(new WinEffectRankTitan(this));
|
||||
addGadget(new WinEffectRankEternal(this));
|
||||
|
||||
// Music
|
||||
addGadget(new MusicGadget(this, "13 Disc", new String[] {""}, -2, 2256, 178000));
|
||||
addGadget(new MusicGadget(this, "Cat Disc", new String[] {""}, -2, 2257, 185000));
|
||||
@ -669,6 +685,9 @@ public class GadgetManager extends MiniPlugin
|
||||
_gadgets.put(gadget.getGadgetType(), new ArrayList<>());
|
||||
|
||||
_gadgets.get(gadget.getGadgetType()).add(gadget);
|
||||
|
||||
if (gadget instanceof WinEffectRankBased)
|
||||
_rankBasedWinEffects.add((WinEffectRankBased) gadget);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -816,6 +835,18 @@ public class GadgetManager extends MiniPlugin
|
||||
return null;
|
||||
}
|
||||
|
||||
public WinEffectRankBased getRankBasedWinEffect(WinEffectRankBased.WinEffectType winEffectType, Rank rank)
|
||||
{
|
||||
for (WinEffectRankBased winEffectRankBased : _rankBasedWinEffects)
|
||||
{
|
||||
if (winEffectRankBased.getWinEffectType().equals(winEffectType) && winEffectRankBased.getRank().equals(rank))
|
||||
{
|
||||
return winEffectRankBased;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Disallows two armor gadgets in same slot.
|
||||
public void removeOutfit(Player player, ArmorSlot slot)
|
||||
{
|
||||
|
@ -0,0 +1,113 @@
|
||||
package mineplex.core.gadget.gadgets.wineffect.rankrooms;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.Managers;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.WinEffectGadget;
|
||||
|
||||
/**
|
||||
* Helper class to create win effects based on ranks
|
||||
*/
|
||||
public abstract class WinEffectRankBased extends WinEffectGadget
|
||||
{
|
||||
|
||||
private Rank _rank;
|
||||
private WinEffectType _winEffectType;
|
||||
|
||||
/**
|
||||
* @param manager The gadget manager
|
||||
* @param rank The rank needed for the win room
|
||||
* @param winEffectType The win effect type, used to display in menus
|
||||
* @param alternativeSalepackageNames
|
||||
*/
|
||||
public WinEffectRankBased(GadgetManager manager, Rank rank, WinEffectType winEffectType, String... alternativeSalepackageNames)
|
||||
{
|
||||
super(manager, winEffectType.getName() + " " + rank.getRawTag(), winEffectType.getLore(),
|
||||
(rank.equals(Rank.ETERNAL) ? -15 : (rank.equals(Rank.TITAN) ? -13 : (rank.equals(Rank.LEGEND) ? -12 : (rank.equals(Rank.HERO) ? -11 : -10)))),
|
||||
winEffectType.getMaterial(), winEffectType.getData(), true, alternativeSalepackageNames);
|
||||
_rank = rank;
|
||||
_winEffectType = winEffectType;
|
||||
_schematicName = winEffectType.getSchematic().replace("%r%", rank.getRawTag());
|
||||
}
|
||||
|
||||
public Rank getRank()
|
||||
{
|
||||
return _rank;
|
||||
}
|
||||
|
||||
public WinEffectType getWinEffectType()
|
||||
{
|
||||
return _winEffectType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the highest possible rank for the player
|
||||
* @param player The player
|
||||
* @return The highest rank for that player or null if GadgetManager isn't loaded
|
||||
*/
|
||||
public static Rank getHighestRankForPlayer(Player player)
|
||||
{
|
||||
GadgetManager gadgetManager = Managers.get(GadgetManager.class);
|
||||
if (gadgetManager != null)
|
||||
{
|
||||
Rank rank = gadgetManager.getClientManager().Get(player).GetRank();
|
||||
if (rank.has(Rank.ETERNAL))
|
||||
return Rank.ETERNAL;
|
||||
else
|
||||
return rank;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public enum WinEffectType
|
||||
{
|
||||
RANK_WIN_EFFECT("Rank Win Effect", UtilText.splitLinesToArray(new String[]{C.cGray + "Placeholder"}, LineFormat.LORE), Material.GLASS, (byte) 0, "WinRank%r%");
|
||||
|
||||
private String _name;
|
||||
private String[] _lore;
|
||||
private Material _material;
|
||||
private byte _data;
|
||||
private String _schematic;
|
||||
|
||||
WinEffectType(String name, String[] lore, Material material, byte data, String schematic)
|
||||
{
|
||||
_name = name;
|
||||
_lore = lore;
|
||||
_material = material;
|
||||
_data = data;
|
||||
_schematic = schematic;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
public String[] getLore()
|
||||
{
|
||||
return _lore;
|
||||
}
|
||||
|
||||
public Material getMaterial()
|
||||
{
|
||||
return _material;
|
||||
}
|
||||
|
||||
public byte getData()
|
||||
{
|
||||
return _data;
|
||||
}
|
||||
|
||||
public String getSchematic()
|
||||
{
|
||||
return _schematic;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.WinEffectRankBased;
|
||||
|
||||
public class WinEffectRankEternal extends WinEffectRankBased
|
||||
{
|
||||
|
||||
public WinEffectRankEternal(GadgetManager manager)
|
||||
{
|
||||
super(manager, Rank.ETERNAL, WinEffectType.RANK_WIN_EFFECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void play()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect eternal: " + getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect eternal: " + getName());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.WinEffectRankBased;
|
||||
|
||||
public class WinEffectRankHero extends WinEffectRankBased
|
||||
{
|
||||
|
||||
public WinEffectRankHero(GadgetManager manager)
|
||||
{
|
||||
super(manager, Rank.HERO, WinEffectType.RANK_WIN_EFFECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void play()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect hero: " + getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect hero: " + getName());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.WinEffectRankBased;
|
||||
|
||||
public class WinEffectRankLegend extends WinEffectRankBased
|
||||
{
|
||||
|
||||
public WinEffectRankLegend(GadgetManager manager)
|
||||
{
|
||||
super(manager, Rank.LEGEND, WinEffectType.RANK_WIN_EFFECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void play()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect legend: " + getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect legend: " + getName());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.WinEffectRankBased;
|
||||
|
||||
public class WinEffectRankTitan extends WinEffectRankBased
|
||||
{
|
||||
|
||||
public WinEffectRankTitan(GadgetManager manager)
|
||||
{
|
||||
super(manager, Rank.TITAN, WinEffectType.RANK_WIN_EFFECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void play()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect titan: " + getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect titan: " + getName());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.WinEffectRankBased;
|
||||
|
||||
public class WinEffectRankUltra extends WinEffectRankBased
|
||||
{
|
||||
|
||||
public WinEffectRankUltra(GadgetManager manager)
|
||||
{
|
||||
super(manager, Rank.ULTRA, WinEffectType.RANK_WIN_EFFECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void play()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect ultra: " + getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish()
|
||||
{
|
||||
Bukkit.broadcastMessage("Playing effect win effect ultra: " + getName());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user