Add Game Cosmetics and the 4 basic hero morphs

This commit is contained in:
Sam 2017-07-28 20:10:10 +01:00
parent 94ea5c4134
commit dd675b407a
15 changed files with 1354 additions and 206 deletions

View File

@ -1,10 +1,9 @@
package mineplex.core.cosmetic.ui.button.open;
import org.bukkit.entity.Player;
import mineplex.core.cosmetic.ui.page.gamemodifiers.GameModifierPage;
import mineplex.core.cosmetic.ui.page.Menu;
import mineplex.core.cosmetic.ui.page.gamemodifiers.GameCosmeticsPage;
import mineplex.core.gadget.types.Gadget;
import org.bukkit.entity.Player;
public class OpenGameModifiers extends OpenPageButton
{
@ -16,6 +15,6 @@ public class OpenGameModifiers extends OpenPageButton
@Override
protected void leftClick(Player player)
{
getMenu().getShop().openPageForPlayer(player, new GameModifierPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(),player));
getMenu().getShop().openPageForPlayer(player, new GameCosmeticsPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(),player));
}
}

View File

@ -0,0 +1,75 @@
package mineplex.core.cosmetic.ui.page.gamemodifiers;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilUI;
import mineplex.core.cosmetic.CosmeticManager;
import mineplex.core.cosmetic.ui.CosmeticShop;
import mineplex.core.cosmetic.ui.page.GadgetPage;
import mineplex.core.donation.DonationManager;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticType;
import mineplex.core.gadget.types.GameModifierGadget;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.shop.item.ShopItem;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import java.util.List;
public class GameCosmeticCategoryPage extends GadgetPage
{
private final List<GameCosmeticCategory> _categories;
private boolean _buildPage;
public GameCosmeticCategoryPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player, GameCosmeticType type, List<GameCosmeticCategory> categories)
{
super(plugin, shop, clientManager, donationManager, type.getName(), player);
_categories = categories;
_buildPage = true;
buildPage();
}
@Override
protected void buildPage()
{
if (!_buildPage)
{
return;
}
int[] slots = UtilUI.getIndicesFor(_categories.size(), 2);
int index = 0;
for (GameCosmeticCategory category : _categories)
{
int own = 0;
int total = 0;
for (GameModifierGadget gadget : category.getGadgets())
{
if (gadget.ownsGadget(getPlayer()))
{
own++;
}
total++;
}
ItemBuilder builder = new ItemBuilder(category.getItemStack());
builder.setTitle(C.cGreenB + category.getCategoryName());
builder.addLore(
"",
C.cWhite + "You own " + own + "/" + total,
"",
C.cGreen + "Left-Click to view " + category.getCategoryName() + " cosmetics"
);
addButton(slots[index++], builder.build(), (player, clickType) -> getShop().openPageForPlayer(player, new GameCosmeticGadgetPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), category.getCategoryName(), player, this, category)));
}
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), new GameCosmeticsPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)));
}
}

View File

@ -0,0 +1,55 @@
package mineplex.core.cosmetic.ui.page.gamemodifiers;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.util.C;
import mineplex.core.cosmetic.CosmeticManager;
import mineplex.core.cosmetic.ui.CosmeticShop;
import mineplex.core.cosmetic.ui.page.GadgetPage;
import mineplex.core.donation.DonationManager;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory;
import mineplex.core.gadget.types.GameModifierGadget;
import mineplex.core.shop.item.ShopItem;
import org.bukkit.Material;
import org.bukkit.entity.Player;
public class GameCosmeticGadgetPage extends GadgetPage
{
private final GameCosmeticCategoryPage _previousMenu;
private final GameCosmeticCategory _category;
private boolean _buildPage;
public GameCosmeticGadgetPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, GameCosmeticCategoryPage previousMenu, GameCosmeticCategory category)
{
super(plugin, shop, clientManager, donationManager, name, player);
_previousMenu = previousMenu;
_category = category;
_buildPage = true;
buildPage();
}
@Override
protected void buildPage()
{
if (!_buildPage)
{
return;
}
int slot = 10;
for (GameModifierGadget gadget : _category.getGadgets())
{
addGadget(gadget, slot);
if (++slot % 9 == 8)
{
slot += 2;
}
}
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), _previousMenu));
}
}

View File

@ -0,0 +1,75 @@
package mineplex.core.cosmetic.ui.page.gamemodifiers;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilUI;
import mineplex.core.cosmetic.CosmeticManager;
import mineplex.core.cosmetic.ui.CosmeticShop;
import mineplex.core.cosmetic.ui.page.GadgetPage;
import mineplex.core.cosmetic.ui.page.Menu;
import mineplex.core.donation.DonationManager;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticManager;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticType;
import mineplex.core.gadget.types.GameModifierGadget;
import mineplex.core.game.GameDisplay;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.shop.item.ShopItem;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class GameCosmeticsPage extends GadgetPage
{
public GameCosmeticsPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
{
super(plugin, shop, clientManager, donationManager, "Game Cosmetics", player);
}
@Override
protected void buildPage()
{
GameCosmeticManager manager = getPlugin().getGadgetManager().getGameCosmeticManager();
Map<GameCosmeticType, List<GameCosmeticCategory>> cosmetics = manager.getTypes();
int[] slots = UtilUI.getIndicesFor(cosmetics.size(), 2);
int index = 0;
for (Entry<GameCosmeticType, List<GameCosmeticCategory>> entry : cosmetics.entrySet())
{
int own = 0;
int total = 0;
for (GameCosmeticCategory category : entry.getValue())
{
for (GameModifierGadget gadget : category.getGadgets())
{
if (gadget.ownsGadget(getPlayer()))
{
own++;
}
total++;
}
}
GameDisplay display = entry.getKey().getGame();
ItemBuilder builder = new ItemBuilder(display.getMaterial(), display.getMaterialData());
builder.setTitle(C.cGreenB + display.getName());
builder.addLore(
"",
C.cWhite + "You own " + own + "/" + total,
"",
C.cGreen + "Left-Click to view " + display.getName() + "'s cosmetics"
);
addButton(slots[index++], builder.build(), (player, clickType) -> getShop().openPageForPlayer(player, new GameCosmeticCategoryPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), player, entry.getKey(), entry.getValue())));
}
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)));
}
}

View File

