Add Game Cosmetics and the 4 basic hero morphs
This commit is contained in:
parent
94ea5c4134
commit
dd675b407a
@ -1,10 +1,9 @@
|
|||||||
package mineplex.core.cosmetic.ui.button.open;
|
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.Menu;
|
||||||
|
import mineplex.core.cosmetic.ui.page.gamemodifiers.GameCosmeticsPage;
|
||||||
import mineplex.core.gadget.types.Gadget;
|
import mineplex.core.gadget.types.Gadget;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class OpenGameModifiers extends OpenPageButton
|
public class OpenGameModifiers extends OpenPageButton
|
||||||
{
|
{
|
||||||
@ -16,6 +15,6 @@ public class OpenGameModifiers extends OpenPageButton
|
|||||||
@Override
|
@Override
|
||||||
protected void leftClick(Player player)
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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)));
|
||||||
|
}
|
||||||
|
}
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
@ -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)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,51 +1,11 @@
|
|||||||
package mineplex.core.gadget;
|
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.MiniPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.achievement.AchievementManager;
|
import mineplex.core.achievement.AchievementManager;
|
||||||
import mineplex.core.blockrestore.BlockRestore;
|
import mineplex.core.blockrestore.BlockRestore;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
|
import mineplex.core.common.skin.SkinData;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilEnt;
|
import mineplex.core.common.util.UtilEnt;
|
||||||
import mineplex.core.common.util.UtilMath;
|
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.GadgetEnableEvent;
|
||||||
import mineplex.core.gadget.event.PlayerToggleSwimEvent;
|
import mineplex.core.gadget.event.PlayerToggleSwimEvent;
|
||||||
import mineplex.core.gadget.event.TauntCommandEvent;
|
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.ArrowTrailCandyCane;
|
||||||
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailConfetti;
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCupid;
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCupid;
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEmerald;
|
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.ArrowTrailFreedom;
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord;
|
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord;
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailHalloween;
|
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.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.ArrowTrailShadow;
|
||||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailSpring;
|
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.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.BalloonItem;
|
||||||
import mineplex.core.gadget.gadgets.balloons.BalloonType;
|
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.DeathCandyCane;
|
||||||
import mineplex.core.gadget.gadgets.death.DeathPresentDanger;
|
|
||||||
import mineplex.core.gadget.gadgets.death.DeathCupidsBrokenHeart;
|
import mineplex.core.gadget.gadgets.death.DeathCupidsBrokenHeart;
|
||||||
import mineplex.core.gadget.gadgets.death.DeathEmerald;
|
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.DeathFreedom;
|
||||||
import mineplex.core.gadget.gadgets.death.DeathFrostLord;
|
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.DeathMusic;
|
||||||
import mineplex.core.gadget.gadgets.death.DeathPinataBurst;
|
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.DeathShadow;
|
||||||
import mineplex.core.gadget.gadgets.death.DeathSpring;
|
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.DeathTitan;
|
||||||
import mineplex.core.gadget.gadgets.death.DeathBlood;
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
|
||||||
import mineplex.core.gadget.gadgets.death.DeathEnchant;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane;
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCupidsWings;
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCupidsWings;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEmerald;
|
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.DoubleJumpFreedom;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord;
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpHalloween;
|
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.DoubleJumpMusic;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFirecracker;
|
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpShadow;
|
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpShadow;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpSpring;
|
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.DoubleJumpTitan;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
|
import mineplex.core.gadget.gadgets.flag.FlagType;
|
||||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEnchant;
|
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.GameModifierType;
|
||||||
import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.GameModifierMount;
|
import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.GameModifierMount;
|
||||||
import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.MountType;
|
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.MorphBat;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphBlaze;
|
import mineplex.core.gadget.gadgets.morph.MorphBlaze;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphBlock;
|
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.MorphBunny;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphChicken;
|
import mineplex.core.gadget.gadgets.morph.MorphChicken;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphChristmasKing;
|
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.MorphCreeper;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphDinnerbone;
|
import mineplex.core.gadget.gadgets.morph.MorphDinnerbone;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphEnderman;
|
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.MorphGoldPot;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphGrimReaper;
|
import mineplex.core.gadget.gadgets.morph.MorphGrimReaper;
|
||||||
import mineplex.core.gadget.gadgets.morph.MorphLoveDoctor;
|
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.MorphWither;
|
||||||
import mineplex.core.gadget.gadgets.morph.managers.SoulManager;
|
import mineplex.core.gadget.gadgets.morph.managers.SoulManager;
|
||||||
import mineplex.core.gadget.gadgets.morph.managers.SwimManager;
|
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.OutfitTeam;
|
||||||
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitBoots;
|
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitBoots;
|
||||||
import mineplex.core.gadget.gadgets.outfit.freezesuit.OutfitFreezeSuitChestplate;
|
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.OutfitStPatricksHat;
|
||||||
import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksLeggings;
|
import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksLeggings;
|
||||||
import mineplex.core.gadget.gadgets.outfit.windupsuit.OutfitWindUpSuitBoosterManager;
|
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.ParticleChristmasTree;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes;
|
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.ParticleFairy;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleFireRings;
|
import mineplex.core.gadget.gadgets.particle.ParticleFireRings;
|
||||||
import mineplex.core.gadget.gadgets.particle.king.CastleManager;
|
import mineplex.core.gadget.gadgets.particle.ParticleFoot;
|
||||||
import mineplex.core.gadget.gadgets.particle.king.ParticleKing;
|
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.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.ParticleWingsAngel;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsBee;
|
import mineplex.core.gadget.gadgets.particle.ParticleWingsBee;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsDemons;
|
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.ParticleWingsLove;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsPixie;
|
import mineplex.core.gadget.gadgets.particle.ParticleWingsPixie;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleYinYang;
|
import mineplex.core.gadget.gadgets.particle.ParticleYinYang;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleCandyCane;
|
import mineplex.core.gadget.gadgets.particle.freedom.ParticleAuraNiceness;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleHeart;
|
import mineplex.core.gadget.gadgets.particle.freedom.ParticleCanadian;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleEmerald;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedom;
|
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedom;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleFrostLord;
|
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedomFireworks;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleRain;
|
import mineplex.core.gadget.gadgets.particle.freedom.ParticleStarSpangled;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleMusic;
|
import mineplex.core.gadget.gadgets.particle.king.CastleManager;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticlePartyTime;
|
import mineplex.core.gadget.gadgets.particle.king.ParticleKing;
|
||||||
import mineplex.core.gadget.gadgets.particle.ParticleFoot;
|
|
||||||
import mineplex.core.gadget.gadgets.particle.spring.ParticleSpringHalo;
|
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.BlowAKissTaunt;
|
||||||
import mineplex.core.gadget.gadgets.taunts.EternalTaunt;
|
import mineplex.core.gadget.gadgets.taunts.EternalTaunt;
|
||||||
import mineplex.core.gadget.gadgets.taunts.RainbowTaunt;
|
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.WinEffectRankTitan;
|
||||||
import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffectRankUltra;
|
import mineplex.core.gadget.gadgets.wineffect.rankrooms.rankwineffects.WinEffectRankUltra;
|
||||||
import mineplex.core.gadget.persistence.UserGadgetPersistence;
|
import mineplex.core.gadget.persistence.UserGadgetPersistence;
|
||||||
|
import mineplex.core.gadget.set.SetCanadian;
|
||||||
import mineplex.core.gadget.set.SetCandyCane;
|
import mineplex.core.gadget.set.SetCandyCane;
|
||||||
import mineplex.core.gadget.set.SetCupidsLove;
|
import mineplex.core.gadget.set.SetCupidsLove;
|
||||||
import mineplex.core.gadget.set.SetEmerald;
|
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.BalloonGadget;
|
||||||
import mineplex.core.gadget.types.DeathEffectGadget;
|
import mineplex.core.gadget.types.DeathEffectGadget;
|
||||||
import mineplex.core.gadget.types.DoubleJumpEffectGadget;
|
import mineplex.core.gadget.types.DoubleJumpEffectGadget;
|
||||||
|
import mineplex.core.gadget.types.FlagGadget;
|
||||||
import mineplex.core.gadget.types.Gadget;
|
import mineplex.core.gadget.types.Gadget;
|
||||||
import mineplex.core.gadget.types.GadgetSet;
|
import mineplex.core.gadget.types.GadgetSet;
|
||||||
import mineplex.core.gadget.types.GadgetType;
|
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.ParticleGadget;
|
||||||
import mineplex.core.gadget.types.TauntGadget;
|
import mineplex.core.gadget.types.TauntGadget;
|
||||||
import mineplex.core.gadget.types.WinEffectGadget;
|
import mineplex.core.gadget.types.WinEffectGadget;
|
||||||
|
import mineplex.core.game.GameDisplay;
|
||||||
import mineplex.core.hologram.HologramManager;
|
import mineplex.core.hologram.HologramManager;
|
||||||
import mineplex.core.incognito.IncognitoManager;
|
import mineplex.core.incognito.IncognitoManager;
|
||||||
import mineplex.core.incognito.events.IncognitoStatusChangeEvent;
|
import mineplex.core.incognito.events.IncognitoStatusChangeEvent;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.mount.MountManager;
|
import mineplex.core.mount.MountManager;
|
||||||
import mineplex.core.mount.event.MountActivateEvent;
|
import mineplex.core.mount.event.MountActivateEvent;
|
||||||
import mineplex.core.packethandler.PacketHandler;
|
import mineplex.core.packethandler.PacketHandler;
|
||||||
@ -280,6 +261,31 @@ import mineplex.core.pet.custom.CustomPet;
|
|||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.projectile.ProjectileManager;
|
import mineplex.core.projectile.ProjectileManager;
|
||||||
import mineplex.core.treasure.TreasureManager;
|
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
|
public class GadgetManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
@ -475,6 +481,10 @@ public class GadgetManager extends MiniPlugin
|
|||||||
addGadget(new MorphAwkwardRabbit(this));
|
addGadget(new MorphAwkwardRabbit(this));
|
||||||
addGadget(new MorphBobRoss(this, _hologramManager));
|
addGadget(new MorphBobRoss(this, _hologramManager));
|
||||||
addGadget(new MorphFreedomFighter(this));
|
addGadget(new MorphFreedomFighter(this));
|
||||||
|
addGadget(new MorphHattori(this));
|
||||||
|
addGadget(new MorphDevon(this));
|
||||||
|
addGadget(new MorphAnath(this));
|
||||||
|
addGadget(new MorphDana(this));
|
||||||
|
|
||||||
// Particles
|
// Particles
|
||||||
addGadget(new ParticleFoot(this));
|
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, "Strad Disc", new String[] {""}, -2, 2264, 188000));
|
||||||
addGadget(new MusicGadget(this, "Ward Disc", new String[] {""}, -2, 2265, 251000));
|
addGadget(new MusicGadget(this, "Ward Disc", new String[] {""}, -2, 2265, 251000));
|
||||||
addGadget(new MusicGadget(this, "Wait Disc", new String[] {""}, -2, 2267, 238000));
|
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
|
// Survival Games
|
||||||
/* for (KitModifier kitModifier : KitModifier.values())
|
/* for (KitModifier kitModifier : KitModifier.values())
|
||||||
@ -680,22 +657,104 @@ public class GadgetManager extends MiniPlugin
|
|||||||
addGadget(new GameModifierMount(this, mount));
|
addGadget(new GameModifierMount(this, mount));
|
||||||
}
|
}
|
||||||
|
|
||||||
new GameCosmeticType(this, GameDisplay.MOBA.getName(), GameDisplay.MOBA)
|
new GameCosmeticType(this, GameDisplay.MineStrike)
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void addCategories()
|
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
|
@Override
|
||||||
public void addGadgets()
|
public void addGadgets()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (GadgetType gadgetType : GadgetType.values())
|
for (GadgetType gadgetType : GadgetType.values())
|
||||||
{
|
{
|
||||||
if (!_gadgets.containsKey(gadgetType))
|
if (!_gadgets.containsKey(gadgetType))
|
||||||
@ -739,7 +798,7 @@ public class GadgetManager extends MiniPlugin
|
|||||||
_sets.add(set);
|
_sets.add(set);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addGadget(Gadget gadget)
|
public void addGadget(Gadget gadget)
|
||||||
{
|
{
|
||||||
if (!_gadgets.containsKey(gadget.getGadgetType()))
|
if (!_gadgets.containsKey(gadget.getGadgetType()))
|
||||||
_gadgets.put(gadget.getGadgetType(), new ArrayList<>());
|
_gadgets.put(gadget.getGadgetType(), new ArrayList<>());
|
||||||
@ -1350,7 +1409,7 @@ public class GadgetManager extends MiniPlugin
|
|||||||
Gadget gadget = event.getGadget();
|
Gadget gadget = event.getGadget();
|
||||||
if (gadget != null)
|
if (gadget != null)
|
||||||
{
|
{
|
||||||
String value = "disabled", key = "";
|
String value = "disabled", key;
|
||||||
GadgetType gadgetType = gadget.getGadgetType();
|
GadgetType gadgetType = gadget.getGadgetType();
|
||||||
switch (gadgetType)
|
switch (gadgetType)
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package mineplex.core.gadget.gadgets.gamemodifiers;
|
package mineplex.core.gadget.gadgets.gamemodifiers;
|
||||||
|
|
||||||
import mineplex.core.gadget.GadgetManager;
|
import mineplex.core.gadget.GadgetManager;
|
||||||
|
import mineplex.core.gadget.types.Gadget;
|
||||||
import mineplex.core.gadget.types.GameModifierGadget;
|
import mineplex.core.gadget.types.GameModifierGadget;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -13,16 +15,41 @@ public abstract class GameCosmeticCategory
|
|||||||
private final GadgetManager _manager;
|
private final GadgetManager _manager;
|
||||||
private final String _categoryName;
|
private final String _categoryName;
|
||||||
private final List<GameModifierGadget> _gadgets;
|
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;
|
_type = type;
|
||||||
_manager = type.getManager();
|
_manager = type.getManager();
|
||||||
_categoryName = categoryName;
|
_categoryName = categoryName;
|
||||||
_gadgets = new ArrayList<>();
|
_gadgets = new ArrayList<>();
|
||||||
|
_itemStack = itemStack;
|
||||||
|
|
||||||
addGadgets();
|
addGadgets();
|
||||||
|
|
||||||
|
type.addCategory(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void addGadgets();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,9 +20,14 @@ public class GameCosmeticManager extends MiniPlugin
|
|||||||
_cosmetics = new HashMap<>();
|
_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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,24 +3,36 @@ package mineplex.core.gadget.gadgets.gamemodifiers;
|
|||||||
import mineplex.core.gadget.GadgetManager;
|
import mineplex.core.gadget.GadgetManager;
|
||||||
import mineplex.core.game.GameDisplay;
|
import mineplex.core.game.GameDisplay;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class GameCosmeticType
|
public abstract class GameCosmeticType
|
||||||
{
|
{
|
||||||
|
|
||||||
private final GadgetManager _manager;
|
private final GadgetManager _manager;
|
||||||
private final String _name;
|
private final String _name;
|
||||||
private final GameDisplay _game;
|
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;
|
_manager = manager;
|
||||||
_name = name;
|
_name = game.getName();
|
||||||
_game = game;
|
_game = game;
|
||||||
|
_categories = new ArrayList<>();
|
||||||
|
|
||||||
manager.getGameCosmeticManager().addCosmeticType(this);
|
addCategories();
|
||||||
|
|
||||||
|
manager.getGameCosmeticManager().addCosmeticTypes(this, _categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void addCategories();
|
public abstract void addCategories();
|
||||||
|
|
||||||
|
public void addCategory(GameCosmeticCategory category)
|
||||||
|
{
|
||||||
|
_categories.add(category);
|
||||||
|
}
|
||||||
|
|
||||||
public final GadgetManager getManager()
|
public final GadgetManager getManager()
|
||||||
{
|
{
|
||||||
return _manager;
|
return _manager;
|
||||||
|
@ -2,70 +2,98 @@ package mineplex.core.gadget.gadgets.gamemodifiers.minestrike;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public enum MineStrikeSkin
|
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),
|
|
||||||
|
|
||||||
|
P250_Muertos( "P250", "P250 Muertos", Material.INK_SACK, (byte) 3, 1),
|
||||||
Knife_M9_Bayonette_Fade( "Knife", "M9 Bayonette Fade", Material.DIAMOND_SWORD, (byte) 0),
|
CZ75_Auto_Tigris( "CZ75-Auto", "CZ75-Auto Tigris", Material.CLAY_BRICK, (byte) 0, 1),
|
||||||
Knife_Counter_Terrorist_Sword("Knife", "Counter Terrorist Sword", Material.STICK, (byte) 0),
|
Desert_Eagle_Blaze( "Desert Eagle", "Desert Eagle Blaze", Material.NETHER_STALK, (byte) 0, 1),
|
||||||
Knife_Terrorist_Sword( "Knife", "Terrorist Sword", Material.FEATHER, (byte) 0),
|
Desert_Eagle_Golden_Gun( "Desert Eagle", "Golden Gun", Material.GLOWSTONE_DUST, (byte) 0, 1),
|
||||||
Knife_M9_Bayonette_Glass( "Knife", "Glass M9 Bayonette", Material.QUARTZ, (byte) 0);
|
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),
|
||||||
private String _weaponName;
|
P90_Asiimov( "P90", "P90 Asiimov", Material.INK_SACK, (byte) 0, 3),
|
||||||
private String _skinName;
|
SSG_08_Blood_in_the_Water( "SSG 08", "SSG 08 Blood in the Water", Material.INK_SACK, (byte) 12, 4),
|
||||||
private Material _skinMaterial;
|
AWP_Asiimov( "AWP", "AWP Asiimov", Material.SULPHUR, (byte) 0, 4),
|
||||||
private byte _skinData;
|
P2000_Fire_Elemental( "P2000", "P2000 Fire Elemental", Material.INK_SACK, (byte) 6, 1),
|
||||||
|
FAMAS_Pulse( "FAMAS", "FAMAS Pulse", Material.CLAY_BALL, (byte) 0, 4),
|
||||||
MineStrikeSkin(String weaponName, String skinName, Material newMaterial, byte newData)
|
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;
|
_weaponName = weaponName;
|
||||||
_skinName = skinName;
|
_skinName = skinName;
|
||||||
_skinMaterial = newMaterial;
|
_skinMaterial = newMaterial;
|
||||||
_skinData = newData;
|
_skinData = newData;
|
||||||
|
_category = category;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getWeaponName()
|
public String getWeaponName()
|
||||||
{
|
{
|
||||||
return _weaponName;
|
return _weaponName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSkinName()
|
public String getSkinName()
|
||||||
{
|
{
|
||||||
return _skinName;
|
return _skinName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Material getSkinMaterial()
|
public Material getSkinMaterial()
|
||||||
{
|
{
|
||||||
return _skinMaterial;
|
return _skinMaterial;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getSkinData()
|
public byte getSkinData()
|
||||||
{
|
{
|
||||||
return _skinData;
|
return _skinData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getCategory()
|
||||||
|
{
|
||||||
|
return _category;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,5 @@
|
|||||||
package mineplex.core.gadget.gadgets.item;
|
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.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.LineFormat;
|
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.gadget.types.ItemGadget;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
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
|
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)
|
public ItemTNT(GadgetManager manager)
|
||||||
{
|
{
|
||||||
super(manager, "TNT",
|
super(manager, "TNT",
|
||||||
UtilText.splitLineToArray(C.cWhite + "Throwing TNT at Mineplex Staff is highly encouraged.", LineFormat.LORE),
|
UtilText.splitLineToArray(C.cWhite + "Throwing TNT at Mineplex Staff is highly encouraged.", LineFormat.LORE),
|
||||||
-1,
|
-1,
|
||||||
Material.TNT, (byte)0,
|
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));
|
1000, new Ammo("TNT", "20 TNT", Material.TNT, (byte) 0, new String[]{C.cWhite + "20 TNT for you to explode!"}, 500, 20));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void ActivateCustom(Player player)
|
public void ActivateCustom(Player player)
|
||||||
{
|
{
|
||||||
TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), TNTPrimed.class);
|
addTNT(player, player.getEyeLocation(), -1, true);
|
||||||
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);
|
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
UtilPlayer.message(player, F.main("Skill", "You threw " + F.skill(getName()) + "."));
|
UtilPlayer.message(player, F.main("Skill", "You threw " + F.skill(getName()) + "."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@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;
|
return;
|
||||||
|
}
|
||||||
if (!_tnt.containsKey(event.getEntity()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player killer = _tnt.get(event.getEntity());
|
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())
|
for (Player player : players.keySet())
|
||||||
{
|
{
|
||||||
if (Manager.collideEvent(killer, this, player))
|
if (Manager.collideEvent(killer, this, player) || Manager.getCastleManager().isInsideCastle(player.getLocation()))
|
||||||
continue;
|
{
|
||||||
|
|
||||||
if (Manager.getCastleManager().isInsideCastle(player.getLocation()))
|
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
double mult = players.get(player);
|
double mult = players.get(player);
|
||||||
|
|
||||||
//Knockback
|
//Knockback
|
||||||
UtilAction.velocity(player, UtilAlg.getTrajectory(event.getLocation(), player.getLocation()), 1 * mult, false, 0, 0.5 + 0.5 * mult, 10, true);
|
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());
|
UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, event.getLocation(), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void Clean(UpdateEvent event)
|
public void cleanTNT(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FAST)
|
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)
|
if (!tnt.isValid() || tnt.getTicksLived() > 200)
|
||||||
{
|
{
|
||||||
tnt.remove();
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,13 +1,11 @@
|
|||||||
package mineplex.core.gadget.types;
|
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.F;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.gadget.GadgetManager;
|
import mineplex.core.gadget.GadgetManager;
|
||||||
import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType;
|
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
|
* An abstract wrapper for Gadgets of the type GameModifiers
|
||||||
@ -16,7 +14,6 @@ public abstract class GameModifierGadget extends Gadget
|
|||||||
{
|
{
|
||||||
|
|
||||||
protected final GameModifierType _type;
|
protected final GameModifierType _type;
|
||||||
private final GameCosmeticType _gameCosmeticType;
|
|
||||||
private final boolean _allowMultiple;
|
private final boolean _allowMultiple;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,11 +25,10 @@ public abstract class GameModifierGadget extends Gadget
|
|||||||
* @param mat The display material used in GUIs
|
* @param mat The display material used in GUIs
|
||||||
* @param data The display data 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);
|
super(manager, GadgetType.GAME_MODIFIER, name, desc, cost, mat, data);
|
||||||
_type = type;
|
_type = type;
|
||||||
_gameCosmeticType = gameCosmeticType;
|
|
||||||
_allowMultiple = allowMultiple;
|
_allowMultiple = allowMultiple;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,11 +37,6 @@ public abstract class GameModifierGadget extends Gadget
|
|||||||
return _type;
|
return _type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameCosmeticType getGameCosmeticType()
|
|
||||||
{
|
|
||||||
return _gameCosmeticType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canAllowMultiple()
|
public boolean canAllowMultiple()
|
||||||
{
|
{
|
||||||
return _allowMultiple;
|
return _allowMultiple;
|
||||||
|
Loading…
Reference in New Issue
Block a user