@ -1,51 +1,11 @@
package mineplex.core.gadget;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.function.Predicate;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailRedWhite;
import mineplex.core.gadget.gadgets.death.DeathMapleLeaf;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMaple;
import mineplex.core.gadget.gadgets.flag.FlagType;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticManager;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticType;
import mineplex.core.gadget.gadgets.morph.MorphBobRoss;
import mineplex.core.gadget.gadgets.morph.MorphFreedomFighter;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleAuraNiceness;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleCanadian;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedomFireworks;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleStarSpangled;
import mineplex.core.gadget.set.SetCanadian;
import mineplex.core.gadget.types.FlagGadget;
import mineplex.core.game.GameDisplay;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.plugin.java.JavaPlugin;
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.skin.SkinData;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath;
@ -62,50 +22,57 @@ import mineplex.core.gadget.event.GadgetCollideEntityEvent;
import mineplex.core.gadget.event.GadgetEnableEvent;
import mineplex.core.gadget.event.PlayerToggleSwimEvent;
import mineplex.core.gadget.event.TauntCommandEvent;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailBlood;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailConfetti;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCupid;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEmerald;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEnchant;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFreedom;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailHalloween;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailStorm;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailMusic;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailConfetti;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailRedWhite;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailShadow;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailSpring;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailStorm;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailTitan;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailBlood;
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEnchant;
import mineplex.core.gadget.gadgets.balloons.BalloonItem;
import mineplex.core.gadget.gadgets.balloons.BalloonType;
import mineplex.core.gadget.gadgets.death.DeathBlood;
import mineplex.core.gadget.gadgets.death.DeathCandyCane;
import mineplex.core.gadget.gadgets.death.DeathPresentDanger;
import mineplex.core.gadget.gadgets.death.DeathCupidsBrokenHeart;
import mineplex.core.gadget.gadgets.death.DeathEmerald;
import mineplex.core.gadget.gadgets.death.DeathEnchant;
import mineplex.core.gadget.gadgets.death.DeathFreedom;
import mineplex.core.gadget.gadgets.death.DeathFrostLord;
import mineplex.core.gadget.gadgets.death.DeathStorm;
import mineplex.core.gadget.gadgets.death.DeathMapleLeaf;
import mineplex.core.gadget.gadgets.death.DeathMusic;
import mineplex.core.gadget.gadgets.death.DeathPinataBurst;
import mineplex.core.gadget.gadgets.death.DeathPresentDanger;
import mineplex.core.gadget.gadgets.death.DeathShadow;
import mineplex.core.gadget.gadgets.death.DeathSpring;
import mineplex.core.gadget.gadgets.death.DeathStorm;
import mineplex.core.gadget.gadgets.death.DeathTitan;
import mineplex.core.gadget.gadgets.death.DeathBlood;
import mineplex.core.gadget.gadgets.death.DeathEnchant;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCupidsWings;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEmerald;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEnchant;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFirecracker;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFreedom;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpHalloween;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpStorm;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMaple;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMusic;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFirecracker;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpShadow;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpSpring;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpStorm;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEnchant;
import mineplex.core.gadget.gadgets.flag.FlagType;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticManager;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticType;
import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType;
import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.GameModifierMount;
import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.MountType;
@ -143,6 +110,7 @@ import mineplex.core.gadget.gadgets.morph.MorphAwkwardRabbit;
import mineplex.core.gadget.gadgets.morph.MorphBat;
import mineplex.core.gadget.gadgets.morph.MorphBlaze;
import mineplex.core.gadget.gadgets.morph.MorphBlock;
import mineplex.core.gadget.gadgets.morph.MorphBobRoss;
import mineplex.core.gadget.gadgets.morph.MorphBunny;
import mineplex.core.gadget.gadgets.morph.MorphChicken;
import mineplex.core.gadget.gadgets.morph.MorphChristmasKing;
@ -150,6 +118,7 @@ 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.MorphFreedomFighter;
import mineplex.core.gadget.gadgets.morph.MorphGoldPot;
import mineplex.core.gadget.gadgets.morph.MorphGrimReaper;
import mineplex.core.gadget.gadgets.morph.MorphLoveDoctor;
@ -168,6 +137,10 @@ import mineplex.core.gadget.gadgets.morph.MorphWitch;
import mineplex.core.gadget.gadgets.morph.MorphWither;
import mineplex.core.gadget.gadgets.morph.managers.SoulManager;
import mineplex.core.gadget.gadgets.morph.managers.SwimManager;
import mineplex.core.gadget.gadgets.morph.moba.MorphAnath;
import mineplex.core.gadget.gadgets.morph.moba.MorphDana;
import mineplex.core.gadget.gadgets.morph.moba.MorphDevon;
import mineplex.core.gadget.gadgets.morph.moba.MorphHattori;
import mineplex.core.gadget.gadgets.outfit.OutfitTeam;
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitBoots;
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitChestplate;
@ -186,13 +159,22 @@ import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksChestplate
import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksHat;
import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksLeggings;
import mineplex.core.gadget.gadgets.outfit.windupsuit.OutfitWindUpSuitBoosterManager;
import mineplex.core.gadget.gadgets.particle.ParticleBlood;
import mineplex.core.gadget.gadgets.particle.ParticleCandyCane;
import mineplex.core.gadget.gadgets.particle.ParticleChristmasTree;
import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes;
import mineplex.core.gadget.gadgets.particle.ParticleEmerald;
import mineplex.core.gadget.gadgets.particle.ParticleEnchant;
import mineplex.core.gadget.gadgets.particle.ParticleFairy;
import mineplex.core.gadget.gadgets.particle.ParticleFireRings;
import mineplex.core.gadget.gadgets.particle.king.CastleManager;
import mineplex.core.gadget.gadgets.particle.king.ParticleKing;
import mineplex.core.gadget.gadgets.particle.ParticleFoot;
import mineplex.core.gadget.gadgets.particle.ParticleFrostLord;
import mineplex.core.gadget.gadgets.particle.ParticleHeart;
import mineplex.core.gadget.gadgets.particle.ParticleLegend;
import mineplex.core.gadget.gadgets.particle.ParticleMusic;
import mineplex.core.gadget.gadgets.particle.ParticlePartyTime;
import mineplex.core.gadget.gadgets.particle.ParticleRain;
import mineplex.core.gadget.gadgets.particle.ParticleTitan;
import mineplex.core.gadget.gadgets.particle.ParticleWingsAngel;
import mineplex.core.gadget.gadgets.particle.ParticleWingsBee;
import mineplex.core.gadget.gadgets.particle.ParticleWingsDemons;
@ -200,19 +182,14 @@ import mineplex.core.gadget.gadgets.particle.ParticleWingsInfernal;
import mineplex.core.gadget.gadgets.particle.ParticleWingsLove;
import mineplex.core.gadget.gadgets.particle.ParticleWingsPixie;
import mineplex.core.gadget.gadgets.particle.ParticleYinYang;
import mineplex.core.gadget.gadgets.particle.ParticleCandyCane;
import mineplex.core.gadget.gadgets.particle.ParticleHeart;
import mineplex.core.gadget.gadgets.particle.ParticleEmerald;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleAuraNiceness;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleCanadian;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedom;
import mineplex.core.gadget.gadgets.particle.ParticleFrostLord;
import mineplex.core.gadget.gadgets.particle.ParticleRain;
import mineplex.core.gadget.gadgets.particle.ParticleMusic;
import mineplex.core.gadget.gadgets.particle.ParticlePartyTime;
import mineplex.core.gadget.gadgets.particle.ParticleFoot;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedomFireworks;
import mineplex.core.gadget.gadgets.particle.freedom.ParticleStarSpangled;
import mineplex.core.gadget.gadgets.particle.king.CastleManager;
import mineplex.core.gadget.gadgets.particle.king.ParticleKing;
import mineplex.core.gadget.gadgets.particle.spring.ParticleSpringHalo;
import mineplex.core.gadget.gadgets.particle.ParticleTitan;
import mineplex.core.gadget.gadgets.particle.ParticleBlood;
import mineplex.core.gadget.gadgets.particle.ParticleEnchant;
import mineplex.core.gadget.gadgets.taunts.BlowAKissTaunt;
import mineplex.core.gadget.gadgets.taunts.EternalTaunt;
import mineplex.core.gadget.gadgets.taunts.RainbowTaunt;
@ -234,6 +211,7 @@ import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffect
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.SetCanadian;
import mineplex.core.gadget.set.SetCandyCane;
import mineplex.core.gadget.set.SetCupidsLove;
import mineplex.core.gadget.set.SetEmerald;
@ -255,6 +233,7 @@ import mineplex.core.gadget.types.ArrowEffectGadget;
import mineplex.core.gadget.types.BalloonGadget;
import mineplex.core.gadget.types.DeathEffectGadget;
import mineplex.core.gadget.types.DoubleJumpEffectGadget;
import mineplex.core.gadget.types.FlagGadget;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GadgetSet;
import mineplex.core.gadget.types.GadgetType;
@ -268,10 +247,12 @@ import mineplex.core.gadget.types.OutfitGadget.ArmorSlot;
import mineplex.core.gadget.types.ParticleGadget;
import mineplex.core.gadget.types.TauntGadget;
import mineplex.core.gadget.types.WinEffectGadget;
import mineplex.core.game.GameDisplay;
import mineplex.core.hologram.HologramManager;
import mineplex.core.incognito.IncognitoManager;
import mineplex.core.incognito.events.IncognitoStatusChangeEvent;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.mount.MountManager;
import mineplex.core.mount.event.MountActivateEvent;
import mineplex.core.packethandler.PacketHandler;
@ -280,6 +261,31 @@ import mineplex.core.pet.custom.CustomPet;
import mineplex.core.preferences.PreferencesManager;
import mineplex.core.projectile.ProjectileManager;
import mineplex.core.treasure.TreasureManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.function.Predicate;
public class GadgetManager extends MiniPlugin
{
@ -475,6 +481,10 @@ public class GadgetManager extends MiniPlugin
addGadget(new MorphAwkwardRabbit(this));
addGadget(new MorphBobRoss(this, _hologramManager));
addGadget(new MorphFreedomFighter(this));
addGadget(new MorphHattori(this));
addGadget(new MorphDevon(this));
addGadget(new MorphAnath(this));
addGadget(new MorphDana(this));
// Particles
addGadget(new ParticleFoot(this));
@ -604,39 +614,6 @@ public class GadgetManager extends MiniPlugin
addGadget(new MusicGadget(this, "Strad Disc", new String[] {""}, -2, 2264, 188000));
addGadget(new MusicGadget(this, "Ward Disc", new String[] {""}, -2, 2265, 251000));
addGadget(new MusicGadget(this, "Wait Disc", new String[] {""}, -2, 2267, 238000));
// Game Modifiers
// MineStrike
/*addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.P250_Muertos, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.CZ75_Auto_Tigris, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.Desert_Eagle_Blaze, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.Nova_Koi, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.XM1014_Tranquility, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.PP_Bizon_Streak, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.P90_Asiimov, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.SSG_08_Blood_in_the_Water, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.AWP_Asiimov, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.Knife_M9_Bayonette_Fade, -2));
addGadget(new GameModifierMineStrikeSkin(this, ));
//Blue only
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.P2000_Fire_Elemental, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.FAMAS_Pulse, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.M4A4_Howl, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.Steyr_AUG_Torque, -2));
//Red only
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.Glock_18_Fade, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.Galil_AR_Eco, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.AK_47_Vulcan, -2));
addGadget(new GameModifierMineStrikeSkin(this, MineStrikeSkin.SG553_Pulse, -2));*/
for (MineStrikeSkin mineStrikeSkin : MineStrikeSkin.values())
{
addGadget(new GameModifierMineStrikeSkin(this, mineStrikeSkin, -2));
}
// Survival Games
/* for (KitModifier kitModifier : KitModifier.values())
@ -680,22 +657,104 @@ public class GadgetManager extends MiniPlugin
addGadget(new GameModifierMount(this, mount));
}
new GameCosmeticType(this, GameDisplay.MOBA.getName(), GameDisplay.MOBA)
new GameCosmeticType(this, GameDisplay.MineStrike)
{
@Override
public void addCategories()
{
new GameCosmeticCategory(this, "Hero Skins")
new GameCosmeticCategory(this, "Pistol", new ItemStack(Material.NETHER_STALK))
{
@Override
public void addGadgets()
{
for (MineStrikeSkin mineStrikeSkin : MineStrikeSkin.getByCategory(1))
{
addGameGadget(new GameModifierMineStrikeSkin(getManager(), mineStrikeSkin, -2));
}
}
};
new GameCosmeticCategory(this, "Shotgun", new ItemBuilder(Material.INK_SACK, (byte) 14).build())
{
@Override
public void addGadgets()
{
for (MineStrikeSkin mineStrikeSkin : MineStrikeSkin.getByCategory(2))
{
addGameGadget(new GameModifierMineStrikeSkin(getManager(), mineStrikeSkin, -2));
}
}
};
new GameCosmeticCategory(this, "SMG", new ItemBuilder(Material.INK_SACK, (byte) 4).build())
{
@Override
public void addGadgets()
{
for (MineStrikeSkin mineStrikeSkin : MineStrikeSkin.getByCategory(3))
{
addGameGadget(new GameModifierMineStrikeSkin(getManager(), mineStrikeSkin, -2));
}
}
};
new GameCosmeticCategory(this, "Rifle", new ItemBuilder(Material.INK_SACK, (byte) 7).build())
{
@Override
public void addGadgets()
{
for (MineStrikeSkin mineStrikeSkin : MineStrikeSkin.getByCategory(4))
{
addGameGadget(new GameModifierMineStrikeSkin(getManager(), mineStrikeSkin, -2));
}
}
};
new GameCosmeticCategory(this, "Knife", new ItemStack(Material.DIAMOND_SWORD))
{
@Override
public void addGadgets()
{
for (MineStrikeSkin mineStrikeSkin : MineStrikeSkin.getByCategory(5))
{
addGameGadget(new GameModifierMineStrikeSkin(getManager(), mineStrikeSkin, -2));
}
}
};
}
};
new GameCosmeticType(this, GameDisplay.MOBA)
{
@Override
public void addCategories()
{
new GameCosmeticCategory(this,"Hero Skins", SkinData.HATTORI.getSkull())
{
@Override
public void addGadgets()
{
}
};
new GameCosmeticCategory(this,"Taunts", new ItemStack(Material.LAVA_BUCKET))
{
@Override
public void addGadgets()
{
}
};
new GameCosmeticCategory(this,"Base Decorations", new ItemStack(Material.WOOD_DOOR))
{
@Override
public void addGadgets()
{
}
};
new GameCosmeticCategory(this,"Shop Morph", SkinData.HATTORI.getSkull())
{
@Override
public void addGadgets()
{
}
};
}
};
for (GadgetType gadgetType : GadgetType.values())
{
if (!_gadgets.containsKey(gadgetType))
@ -739,7 +798,7 @@ public class GadgetManager extends MiniPlugin
_sets.add(set);
}
private void addGadget(Gadget gadget)
public void addGadget(Gadget gadget)
{
if (!_gadgets.containsKey(gadget.getGadgetType()))
_gadgets.put(gadget.getGadgetType(), new ArrayList<>());
@ -1350,7 +1409,7 @@ public class GadgetManager extends MiniPlugin
Gadget gadget = event.getGadget();
if (gadget != null)
{
String value = "disabled", key = "";
String value = "disabled", key;
GadgetType gadgetType = gadget.getGadgetType();
switch (gadgetType)
{

View File

@ -1,7 +1,9 @@
package mineplex.core.gadget.gadgets.gamemodifiers;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GameModifierGadget;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
@ -13,16 +15,41 @@ public abstract class GameCosmeticCategory
private final GadgetManager _manager;
private final String _categoryName;
private final List<GameModifierGadget> _gadgets;
private final ItemStack _itemStack;
public GameCosmeticCategory(GameCosmeticType type, String categoryName)
public GameCosmeticCategory(GameCosmeticType type, String categoryName, ItemStack itemStack)
{
_type = type;
_manager = type.getManager();
_categoryName = categoryName;
_gadgets = new ArrayList<>();
_itemStack = itemStack;
addGadgets();
type.addCategory(this);
}
public abstract void addGadgets();
protected void addGameGadget(GameModifierGadget gadget)
{
_gadgets.add(gadget);
_manager.addGadget(gadget);
}
public String getCategoryName()
{
return _categoryName;
}
public List<GameModifierGadget> getGadgets()
{
return _gadgets;
}
public ItemStack getItemStack()
{
return _itemStack;
}
}

View File

@ -20,9 +20,14 @@ public class GameCosmeticManager extends MiniPlugin
_cosmetics = new HashMap<>();
}
public void addCosmeticType(GameCosmeticType type)
public void addCosmeticTypes(GameCosmeticType type, List<GameCosmeticCategory> cosmetics)
{
type.addCategories();
_cosmetics.put(type, cosmetics);
}
public Map<GameCosmeticType, List<GameCosmeticCategory>> getTypes()
{
return _cosmetics;
}
}

View File

@ -3,24 +3,36 @@ package mineplex.core.gadget.gadgets.gamemodifiers;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.game.GameDisplay;
import java.util.ArrayList;
import java.util.List;
public abstract class GameCosmeticType
{
private final GadgetManager _manager;
private final String _name;
private final GameDisplay _game;
private final List<GameCosmeticCategory> _categories;
public GameCosmeticType(GadgetManager manager, String name, GameDisplay game)
public GameCosmeticType(GadgetManager manager, GameDisplay game)
{
_manager = manager;
_name = name;
_name = game.getName();
_game = game;
_categories = new ArrayList<>();
manager.getGameCosmeticManager().addCosmeticType(this);
addCategories();
manager.getGameCosmeticManager().addCosmeticTypes(this, _categories);
}
public abstract void addCategories();
public void addCategory(GameCosmeticCategory category)
{
_categories.add(category);
}
public final GadgetManager getManager()
{
return _manager;

View File

@ -2,70 +2,98 @@ package mineplex.core.gadget.gadgets.gamemodifiers.minestrike;
import org.bukkit.Material;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public enum MineStrikeSkin
{
P250_Muertos( "P250", "P250 Muertos", Material.INK_SACK, (byte) 3),
CZ75_Auto_Tigris( "CZ75-Auto", "CZ75-Auto Tigris", Material.CLAY_BRICK, (byte) 0),
Desert_Eagle_Blaze( "Desert Eagle", "Desert Eagle Blaze", Material.NETHER_STALK, (byte) 0),
Desert_Eagle_Golden_Gun( "Desert Eagle", "Golden Gun", Material.GLOWSTONE_DUST, (byte) 0),
Nova_Koi( "Nova", "Nova Koi", Material.INK_SACK, (byte) 14),
XM1014_Tranquility( "XM1014", "XM1014 Tranquility", Material.DIAMOND, (byte) 0),
XM1014_Pig_Gun( "XM1014", "XM1014 Pig Gun", Material.LEATHER, (byte) 0),
PP_Bizon_Streak( "PP-Bizon", "PP-Bizon Streak", Material.INK_SACK, (byte) 4),
P90_Asiimov( "P90", "P90 Asiimov", Material.INK_SACK, (byte) 0),
SSG_08_Blood_in_the_Water( "SSG 08", "SSG 08 Blood in the Water", Material.INK_SACK, (byte) 12),
AWP_Asiimov( "AWP", "AWP Asiimov", Material.SULPHUR, (byte) 0),
P2000_Fire_Elemental( "P2000", "P2000 Fire Elemental", Material.INK_SACK, (byte) 6),
FAMAS_Pulse( "FAMAS", "FAMAS Pulse", Material.CLAY_BALL, (byte) 0),
M4A4_Howl( "M4A4", "M4A4 Howl", Material.INK_SACK, (byte) 11),
M4A4_Enderman( "M4A4", "Enderman M4", Material.COAL, (byte) 0),
Steyr_AUG_Torque( "Steyr AUG", "Steyr AUG Torque", Material.BLAZE_ROD, (byte) 0),
Glock_18_Fade( "Glock 18", "Glock 18 Fade", Material.INK_SACK, (byte) 9),
Galil_AR_Eco( "Galil AR", "Galil AR Eco", Material.INK_SACK, (byte) 10),
AK_47_Vulcan( "AK-47", "AK-47 Vulcan", Material.INK_SACK, (byte) 7),
AK_47_Guardian( "AK-47", "Guardian AK", Material.PRISMARINE_SHARD, (byte) 0),
SG553_Pulse( "SG553", "SG553 Pulse", Material.INK_SACK, (byte) 5),
Knife_M9_Bayonette_Fade( "Knife", "M9 Bayonette Fade", Material.DIAMOND_SWORD, (byte) 0),
Knife_Counter_Terrorist_Sword("Knife", "Counter Terrorist Sword", Material.STICK, (byte) 0),
Knife_Terrorist_Sword( "Knife", "Terrorist Sword", Material.FEATHER, (byte) 0),
Knife_M9_Bayonette_Glass( "Knife", "Glass M9 Bayonette", Material.QUARTZ, (byte) 0);
private String _weaponName;
private String _skinName;
private Material _skinMaterial;
private byte _skinData;
MineStrikeSkin(String weaponName, String skinName, Material newMaterial, byte newData)
P250_Muertos( "P250", "P250 Muertos", Material.INK_SACK, (byte) 3, 1),
CZ75_Auto_Tigris( "CZ75-Auto", "CZ75-Auto Tigris", Material.CLAY_BRICK, (byte) 0, 1),
Desert_Eagle_Blaze( "Desert Eagle", "Desert Eagle Blaze", Material.NETHER_STALK, (byte) 0, 1),
Desert_Eagle_Golden_Gun( "Desert Eagle", "Golden Gun", Material.GLOWSTONE_DUST, (byte) 0, 1),
Nova_Koi( "Nova", "Nova Koi", Material.INK_SACK, (byte) 14, 2),
XM1014_Tranquility( "XM1014", "XM1014 Tranquility", Material.DIAMOND, (byte) 0, 2),
XM1014_Pig_Gun( "XM1014", "XM1014 Pig Gun", Material.LEATHER, (byte) 0, 2),
PP_Bizon_Streak( "PP-Bizon", "PP-Bizon Streak", Material.INK_SACK, (byte) 4, 3),
P90_Asiimov( "P90", "P90 Asiimov", Material.INK_SACK, (byte) 0, 3),
SSG_08_Blood_in_the_Water( "SSG 08", "SSG 08 Blood in the Water", Material.INK_SACK, (byte) 12, 4),
AWP_Asiimov( "AWP", "AWP Asiimov", Material.SULPHUR, (byte) 0, 4),
P2000_Fire_Elemental( "P2000", "P2000 Fire Elemental", Material.INK_SACK, (byte) 6, 1),
FAMAS_Pulse( "FAMAS", "FAMAS Pulse", Material.CLAY_BALL, (byte) 0, 4),
M4A4_Howl( "M4A4", "M4A4 Howl", Material.INK_SACK, (byte) 11, 4),
M4A4_Enderman( "M4A4", "Enderman M4", Material.COAL, (byte) 0, 4),
Steyr_AUG_Torque( "Steyr AUG", "Steyr AUG Torque", Material.BLAZE_ROD, (byte) 0, 4),
Glock_18_Fade( "Glock 18", "Glock 18 Fade", Material.INK_SACK, (byte) 9, 1),
Galil_AR_Eco( "Galil AR", "Galil AR Eco", Material.INK_SACK, (byte) 10, 1),
AK_47_Vulcan( "AK-47", "AK-47 Vulcan", Material.INK_SACK, (byte) 7, 4),
AK_47_Guardian( "AK-47", "Guardian AK", Material.PRISMARINE_SHARD, (byte) 0, 4),
SG553_Pulse( "SG553", "SG553 Pulse", Material.INK_SACK, (byte) 5, 4),
Knife_M9_Bayonette_Fade( "Knife", "M9 Bayonette Fade", Material.DIAMOND_SWORD, (byte) 0, 5),
Knife_Counter_Terrorist_Sword("Knife", "Counter Terrorist Sword", Material.STICK, (byte) 0, 5),
Knife_Terrorist_Sword( "Knife", "Terrorist Sword", Material.FEATHER, (byte) 0, 5),
Knife_M9_Bayonette_Glass( "Knife", "Glass M9 Bayonette", Material.QUARTZ, (byte) 0, 5);
private static final Map<Integer, List<MineStrikeSkin>> BY_CATEGORY;
static
{
BY_CATEGORY = new HashMap<>();
for (MineStrikeSkin skin : MineStrikeSkin.values())
{
BY_CATEGORY.putIfAbsent(skin.getCategory(), new ArrayList<>());
BY_CATEGORY.get(skin.getCategory()).add(skin);
}
}
public static List<MineStrikeSkin> getByCategory(int category)
{
return BY_CATEGORY.get(category);
}
private final String _weaponName;
private final String _skinName;
private final Material _skinMaterial;
private final byte _skinData;
private final int _category;
MineStrikeSkin(String weaponName, String skinName, Material newMaterial, byte newData, int category)
{
_weaponName = weaponName;
_skinName = skinName;
_skinMaterial = newMaterial;
_skinData = newData;
_category = category;
}
public String getWeaponName()
{
return _weaponName;
}
public String getSkinName()
{
return _skinName;
}
public Material getSkinMaterial()
{
return _skinMaterial;
}
public byte getSkinData()
{
return _skinData;
}
public int getCategory()
{
return _category;
}
}

View File

@ -1,14 +1,5 @@
package mineplex.core.gadget.gadgets.item;
import java.util.HashMap;
import java.util.HashSet;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityExplodeEvent;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.LineFormat;
@ -25,54 +16,60 @@ import mineplex.core.gadget.gadgets.Ammo;
import mineplex.core.gadget.types.ItemGadget;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityExplodeEvent;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class ItemTNT extends ItemGadget
{
private HashMap<TNTPrimed, Player> _tnt = new HashMap<TNTPrimed, Player>();
private final Map<TNTPrimed, Player> _tnt = new HashMap<>();
public ItemTNT(GadgetManager manager)
{
super(manager, "TNT",
super(manager, "TNT",
UtilText.splitLineToArray(C.cWhite + "Throwing TNT at Mineplex Staff is highly encouraged.", LineFormat.LORE),
-1,
Material.TNT, (byte)0,
1000, new Ammo("TNT", "20 TNT", Material.TNT, (byte)0, new String[] { C.cWhite + "20 TNT for you to explode!" }, 500, 20));
-1,
Material.TNT, (byte) 0,
1000, new Ammo("TNT", "20 TNT", Material.TNT, (byte) 0, new String[]{C.cWhite + "20 TNT for you to explode!"}, 500, 20));
}
@Override
public void ActivateCustom(Player player)
{
TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), TNTPrimed.class);
tnt.setYield(0.0F); // Added in order to prevent water from being evaporated.
UtilAction.velocity(tnt, player.getLocation().getDirection(), 0.6, false, 0, 0.2, 1, false);
_tnt.put(tnt, player);
addTNT(player, player.getEyeLocation(), -1, true);
//Inform
UtilPlayer.message(player, F.main("Skill", "You threw " + F.skill(getName()) + "."));
}
@EventHandler
public void Update(EntityExplodeEvent event)
public void updateTNT(EntityExplodeEvent event)
{
if (!(event.getEntity() instanceof TNTPrimed))
if (!(event.getEntity() instanceof TNTPrimed) || !_tnt.containsKey(event.getEntity()))
{
return;
if (!_tnt.containsKey(event.getEntity()))
return;
}
Player killer = _tnt.get(event.getEntity());
HashMap<Player, Double> players = UtilPlayer.getInRadius(event.getLocation(), 8);
Map<Player, Double> players = UtilPlayer.getInRadius(event.getLocation(), 8);
for (Player player : players.keySet())
{
if (Manager.collideEvent(killer, this, player))
continue;
if (Manager.getCastleManager().isInsideCastle(player.getLocation()))
if (Manager.collideEvent(killer, this, player) || Manager.getCastleManager().isInsideCastle(player.getLocation()))
{
continue;
}
double mult = players.get(player);
//Knockback
UtilAction.velocity(player, UtilAlg.getTrajectory(event.getLocation(), player.getLocation()), 1 * mult, false, 0, 0.5 + 0.5 * mult, 10, true);
}
@ -81,20 +78,44 @@ public class ItemTNT extends ItemGadget
UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, event.getLocation(), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
}
@EventHandler
public void Clean(UpdateEvent event)
public void cleanTNT(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (TNTPrimed tnt : new HashSet<TNTPrimed>(_tnt.keySet()))
{
return;
}
Iterator<TNTPrimed> iterator = _tnt.keySet().iterator();
while (iterator.hasNext())
{
TNTPrimed tnt = iterator.next();
if (!tnt.isValid() || tnt.getTicksLived() > 200)
{
tnt.remove();
_tnt.remove(tnt);
iterator.remove();
}
}
}
public void addTNT(Player shooter, Location location, int fuseTicks, boolean applyVelocity)
{
TNTPrimed tnt = location.getWorld().spawn(location.add(location.getDirection()), TNTPrimed.class);
tnt.setYield(0F); // Added in order to prevent water from being evaporated.
if (fuseTicks >= 0)
{
tnt.setFuseTicks(fuseTicks);
}
if (applyVelocity)
{
UtilAction.velocity(tnt, location.getDirection(), 0.6, false, 0, 0.2, 1, false);
}
_tnt.put(tnt, shooter);
}
}

View File

@ -0,0 +1,199 @@
package mineplex.core.gadget.gadgets.morph.moba;
import com.mojang.authlib.GameProfile;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C;
import mineplex.core.common.util.LineFormat;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilText;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.particles.effects.LineParticle;
import mineplex.core.disguise.disguises.DisguisePlayer;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.gadgets.morph.managers.UtilMorph;
import mineplex.core.gadget.types.MorphGadget;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.utils.UtilGameProfile;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MorphAnath extends MorphGadget
{
private static final ItemStack ACTIVE_ITEN = new ItemBuilder(Material.FIREBALL)
.setTitle(C.cGreenB + "Anath's Butn Beam")
.addLore("Clicking this fires out a huge wave of fiery particles!")
.setUnbreakable(true)
.build();
private static final int ACTIVE_SLOT = 2;
private final Map<Player, Long> _dashingPlayers = new HashMap<>();
public MorphAnath(GadgetManager manager)
{
super(manager, "Anath", UtilText.splitLinesToArray(new String[]{
C.cGray + "TODO make a description",
"",
C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "fireball" + C.cWhite + " to",
C.cWhite + "fire out a huge wave of",
C.cWhite + "fiery particles.",
"",
C.cGreen + "Sneak" + C.cWhite + " to use " + C.cYellow + "Flame Dash" + C.cWhite + "."
}, LineFormat.LORE), -2, Material.GLASS, (byte) 0);
setDisplayItem(SkinData.ANATH.getSkull());
}
@Override
public void enableCustom(Player player, boolean message)
{
applyArmor(player, message);
GameProfile gameProfile = UtilGameProfile.getGameProfile(player);
gameProfile.getProperties().clear();
gameProfile.getProperties().put("textures", SkinData.ANATH.getProperty());
DisguisePlayer disguisePlayer = new DisguisePlayer(player, gameProfile);
disguisePlayer.showInTabList(true, 0);
UtilMorph.disguise(player, disguisePlayer, Manager);
player.getInventory().setItem(ACTIVE_SLOT, ACTIVE_ITEN);
}
@Override
public void disableCustom(Player player, boolean message)
{
removeArmor(player);
UtilMorph.undisguise(player, Manager.getDisguiseManager());
player.getInventory().setItem(ACTIVE_SLOT, null);
}
@EventHandler
public void interact(PlayerInteractEvent event)
{
if (event.getAction() == Action.PHYSICAL)
{
return;
}
ItemStack itemStack = event.getItem();
if (itemStack == null || itemStack.equals(ACTIVE_ITEN))
{
return;
}
event.setCancelled(true);
Player player = event.getPlayer();
if (!Recharge.Instance.use(player, "Burn Beam", 8000,true, true, "Cosmetics"))
{
return;
}
Vector direction = player.getLocation().getDirection().setY(0);
player.getWorld().playSound(player.getLocation(), Sound.BLAZE_BREATH, 2, 0.5F);
LineParticle particle = new LineParticle(player.getLocation().add(direction), direction, 0.2, 9, null, ParticleType.LAVA, UtilServer.getPlayers());
particle.setIgnoreAllBlocks(true);
Manager.runSyncTimer(new BukkitRunnable()
{
@Override
public void run()
{
for (int i = 0; i < 3; i++)
{
if (particle.update())
{
cancel();
return;
}
else
{
UtilParticle.PlayParticleToAll(ParticleType.FLAME, particle.getLastLocation().clone().add(0, 5, 0), 0.4F, 5, 0.4F, 0.05F, 30, ViewDist.LONG);
}
}
if (Math.random() < 0.1)
{
particle.getLastLocation().getWorld().playSound(particle.getLastLocation(), Sound.GHAST_FIREBALL, 1, 0.5F);
}
}
}, 0, 1);
}
@EventHandler
public void playerSneak(PlayerToggleSneakEvent event)
{
Player player = event.getPlayer();
if (!isActive(event.getPlayer()) || !event.isSneaking() || !Recharge.Instance.use(player, "Flame Dash", 8000, true, false, "Cosmetics"))
{
return;
}
_dashingPlayers.put(player, System.currentTimeMillis());
}
@EventHandler
public void updateDash(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
{
return;
}
Iterator<Player> iterator = _dashingPlayers.keySet().iterator();
while (iterator.hasNext())
{
Player player = iterator.next();
long start = _dashingPlayers.get(player);
if (UtilTime.elapsed(start, 600))
{
UtilAction.zeroVelocity(player);
iterator.remove();
continue;
}
UtilAction.velocity(player, player.getLocation().getDirection());
Block block = player.getLocation().getBlock();
while (!UtilBlock.solid(block))
{
block = block.getRelative(BlockFace.DOWN);
}
Block fBlock = block;
Manager.runSyncLater(() -> Manager.getBlockRestore().add(fBlock.getRelative(BlockFace.UP), Material.FIRE.getId(), (byte) 0, 5000), 10);
}
}
}

View File

@ -0,0 +1,270 @@
package mineplex.core.gadget.gadgets.morph.moba;
import com.mojang.authlib.GameProfile;
import mineplex.core.common.events.EntityVelocityChangeEvent;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C;
import mineplex.core.common.util.LineFormat;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilText;
import mineplex.core.common.util.UtilTime;
import mineplex.core.disguise.disguises.DisguisePlayer;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.event.GadgetSelectLocationEvent;
import mineplex.core.gadget.gadgets.morph.managers.UtilMorph;
import mineplex.core.gadget.types.MorphGadget;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.utils.UtilGameProfile;
import org.bukkit.DyeColor;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Banner;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class MorphDana extends MorphGadget
{
private static final ItemStack ACTIVE_ITEM = new ItemBuilder(Material.NETHER_STAR)
.setTitle(C.cGreenB + "Dana's Rally")
.addLore("You leap up into the air, and upon landing", "you plant a banner!")
.build();
private static final int ACTIVE_SLOT = 2;
private final Set<RallyData> _data = new HashSet<>();
public MorphDana(GadgetManager manager)
{
super(manager, "Dana", UtilText.splitLinesToArray(new String[]{
C.cGray + "Ever wanted to dash around",
C.cGray + "the hub like a Ninja?",
C.cGray + "Well now you can!",
"",
C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Snowball" + C.cWhite + " to fire",
C.cWhite + "snowballs in the direction you are looking.",
"",
C.cGreen + "Sneak" + C.cWhite + " to " + C.cYellow + "Dash" + C.cWhite + "."
}, LineFormat.LORE), -2, Material.GLASS, (byte) 0);
setDisplayItem(SkinData.HATTORI.getSkull());
}
@Override
public void enableCustom(Player player, boolean message)
{
applyArmor(player, message);
GameProfile gameProfile = UtilGameProfile.getGameProfile(player);
gameProfile.getProperties().clear();
gameProfile.getProperties().put("textures", SkinData.DANA.getProperty());
DisguisePlayer disguisePlayer = new DisguisePlayer(player, gameProfile);
disguisePlayer.showInTabList(true, 0);
UtilMorph.disguise(player, disguisePlayer, Manager);
player.getInventory().setItem(ACTIVE_SLOT, ACTIVE_ITEM);
}
@Override
public void disableCustom(Player player, boolean message)
{
removeArmor(player);
UtilMorph.undisguise(player, Manager.getDisguiseManager());
player.getInventory().setItem(ACTIVE_SLOT, null);
}
@EventHandler
public void interact(PlayerInteractEvent event)
{
if (event.getAction() == Action.PHYSICAL)
{
return;
}
Player player = event.getPlayer();
ItemStack itemStack = event.getItem();
if (!isActive(player) || itemStack == null || itemStack.equals(ACTIVE_ITEM))
{
return;
}
event.setCancelled(true);
if (!Recharge.Instance.use(player, "Rally", 30000, false, true, "Cosmetics"))
{
return;
}
Vector vector = player.getLocation().getDirection();
vector.setY(1.5);
UtilAction.velocity(player, vector);
_data.add(new RallyData(player));
}
@EventHandler
public void updateLand(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
{
return;
}
Iterator<RallyData> iterator = _data.iterator();
while (iterator.hasNext())
{
RallyData data = iterator.next();
Player player = data.Owner;
if (data.Landed && UtilTime.elapsed(data.LandTime, 7000))
{
iterator.remove();
}
else if (UtilTime.elapsed(data.LaunchTime, 1000) && UtilEnt.isGrounded(data.Owner))
{
data.LandTime = System.currentTimeMillis();
data.Landed = true;
Location location = data.Owner.getLocation();
data.Banner = location;
Block block = location.getBlock();
Manager.getBlockRestore().add(block, Material.STANDING_BANNER.getId(), (byte) 0, 7500);
boolean red = UtilMath.random.nextBoolean();
byte colorData = (byte) (red ? 14 : 11);
Banner banner = (Banner) block.getState();
banner.setBaseColor(red ? DyeColor.RED : DyeColor.BLUE);
banner.addPattern(getPattern(red));
banner.update();
for (Block nearby : UtilBlock.getBlocksInRadius(banner.getLocation(), 5))
{
if (UtilBlock.airFoliage(nearby) || !UtilBlock.airFoliage(nearby.getRelative(BlockFace.UP)))
{
continue;
}
GadgetSelectLocationEvent selectLocationEvent = new GadgetSelectLocationEvent(player, this, nearby.getLocation());
UtilServer.CallEvent(selectLocationEvent);
if (selectLocationEvent.isCancelled())
{
continue;
}
Manager.getBlockRestore().add(nearby, Material.STAINED_CLAY.getId(), colorData, (long) (7000 + (Math.random() * 500)));
if (Math.random() > 0.9)
{
nearby.getWorld().playEffect(nearby.getLocation(), Effect.STEP_SOUND, Material.STAINED_CLAY, colorData);
}
}
}
}
}
@EventHandler
public void updateParticles(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
{
return;
}
for (RallyData data : _data)
{
if (!data.Landed)
{
continue;
}
Location banner = data.Banner;
for (int i = 0; i < 5; i++)
{
double x = 5 * Math.sin(data.ParticleTheta);
double z = 5 * Math.cos(data.ParticleTheta);
banner.add(x, 0.25, z);
UtilParticle.PlayParticleToAll(ParticleType.HAPPY_VILLAGER, banner, 0, 0, 0, 0.1F, 1, ViewDist.NORMAL);
banner.subtract(x, 0.25, z);
data.ParticleTheta += Math.PI / 100;
}
}
}
@EventHandler
public void velocityChange(EntityVelocityChangeEvent event)
{
for (RallyData data : _data)
{
if (!data.Landed && data.Owner.equals(event.getEntity()))
{
event.setCancelled(true);
}
}
}
@EventHandler
public void itemSpawn(ItemSpawnEvent event)
{
if (event.getEntity().getItemStack().getType() == Material.BANNER)
{
event.setCancelled(true);
}
}
private Pattern getPattern(boolean red)
{
return red ? new Pattern(DyeColor.WHITE, PatternType.CROSS) : new Pattern(DyeColor.WHITE, PatternType.CIRCLE_MIDDLE);
}
private class RallyData
{
Player Owner;
Location Banner;
boolean Landed;
long LaunchTime;
long LandTime;
double ParticleTheta;
RallyData(Player owner)
{
Owner = owner;
LaunchTime = System.currentTimeMillis();
}
}
}

View File

@ -0,0 +1,155 @@
package mineplex.core.gadget.gadgets.morph.moba;
import com.mojang.authlib.GameProfile;
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.UtilText;
import mineplex.core.disguise.disguises.DisguisePlayer;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.gadgets.item.ItemTNT;
import mineplex.core.gadget.gadgets.morph.managers.UtilMorph;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.MorphGadget;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.utils.UtilGameProfile;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.Map;
public class MorphDevon extends MorphGadget
{
private static final ItemStack BOW = new ItemBuilder(Material.BOW)
.setTitle(C.cGreenB + "Devon's Bow")
.addEnchantment(Enchantment.ARROW_INFINITE, 1)
.addLore("Firing this bow causes " + F.elem("TNT") + " to explode where it lands!")
.setUnbreakable(true)
.build();
private static final int BOW_SLOT = 2;
private static final ItemStack ARROW = new ItemStack(Material.ARROW);
private static final int ARROW_SLOT = 9;
private final Map<Entity, Player> _arrows = new HashMap<>();
private final ItemTNT _tntGadget;
public MorphDevon(GadgetManager manager)
{
super(manager, "Devon", UtilText.splitLinesToArray(new String[]{
C.cGray + "You thought this was overpowered in game?",
C.cGray + "Well now you shoot TNT",
C.cGray + "at unsuspecting players in the hub!",
"",
C.cGreen + "Shoot" + C.cWhite + " your " + C.cYellow + "Bow" + C.cWhite + " to fire",
C.cYellow + "TNT Infused" + C.cWhite + " arrows which explode on contact."
}, LineFormat.LORE), -2, Material.GLASS, (byte) 0);
setDisplayItem(SkinData.DEVON.getSkull());
_tntGadget = manager.getGadget(ItemTNT.class);
}
@Override
public void enableCustom(Player player, boolean message)
{
applyArmor(player, message);
GameProfile gameProfile = UtilGameProfile.getGameProfile(player);
gameProfile.getProperties().clear();
gameProfile.getProperties().put("textures", SkinData.DEVON.getProperty());
DisguisePlayer disguisePlayer = new DisguisePlayer(player, gameProfile);
disguisePlayer.showInTabList(true, 0);
UtilMorph.disguise(player, disguisePlayer, Manager);
player.getInventory().setItem(BOW_SLOT, BOW);
player.getInventory().setItem(ARROW_SLOT, ARROW);
}
@Override
public void disableCustom(Player player, boolean message)
{
removeArmor(player);
UtilMorph.undisguise(player, Manager.getDisguiseManager());
player.getInventory().setItem(BOW_SLOT, null);
player.getInventory().setItem(ARROW_SLOT, null);
}
@EventHandler
public void entityShootBow(EntityShootBowEvent event)
{
LivingEntity entity = event.getEntity();
if (!(entity instanceof Player))
{
return;
}
Player player = (Player) entity;
if (!isActive(player))
{
return;
}
if (!Recharge.Instance.use(player, "TNT Infusion", 1000, false, true, "Cosmetics"))
{
event.setCancelled(true);
return;
}
_arrows.put(event.getProjectile(), player);
}
@EventHandler
public void projectileHit(ProjectileHitEvent event)
{
Entity projectile = event.getEntity();
Player shooter = _arrows.remove(projectile);
if (shooter == null)
{
return;
}
_tntGadget.addTNT(shooter, projectile.getLocation(), 0, false);
projectile.remove();
}
@EventHandler
public void cleanup(UpdateEvent event)
{
if (event.getType() != UpdateType.SEC)
{
return;
}
_arrows.keySet().removeIf(entity ->
{
if (!entity.isValid())
{
entity.remove();
return true;
}
return false;
});
}
}

View File

@ -0,0 +1,177 @@
package mineplex.core.gadget.gadgets.morph.moba;
import com.mojang.authlib.GameProfile;
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.UtilFirework;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilText;
import mineplex.core.common.util.particles.effects.LineParticle;
import mineplex.core.disguise.disguises.DisguisePlayer;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.event.GadgetSelectLocationEvent;
import mineplex.core.gadget.gadgets.morph.managers.UtilMorph;
import mineplex.core.gadget.types.MorphGadget;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.recharge.Recharge;
import mineplex.core.utils.UtilGameProfile;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
public class MorphHattori extends MorphGadget
{
private static final ItemStack ACTIVE_ITEM = new ItemBuilder(Material.SNOW_BALL)
.setTitle(C.cGreenB + "Hattori's Snowballs")
.addLore("Click to fire 3 snowballs, one after another.")
.build();
private static final int SNOWBALL_SLOT = 2;
public MorphHattori(GadgetManager manager)
{
super(manager, "Hattori", UtilText.splitLinesToArray(new String[]{
C.cGray + "Ever wanted to dash around",
C.cGray + "the hub like a Ninja?",
C.cGray + "Well now you can!",
"",
C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Snowball" + C.cWhite + " to fire",
C.cWhite + "snowballs in the direction you are looking.",
"",
C.cGreen + "Sneak" + C.cWhite + " to " + C.cYellow + "Dash" + C.cWhite + "."
}, LineFormat.LORE), -2, Material.GLASS, (byte) 0);
setDisplayItem(SkinData.HATTORI.getSkull());
}
@Override
public void enableCustom(Player player, boolean message)
{
applyArmor(player, message);
GameProfile gameProfile = UtilGameProfile.getGameProfile(player);
gameProfile.getProperties().clear();
gameProfile.getProperties().put("textures", SkinData.HATTORI.getProperty());
DisguisePlayer disguisePlayer = new DisguisePlayer(player, gameProfile);
disguisePlayer.showInTabList(true, 0);
UtilMorph.disguise(player, disguisePlayer, Manager);
player.getInventory().setItem(SNOWBALL_SLOT, ACTIVE_ITEM);
}
@Override
public void disableCustom(Player player, boolean message)
{
removeArmor(player);
UtilMorph.undisguise(player, Manager.getDisguiseManager());
player.getInventory().setItem(SNOWBALL_SLOT, null);
}
@EventHandler
public void snowballClick(PlayerInteractEvent event)
{
if (event.getAction() == Action.PHYSICAL)
{
return;
}
Player player = event.getPlayer();
ItemStack itemStack = event.getItem();
if (!isActive(player) || itemStack == null || itemStack.equals(ACTIVE_ITEM))
{
return;
}
event.setCancelled(true);
if (!Recharge.Instance.use(player, "Snowballs", 1000, false, true, "Cosmetics"))
{
return;
}
Manager.runSyncTimer(new BukkitRunnable()
{
int balls = 0;
@Override
public void run()
{
player.playSound(player.getLocation(), Sound.LAVA_POP, 1, 1.3F);
player.launchProjectile(Snowball.class);
if (++balls == 3)
{
cancel();
}
}
}, 0, 4);
}
@EventHandler
public void playerSneak(PlayerToggleSneakEvent event)
{
Player player = event.getPlayer();
if (!isActive(event.getPlayer()) || !event.isSneaking() || !Recharge.Instance.use(player, "Dash", 5000, true, false, "Cosmetics"))
{
return;
}
Location start = player.getEyeLocation();
GadgetSelectLocationEvent gadgetSelectLocationEvent = new GadgetSelectLocationEvent(player, this, start);
UtilServer.CallEvent(gadgetSelectLocationEvent);
// Checks to see if it's a valid location
if (gadgetSelectLocationEvent.isCancelled())
{
if (gadgetSelectLocationEvent.canShowMessage())
{
UtilPlayer.message(player, F.main("Gadget", "You cannot use the laser on this area!"));
}
return;
}
LineParticle lineParticle = new LineParticle(start, start.getDirection(), 0.8, 15, null, ParticleType.FIREWORKS_SPARK, UtilServer.getPlayers());
while (!lineParticle.update())
{
}
Location location = lineParticle.getDestination();
Color color = UtilMath.random.nextBoolean() ? Color.RED : Color.AQUA;
FireworkEffect effect = FireworkEffect.builder()
.with(Type.BALL)
.withColor(color)
.withFlicker()
.build();
UtilFirework.playFirework(player.getEyeLocation(), effect);
player.playSound(player.getLocation(), Sound.SHOOT_ARROW, 1, 1);
player.teleport(location.add(0, 0.5, 0));
player.playSound(player.getLocation(), Sound.SHOOT_ARROW, 1, 1);
UtilFirework.playFirework(player.getEyeLocation(), effect);
}
}

View File

@ -1,13 +1,11 @@
package mineplex.core.gadget.types;
import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticType;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType;
import org.bukkit.Material;
import org.bukkit.entity.Player;
/**
* An abstract wrapper for Gadgets of the type GameModifiers
@ -16,7 +14,6 @@ public abstract class GameModifierGadget extends Gadget
{
protected final GameModifierType _type;
private final GameCosmeticType _gameCosmeticType;
private final boolean _allowMultiple;
/**
@ -28,11 +25,10 @@ public abstract class GameModifierGadget extends Gadget
* @param mat The display material used in GUIs
* @param data The display data used in GUIs
*/
public GameModifierGadget(GadgetManager manager, GameModifierType type, GameCosmeticType gameCosmeticType, String name, String[] desc, int cost, Material mat, byte data, boolean allowMultiple)
public GameModifierGadget(GadgetManager manager, GameModifierType type, String name, String[] desc, int cost, Material mat, byte data, boolean allowMultiple)
{
super(manager, GadgetType.GAME_MODIFIER, name, desc, cost, mat, data);
_type = type;
_gameCosmeticType = gameCosmeticType;
_allowMultiple = allowMultiple;
}
@ -41,11 +37,6 @@ public abstract class GameModifierGadget extends Gadget
return _type;
}
public GameCosmeticType getGameCosmeticType()
{
return _gameCosmeticType;
}
public boolean canAllowMultiple()
{
return _allowMultiple;