Wizards: More changes as per demand.
This commit is contained in:
parent
073c7d16c2
commit
8803941bd8
@ -96,7 +96,7 @@ public class UtilParticle
|
|||||||
PORTAL("portal"),
|
PORTAL("portal"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Can be colored if count is 0, color is RGB and depends on the offset of xyz
|
* Can be colored if count is 0, color is RGB and depends on the offset of xyz. Offset y if 0 will default to 1, counter by making it 0.0001
|
||||||
*/
|
*/
|
||||||
RED_DUST("reddust"),
|
RED_DUST("reddust"),
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ public class SpellButton implements IButton
|
|||||||
|
|
||||||
_spellPage.getWizards().drawUtilTextBottom(player);
|
_spellPage.getWizards().drawUtilTextBottom(player);
|
||||||
_spellPage.getWizards().changeWandsTitles(player);
|
_spellPage.getWizards().changeWandsTitles(player);
|
||||||
|
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,94 +15,103 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
public class SpellMenuPage extends ShopPageBase<WizardSpellMenu, WizardSpellMenuShop>
|
public class SpellMenuPage extends ShopPageBase<WizardSpellMenu, WizardSpellMenuShop>
|
||||||
{
|
{
|
||||||
private Wizards _wizard;
|
private Wizards _wizard;
|
||||||
|
|
||||||
public SpellMenuPage(WizardSpellMenu plugin, WizardSpellMenuShop shop, CoreClientManager clientManager,
|
public SpellMenuPage(WizardSpellMenu plugin, WizardSpellMenuShop shop, CoreClientManager clientManager,
|
||||||
DonationManager donationManager, Player player, Wizards wizard)
|
DonationManager donationManager, Player player, Wizards wizard)
|
||||||
{
|
{
|
||||||
super(plugin, shop, clientManager, donationManager, "Spell Menu", player);
|
super(plugin, shop, clientManager, donationManager, "Spell Menu", player);
|
||||||
_wizard = wizard;
|
_wizard = wizard;
|
||||||
buildPage();
|
buildPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void buildPage()
|
protected void buildPage()
|
||||||
{
|
{
|
||||||
Wizard wizard = getWizards().getWizard(getPlayer());
|
Wizard wizard = getWizards().getWizard(getPlayer());
|
||||||
|
|
||||||
ArrayList<Integer> usedNumbers = new ArrayList<Integer>();
|
ArrayList<Integer> usedNumbers = new ArrayList<Integer>();
|
||||||
|
|
||||||
for (SpellElement ele : SpellElement.values())
|
for (SpellElement ele : SpellElement.values())
|
||||||
{
|
{
|
||||||
addItem(ele.getSlot(), new ShopItem(ele.getIcon(), ele.name(), ele.name(), 1, true, true));
|
addItem(ele.getSlot(), new ShopItem(ele.getIcon(), ele.name(), ele.name(), 1, true, true));
|
||||||
|
|
||||||
for (int i = ele.getFirstSlot(); i <= ele.getSecondSlot(); i++)
|
for (int i = ele.getFirstSlot(); i <= ele.getSecondSlot(); i++)
|
||||||
{
|
{
|
||||||
usedNumbers.add(i);
|
usedNumbers.add(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 54; i++)
|
for (int i = 0; i < 54; i++)
|
||||||
{
|
{
|
||||||
SpellType spell = null;
|
SpellType spell = null;
|
||||||
for (SpellType spells : SpellType.values())
|
for (SpellType spells : SpellType.values())
|
||||||
{
|
{
|
||||||
if (spells.getSlot() == i)
|
if (spells.getSlot() == i)
|
||||||
{
|
{
|
||||||
spell = spells;
|
spell = spells;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usedNumbers.contains(i % 9) && spell != null)
|
if (usedNumbers.contains(i % 9) && spell != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
int spellLevel = wizard == null ? 1 : wizard.getSpellLevel(spell);
|
int spellLevel = wizard == null ? 1 : wizard.getSpellLevel(spell);
|
||||||
|
|
||||||
if (spellLevel > 0)
|
if (spellLevel > 0)
|
||||||
{
|
{
|
||||||
ItemBuilder builder = new ItemBuilder(spell.getSpellItem());
|
ItemBuilder builder = new ItemBuilder(spell.getSpellItem());
|
||||||
builder.setTitle(spell.getElement().getColor() + spell.getSpellName());
|
|
||||||
builder.addLore("");
|
|
||||||
builder.addLore(C.cBlue + C.Bold + "Spell Level: " + C.cWhite + spellLevel);
|
|
||||||
builder.addLore(C.cBlue + C.Bold + "Mana Cost: " + C.cWhite
|
|
||||||
+ (wizard == null ? spell.getBaseManaCost() : spell.getManaCost(wizard)));
|
|
||||||
builder.addLore(C.cBlue + C.Bold + "Cooldown: " + C.cWhite
|
|
||||||
+ (wizard == null ? spell.getBaseCooldown() : spell.getSpellCooldown(wizard)) + " seconds");
|
|
||||||
builder.addLore("");
|
|
||||||
|
|
||||||
for (String lore : spell.getDesc())
|
builder.setTitle(spell.getElement().getColor() + spell.getSpellName());
|
||||||
{
|
|
||||||
builder.addLore(C.cGray + lore, 35);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wizard == null)
|
builder.addLore("");
|
||||||
{
|
builder.addLore(C.cBlue + C.Bold + "Spell Level: " + C.cWhite + spellLevel);
|
||||||
addItem(i, new ShopItem(builder.build(), spell.name(), spell.name(), 1, true, true));
|
builder.addLore(C.cBlue + C.Bold + "Mana Cost: " + C.cWhite
|
||||||
}
|
+ (wizard == null ? spell.getBaseManaCost() : spell.getManaCost(wizard)));
|
||||||
else
|
builder.addLore(C.cBlue + C.Bold + "Cooldown: " + C.cWhite
|
||||||
{
|
+ (wizard == null ? spell.getBaseCooldown() : spell.getSpellCooldown(wizard)) + " seconds");
|
||||||
addButton(i, new ShopItem(builder.build(), spell.name(), spell.name(), 1, true, true), new SpellButton(
|
builder.addLore("");
|
||||||
this, spell));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
addItem(i, new ShopItem(new ItemBuilder(Material.INK_SACK, 1, (byte) 8).setTitle(C.cRed + C.Bold + "Unknown")
|
|
||||||
.build(), "Unknown", "Unknown", 1, true, true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!usedNumbers.contains(i % 9))
|
|
||||||
{
|
|
||||||
addItem(i, new ShopItem(new ItemBuilder(Material.STAINED_GLASS_PANE, 1, (byte) 15).setTitle(C.cRed + "").build(),
|
|
||||||
"No Item", "No Item", 1, true, true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Wizards getWizards()
|
for (String lore : spell.getDesc())
|
||||||
{
|
{
|
||||||
return _wizard;
|
builder.addLore(C.cGray + lore, 40);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wizard == null)
|
||||||
|
{
|
||||||
|
addItem(i, new ShopItem(builder.build(), spell.name(), spell.name(), 1, true, true));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
builder.addLore("");
|
||||||
|
|
||||||
|
builder.addLore(C.cPurple + C.Bold + "LEFT CLICK" + C.cDGreen + " Bind to Wand");
|
||||||
|
|
||||||
|
builder.addLore(C.cGreen + C.Bold + "RIGHT CLICK" + C.cBlue + " Quickcast Spell");
|
||||||
|
|
||||||
|
addButton(i, new ShopItem(builder.build(), spell.name(), spell.name(), 1, true, true), new SpellButton(
|
||||||
|
this, spell));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addItem(i, new ShopItem(new ItemBuilder(Material.INK_SACK, 1, (byte) 8).setTitle(C.cRed + C.Bold + "Unknown")
|
||||||
|
.build(), "Unknown", "Unknown", 1, true, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!usedNumbers.contains(i % 9))
|
||||||
|
{
|
||||||
|
addItem(i, new ShopItem(new ItemBuilder(Material.STAINED_GLASS_PANE, 1, (byte) 15).setTitle(C.cRed + "").build(),
|
||||||
|
"No Item", "No Item", 1, true, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Wizards getWizards()
|
||||||
|
{
|
||||||
|
return _wizard;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -122,25 +122,6 @@ public enum SpellType // ❤
|
|||||||
|
|
||||||
"Use this! Heal yourself up!"),
|
"Use this! Heal yourself up!"),
|
||||||
|
|
||||||
/*Drain(SpellElement.MISC, // Spell element
|
|
||||||
"Drain", // Spell name
|
|
||||||
new ItemStack(Material.BUCKET), // Spell icon
|
|
||||||
SpellDrain.class, // Spell class
|
|
||||||
3, // Spell max level
|
|
||||||
30, // Mana cost
|
|
||||||
20, // Spell cooldown
|
|
||||||
-3, // Mana cost change per level
|
|
||||||
-4, // Cooldown change per level
|
|
||||||
3, // Item amount in loot
|
|
||||||
|
|
||||||
"",
|
|
||||||
|
|
||||||
"Right click other players with this spell",
|
|
||||||
|
|
||||||
"to empty their mana reserves!", TODO Make this area based and drain completely of mana or a rune and drain passively.
|
|
||||||
|
|
||||||
"You gain a third of the absorbed mana!"),*/
|
|
||||||
|
|
||||||
IcePrison(SpellElement.MISC, // Spell element
|
IcePrison(SpellElement.MISC, // Spell element
|
||||||
"Ice Prison", // Spell name
|
"Ice Prison", // Spell name
|
||||||
new ItemStack(Material.ICE), // Spell icon
|
new ItemStack(Material.ICE), // Spell icon
|
||||||
@ -246,9 +227,8 @@ public enum SpellType // ❤
|
|||||||
|
|
||||||
"",
|
"",
|
||||||
|
|
||||||
"The basic spell all beginner mages are taught.",
|
"Basic spell all beginner mages are taught," + " this creates a magic missile commonly attributed towards "
|
||||||
|
+ "the magic profession and homes in towards the closest target!"),
|
||||||
"This creates a magic missile that is commonly attributed to the magic profession."),
|
|
||||||
|
|
||||||
Napalm(SpellElement.ATTACK, // Spell element
|
Napalm(SpellElement.ATTACK, // Spell element
|
||||||
"Napalm", // Spell name
|
"Napalm", // Spell name
|
||||||
@ -288,11 +268,15 @@ public enum SpellType // ❤
|
|||||||
|
|
||||||
"",
|
"",
|
||||||
|
|
||||||
"Finally you too can be a",
|
"Firing rainbow beams of love and hope!",
|
||||||
|
|
||||||
"magical girl of love and hope!",
|
"This spell damages the target instantly!",
|
||||||
|
|
||||||
"* Damage lowers after 30 blocks!"),
|
"The thing is, to make this fit in with our",
|
||||||
|
|
||||||
|
"budget the damage will decrease after",
|
||||||
|
|
||||||
|
"30 blocks by 0.2 damage per block!"),
|
||||||
|
|
||||||
RainbowRoad(SpellElement.MISC, // Spell element
|
RainbowRoad(SpellElement.MISC, // Spell element
|
||||||
"Rainbow Road", // Spell name
|
"Rainbow Road", // Spell name
|
||||||
@ -319,16 +303,14 @@ public enum SpellType // ❤
|
|||||||
SpellRumble.class, // Spell class
|
SpellRumble.class, // Spell class
|
||||||
5, // Spell max level
|
5, // Spell max level
|
||||||
30, // Mana cost
|
30, // Mana cost
|
||||||
5, // Spell cooldown
|
15, // Spell cooldown
|
||||||
0, // Mana cost change per level
|
0, // Mana cost change per level
|
||||||
0, // Cooldown change per level
|
-1, // Cooldown change per level
|
||||||
10, // Item amount in loot
|
10, // Item amount in loot
|
||||||
|
|
||||||
C.cGold + C.Bold + "Damage: " + C.Bold + C.cWhite + "Spell Level + 2",
|
C.cGold + C.Bold + "Damage: " + C.Bold + C.cWhite + "Spell Level + 2",
|
||||||
|
|
||||||
C.cGold + C.Bold + "Explosion Damage:",
|
C.cGold + C.Bold + "Explosion Damage: " + C.Bold + C.cWhite + "Spell Level / 4",
|
||||||
|
|
||||||
C.Bold + C.cWhite + "((Spell Level / 4) + 1) x (1 - (Distance / 2))",
|
|
||||||
|
|
||||||
C.cGold + C.Bold + "Range: " + C.Bold + C.cWhite + "Spell Level x 10",
|
C.cGold + C.Bold + "Range: " + C.Bold + C.cWhite + "Spell Level x 10",
|
||||||
|
|
||||||
@ -645,7 +627,11 @@ public enum SpellType // ❤
|
|||||||
|
|
||||||
public ItemStack getSpellBook(Wizards wizards)
|
public ItemStack getSpellBook(Wizards wizards)
|
||||||
{
|
{
|
||||||
return makeSpell(wizards, new ItemBuilder(Material.ENCHANTED_BOOK).addLore(C.cAqua + "Click to level up this spell")
|
return makeSpell(wizards,
|
||||||
|
|
||||||
|
new ItemBuilder(_item)
|
||||||
|
|
||||||
|
.addLore(C.cAqua + "Click to level up this spell")
|
||||||
|
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
@ -681,7 +667,9 @@ public enum SpellType // ❤
|
|||||||
public ItemStack makeSpell(Wizards wizards, ItemStack item)
|
public ItemStack makeSpell(Wizards wizards, ItemStack item)
|
||||||
{
|
{
|
||||||
ItemBuilder builder = new ItemBuilder(item);
|
ItemBuilder builder = new ItemBuilder(item);
|
||||||
|
|
||||||
builder.setTitle(C.cDBlue + C.Bold + "Spell: " + _type._chatColor + getSpellName() + wizards.buildTime());
|
builder.setTitle(C.cDBlue + C.Bold + "Spell: " + _type._chatColor + getSpellName() + wizards.buildTime());
|
||||||
|
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -314,7 +314,6 @@ public class Wizards extends SoloGame
|
|||||||
|
|
||||||
if (item != null && item.getType() == Material.BLAZE_ROD)
|
if (item != null && item.getType() == Material.BLAZE_ROD)
|
||||||
{
|
{
|
||||||
ItemMeta meta = item.getItemMeta();
|
|
||||||
String display;
|
String display;
|
||||||
|
|
||||||
if (type != null)
|
if (type != null)
|
||||||
@ -332,6 +331,8 @@ public class Wizards extends SoloGame
|
|||||||
display = C.cWhite + "Right click to set a spell";
|
display = C.cWhite + "Right click to set a spell";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
|
||||||
if (!meta.hasDisplayName() || !meta.getDisplayName().equals(display))
|
if (!meta.hasDisplayName() || !meta.getDisplayName().equals(display))
|
||||||
{
|
{
|
||||||
meta.setDisplayName(display);
|
meta.setDisplayName(display);
|
||||||
@ -686,15 +687,17 @@ public class Wizards extends SoloGame
|
|||||||
Entry<ItemStack, Integer> entry = _randomItems.get(UtilMath.r(_randomItems.size()));
|
Entry<ItemStack, Integer> entry = _randomItems.get(UtilMath.r(_randomItems.size()));
|
||||||
ItemStack item = entry.getKey().clone();
|
ItemStack item = entry.getKey().clone();
|
||||||
|
|
||||||
|
SpellType spellType = getSpell(item);
|
||||||
|
|
||||||
// Every chest has a spell.
|
// Every chest has a spell.
|
||||||
if (i > 5 && item.getType() != Material.ENCHANTED_BOOK)
|
if (i > 5 && spellType == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!containsSpell)
|
if (!containsSpell)
|
||||||
{
|
{
|
||||||
containsSpell = item.getType() == Material.ENCHANTED_BOOK;
|
containsSpell = spellType != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setAmount(item.getAmount() + UtilMath.r(entry.getValue() + 1));
|
item.setAmount(item.getAmount() + UtilMath.r(entry.getValue() + 1));
|
||||||
@ -710,12 +713,16 @@ public class Wizards extends SoloGame
|
|||||||
if (item.hasItemMeta() && item.getItemMeta().hasDisplayName())
|
if (item.hasItemMeta() && item.getItemMeta().hasDisplayName())
|
||||||
{
|
{
|
||||||
String title = item.getItemMeta().getDisplayName();
|
String title = item.getItemMeta().getDisplayName();
|
||||||
title = ChatColor.stripColor(title.substring(title.split(" ")[0].length() + 1));
|
|
||||||
|
|
||||||
for (SpellType spell : SpellType.values())
|
if (title.contains(" "))
|
||||||
{
|
{
|
||||||
if (spell.getSpellName().equals(title))
|
title = ChatColor.stripColor(title.substring(title.split(" ")[0].length() + 1));
|
||||||
return spell;
|
|
||||||
|
for (SpellType spell : SpellType.values())
|
||||||
|
{
|
||||||
|
if (spell.getSpellName().equals(title))
|
||||||
|
return spell;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -768,6 +775,7 @@ public class Wizards extends SoloGame
|
|||||||
public ItemStack makeUnusedWand()
|
public ItemStack makeUnusedWand()
|
||||||
{
|
{
|
||||||
ItemBuilder builder = new ItemBuilder(Material.BLAZE_ROD);
|
ItemBuilder builder = new ItemBuilder(Material.BLAZE_ROD);
|
||||||
|
|
||||||
builder.setTitle(ChatColor.WHITE + "Spell Wand" + buildTime());
|
builder.setTitle(ChatColor.WHITE + "Spell Wand" + buildTime());
|
||||||
|
|
||||||
builder.addLore(
|
builder.addLore(
|
||||||
@ -868,21 +876,18 @@ public class Wizards extends SoloGame
|
|||||||
if (event.getInventory().getHolder() instanceof Chest || event.getInventory().getHolder() instanceof DoubleChest)
|
if (event.getInventory().getHolder() instanceof Chest || event.getInventory().getHolder() instanceof DoubleChest)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (item != null && item.getType() == Material.ENCHANTED_BOOK)
|
SpellType spell = getSpell(item);
|
||||||
|
|
||||||
|
if (spell != null)
|
||||||
{
|
{
|
||||||
|
onSpellLearn(p, spell);
|
||||||
|
|
||||||
SpellType spell = getSpell(item);
|
event.setCancelled(true);
|
||||||
|
event.setCurrentItem(new ItemStack(Material.AIR));
|
||||||
|
|
||||||
if (spell != null)
|
p.playSound(p.getLocation(), Sound.NOTE_STICKS, 0.7F, 0);
|
||||||
{
|
|
||||||
onSpellLearn(p, spell);
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
event.setCurrentItem(new ItemStack(Material.AIR));
|
|
||||||
|
|
||||||
p.playSound(p.getLocation(), Sound.NOTE_STICKS, 0.7F, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.getType() == Material.BLAZE_ROD
|
if (item.getType() == Material.BLAZE_ROD
|
||||||
@ -956,31 +961,26 @@ public class Wizards extends SoloGame
|
|||||||
{
|
{
|
||||||
ItemStack item = event.getEntity().getItemStack();
|
ItemStack item = event.getEntity().getItemStack();
|
||||||
|
|
||||||
if (item.getType() == Material.ENCHANTED_BOOK)
|
SpellType spell = getSpell(item);
|
||||||
|
|
||||||
|
if (spell != null)
|
||||||
{
|
{
|
||||||
|
Hologram holo = new Hologram(getArcadeManager().getHologramManager(),
|
||||||
|
|
||||||
SpellType spell = getSpell(item);
|
event.getEntity().getLocation().add(0, 1, 0),
|
||||||
|
|
||||||
if (spell != null)
|
C.cDPurple + C.Bold + "Spellbook",
|
||||||
{
|
|
||||||
|
|
||||||
Hologram holo = new Hologram(getArcadeManager().getHologramManager(),
|
spell.getElement().getColor() + spell.getSpellName());
|
||||||
|
|
||||||
event.getEntity().getLocation().add(0, 1, 0),
|
holo.setFollowEntity(event.getEntity());
|
||||||
|
|
||||||
C.cDPurple + C.Bold + "Spellbook",
|
holo.setRemoveOnEntityDeath();
|
||||||
|
|
||||||
spell.getElement().getColor() + spell.getSpellName());
|
holo.start();
|
||||||
|
|
||||||
holo.setFollowEntity(event.getEntity());
|
_droppedWandsBooks.add(event.getEntity());
|
||||||
|
|
||||||
holo.setRemoveOnEntityDeath();
|
|
||||||
|
|
||||||
holo.start();
|
|
||||||
|
|
||||||
_droppedWandsBooks.add(event.getEntity());
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (item.getType() == Material.BLAZE_ROD)
|
else if (item.getType() == Material.BLAZE_ROD)
|
||||||
{
|
{
|
||||||
@ -1230,18 +1230,15 @@ public class Wizards extends SoloGame
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (item.getType() == Material.ENCHANTED_BOOK)
|
else if (getSpell(item) != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
SpellType spell = getSpell(item);
|
SpellType spell = getSpell(item);
|
||||||
|
|
||||||
if (spell != null)
|
onSpellLearn(p, spell);
|
||||||
{
|
|
||||||
onSpellLearn(p, spell);
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getItem().remove();
|
event.getItem().remove();
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (item.getType() == Material.NETHER_STAR)
|
else if (item.getType() == Material.NETHER_STAR)
|
||||||
|
@ -6,6 +6,7 @@ import mineplex.core.common.util.UtilPlayer;
|
|||||||
import nautilus.game.arcade.game.games.wizards.Spell;
|
import nautilus.game.arcade.game.games.wizards.Spell;
|
||||||
import nautilus.game.arcade.game.games.wizards.spellinterfaces.SpellClick;
|
import nautilus.game.arcade.game.games.wizards.spellinterfaces.SpellClick;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
@ -14,27 +15,38 @@ public class SpellGust extends Spell implements SpellClick
|
|||||||
{
|
{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void castSpell(Player player)
|
public void castSpell(final Player player)
|
||||||
{
|
{
|
||||||
Vector vector = player.getLocation().getDirection().setY(0).normalize().multiply(1.5).setY(0.3)
|
final Vector vector = player.getLocation().getDirection().setY(0).normalize().multiply(1.5).setY(0.3)
|
||||||
.multiply(1.2 + (getSpellLevel(player) * 0.4D));
|
.multiply(1.2 + (getSpellLevel(player) * 0.4D));
|
||||||
|
|
||||||
HashMap<Player, Double> effected = UtilPlayer.getPlayersInPyramid(player, 45, 10 * getSpellLevel(player));
|
final HashMap<Player, Double> effected = UtilPlayer.getPlayersInPyramid(player, 45, 10 * getSpellLevel(player));
|
||||||
|
|
||||||
for (Player target : effected.keySet())
|
|
||||||
{
|
|
||||||
Wizards.getArcadeManager().GetCondition().Factory().Falling("Gust", target, player, 10, false, true);
|
|
||||||
|
|
||||||
target.setVelocity(vector);
|
|
||||||
|
|
||||||
target.getWorld().playSound(target.getLocation(), Sound.BAT_TAKEOFF, 1, 0.7F);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!effected.isEmpty())
|
if (!effected.isEmpty())
|
||||||
{
|
{
|
||||||
player.playSound(player.getLocation(), Sound.BAT_TAKEOFF, 1, 0.7F);
|
|
||||||
|
|
||||||
charge(player);
|
charge(player);
|
||||||
|
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(Wizards.getArcadeManager().getPlugin(), new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
for (Player target : effected.keySet())
|
||||||
|
{
|
||||||
|
if (!Wizards.IsAlive(target))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Wizards.getArcadeManager().GetCondition().Factory().Falling("Gust", target, player, 10, false, true);
|
||||||
|
|
||||||
|
target.setVelocity(vector);
|
||||||
|
|
||||||
|
target.getWorld().playSound(target.getLocation(), Sound.BAT_TAKEOFF, 1, 0.7F);
|
||||||
|
}
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.BAT_TAKEOFF, 1, 0.7F);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
package nautilus.game.arcade.game.games.wizards.spells;
|
package nautilus.game.arcade.game.games.wizards.spells;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
import mineplex.core.common.util.UtilAction;
|
||||||
import mineplex.core.common.util.UtilParticle;
|
import mineplex.core.common.util.UtilParticle;
|
||||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilShapes;
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
import mineplex.core.projectile.IThrown;
|
import mineplex.core.projectile.IThrown;
|
||||||
import mineplex.core.projectile.ProjectileUser;
|
import mineplex.core.projectile.ProjectileUser;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import nautilus.game.arcade.game.games.wizards.Spell;
|
import nautilus.game.arcade.game.games.wizards.Spell;
|
||||||
import nautilus.game.arcade.game.games.wizards.spellinterfaces.SpellClick;
|
import nautilus.game.arcade.game.games.wizards.spellinterfaces.SpellClick;
|
||||||
|
|
||||||
@ -14,23 +19,19 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
|
||||||
public class SpellIceShards extends Spell implements SpellClick, IThrown
|
public class SpellIceShards extends Spell implements SpellClick, IThrown
|
||||||
{
|
{
|
||||||
// private HashMap<ArrayList, Long> _shardsExpire = new HashMap<ArrayList, Long>();
|
private HashMap<Entity, Location> _lastParticles = new HashMap<Entity, Location>();
|
||||||
// private HashMap<ArrayList<Entity>, HashMap<String, Integer>> _hitShards = new HashMap<ArrayList<Entity>, HashMap<String,
|
|
||||||
// Integer>>();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void castSpell(final Player player)
|
public void castSpell(final Player player)
|
||||||
{
|
{
|
||||||
// final ArrayList<Entity> firedShards = new ArrayList<Entity>();
|
|
||||||
// _shardsExpire.put(firedShards, System.currentTimeMillis() + 60000);
|
|
||||||
// _hitShards.put(firedShards, new HashMap<String, Integer>());
|
|
||||||
|
|
||||||
shoot(player);
|
shoot(player);
|
||||||
|
|
||||||
for (int i = 1; i <= getSpellLevel(player); i++)
|
for (int i = 1; i <= getSpellLevel(player); i++)
|
||||||
@ -51,31 +52,6 @@ public class SpellIceShards extends Spell implements SpellClick, IThrown
|
|||||||
charge(player);
|
charge(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@EventHandler
|
|
||||||
public void onSecond(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.SEC)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Wizards.IsLive())
|
|
||||||
return;
|
|
||||||
|
|
||||||
Iterator<Entry<ArrayList, Long>> itel = _shardsExpire.entrySet().iterator();
|
|
||||||
|
|
||||||
while (itel.hasNext())
|
|
||||||
{
|
|
||||||
Entry<ArrayList, Long> entry = itel.next();
|
|
||||||
|
|
||||||
if (entry.getValue() < System.currentTimeMillis())
|
|
||||||
{
|
|
||||||
itel.remove();
|
|
||||||
_hitShards.remove(entry.getKey());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
private void shoot(Player player)
|
private void shoot(Player player)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -88,13 +64,13 @@ public class SpellIceShards extends Spell implements SpellClick, IThrown
|
|||||||
ItemStackFactory.Instance.CreateStack(Material.GHAST_TEAR, (byte) 0, 1, "Ice Shard " + player.getName() + " "
|
ItemStackFactory.Instance.CreateStack(Material.GHAST_TEAR, (byte) 0, 1, "Ice Shard " + player.getName() + " "
|
||||||
+ System.currentTimeMillis()));
|
+ System.currentTimeMillis()));
|
||||||
|
|
||||||
// firedShards.add(ent);
|
UtilAction.velocity(ent, player.getLocation().getDirection(), 2, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection(), 2.3, false, 0, 0.2, 10, false);
|
|
||||||
Wizards.getArcadeManager().GetProjectile().AddThrow(ent, player, this, -1, true, true, true, false, 2f);
|
Wizards.getArcadeManager().GetProjectile().AddThrow(ent, player, this, -1, true, true, true, false, 2f);
|
||||||
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.CLICK, 1.2F, 0.8F);
|
player.getWorld().playSound(player.getLocation(), Sound.CLICK, 1.2F, 0.8F);
|
||||||
|
|
||||||
|
_lastParticles.put(ent, ent.getLocation());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,25 +79,6 @@ public class SpellIceShards extends Spell implements SpellClick, IThrown
|
|||||||
{
|
{
|
||||||
if (target != null && target instanceof Player)
|
if (target != null && target instanceof Player)
|
||||||
{
|
{
|
||||||
/*String name = ((Player) target).getName();
|
|
||||||
int timesHit = 0;
|
|
||||||
|
|
||||||
for (Entry<ArrayList<Entity>, HashMap<String, Integer>> entry : _hitShards.entrySet())
|
|
||||||
{
|
|
||||||
if (entry.getKey().contains(data.GetThrown()))
|
|
||||||
{
|
|
||||||
HashMap<String, Integer> map = entry.getValue();
|
|
||||||
|
|
||||||
if (map.containsKey(name))
|
|
||||||
{
|
|
||||||
timesHit = map.get(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
map.put(name, timesHit + 1);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Damage Event
|
// Damage Event
|
||||||
Wizards.getArcadeManager()
|
Wizards.getArcadeManager()
|
||||||
@ -129,11 +86,6 @@ public class SpellIceShards extends Spell implements SpellClick, IThrown
|
|||||||
.NewDamageEvent(target, data.GetThrower(), null, DamageCause.PROJECTILE, 4 /*+ (timesHit * 2)*/, true, true,
|
.NewDamageEvent(target, data.GetThrower(), null, DamageCause.PROJECTILE, 4 /*+ (timesHit * 2)*/, true, true,
|
||||||
false, "Ice Shard", "Ice Shard");
|
false, "Ice Shard", "Ice Shard");
|
||||||
|
|
||||||
/*if (timesHit > 0)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(data.GetThrower(), "Ice Shards" + ": " + F.elem(timesHit + " Consecutive Hits") + C.cGray
|
|
||||||
+ " (" + F.skill("+" + timesHit + " Damage") + C.cGray + ")");
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
handleShard(data);
|
handleShard(data);
|
||||||
@ -151,6 +103,27 @@ public class SpellIceShards extends Spell implements SpellClick, IThrown
|
|||||||
{
|
{
|
||||||
loc.getBlock().setType(Material.AIR);
|
loc.getBlock().setType(Material.AIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_lastParticles.remove(data.GetThrown());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onTick(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Entity entity : _lastParticles.keySet())
|
||||||
|
{
|
||||||
|
for (Location loc : UtilShapes.getLinesDistancedPoints(_lastParticles.get(entity), entity.getLocation(), 0.3))
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(ParticleType.BLOCK_CRACK.getParticle(Material.SNOW_BLOCK, 0), loc, 0, 0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
_lastParticles.put(entity, entity.getLocation());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -128,7 +128,7 @@ public class SpellImplode extends Spell implements SpellClick
|
|||||||
{
|
{
|
||||||
cancel();
|
cancel();
|
||||||
}
|
}
|
||||||
else if (timesRan++ >= 28)
|
else if (timesRan++ >= 20)
|
||||||
{
|
{
|
||||||
Iterator<Block> itel = effectedBlocks.iterator();
|
Iterator<Block> itel = effectedBlocks.iterator();
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ public class SpellLightningStrike extends Spell implements SpellClick
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}, 8);
|
}, 20);
|
||||||
|
|
||||||
charge(p);
|
charge(p);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
package nautilus.game.arcade.game.games.wizards.spells;
|
package nautilus.game.arcade.game.games.wizards.spells;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilBlock;
|
import mineplex.core.common.util.UtilBlock;
|
||||||
import mineplex.core.common.util.UtilParticle;
|
import mineplex.core.common.util.UtilParticle;
|
||||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilShapes;
|
||||||
import nautilus.game.arcade.game.games.wizards.Spell;
|
import nautilus.game.arcade.game.games.wizards.Spell;
|
||||||
import nautilus.game.arcade.game.games.wizards.spellinterfaces.SpellClick;
|
import nautilus.game.arcade.game.games.wizards.spellinterfaces.SpellClick;
|
||||||
|
|
||||||
@ -31,6 +35,7 @@ public class SpellMagicMissile extends Spell implements SpellClick
|
|||||||
new BukkitRunnable()
|
new BukkitRunnable()
|
||||||
{
|
{
|
||||||
private int dingsDone;
|
private int dingsDone;
|
||||||
|
private Location previousLocation = missileLocation;
|
||||||
|
|
||||||
private void burst()
|
private void burst()
|
||||||
{
|
{
|
||||||
@ -54,14 +59,33 @@ public class SpellMagicMissile extends Spell implements SpellClick
|
|||||||
|
|
||||||
if (entity != player && (!(entity instanceof Player) || Wizards.IsAlive(entity)))
|
if (entity != player && (!(entity instanceof Player) || Wizards.IsAlive(entity)))
|
||||||
{
|
{
|
||||||
Wizards.Manager.GetDamage().NewDamageEvent(entity, player, null, DamageCause.MAGIC, damage,
|
Wizards.Manager.GetDamage().NewDamageEvent(entity, player, null, DamageCause.MAGIC, damage, true,
|
||||||
true, true, false, "Magic Missile", "Magic Missile");
|
true, false, "Magic Missile", "Magic Missile");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UtilParticle.PlayParticle(ParticleType.MAGIC_CRIT, missileLocation, 0.5F, 0.5F, 0.5F, 0, 40);
|
playParticle(missileLocation, previousLocation);
|
||||||
|
|
||||||
|
for (int i = 0; i < 120; i++)
|
||||||
|
{
|
||||||
|
Vector vector = new Vector(new Random().nextFloat() - 0.5F, new Random().nextFloat() - 0.5F,
|
||||||
|
new Random().nextFloat() - 0.5F);
|
||||||
|
|
||||||
|
if (vector.length() >= 1)
|
||||||
|
{
|
||||||
|
i--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Location loc = missileLocation.clone();
|
||||||
|
|
||||||
|
loc.add(vector.multiply(2));
|
||||||
|
|
||||||
|
UtilParticle.PlayParticle(ParticleType.RED_DUST, loc, -1, 1, 1, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
missileLocation.getWorld().playSound(missileLocation, Sound.BAT_TAKEOFF, 1.2F, 1);
|
missileLocation.getWorld().playSound(missileLocation, Sound.BAT_TAKEOFF, 1.2F, 1);
|
||||||
cancel();
|
cancel();
|
||||||
}
|
}
|
||||||
@ -150,10 +174,12 @@ public class SpellMagicMissile extends Spell implements SpellClick
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
playParticle(missileLocation, previousLocation);
|
||||||
|
previousLocation = missileLocation.clone();
|
||||||
|
|
||||||
dingsDone++;
|
dingsDone++;
|
||||||
}
|
}
|
||||||
|
|
||||||
UtilParticle.PlayParticle(ParticleType.MAGIC_CRIT, missileLocation, 0, 0, 0, 0, 1);
|
|
||||||
missileLocation.getWorld().playSound(missileLocation, Sound.ORB_PICKUP, 0.7F, 0);
|
missileLocation.getWorld().playSound(missileLocation, Sound.ORB_PICKUP, 0.7F, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -161,4 +187,27 @@ public class SpellMagicMissile extends Spell implements SpellClick
|
|||||||
|
|
||||||
charge(player);
|
charge(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void playParticle(Location start, Location end)
|
||||||
|
{
|
||||||
|
final ArrayList<Location> locations = UtilShapes.getLinesDistancedPoints(start, end, 0.1);
|
||||||
|
|
||||||
|
new BukkitRunnable()
|
||||||
|
{
|
||||||
|
int timesRan;
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
for (Location loc : locations)
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(ParticleType.RED_DUST, loc, -1, 1, 1, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timesRan++ > 1)
|
||||||
|
{
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskTimer(Wizards.getArcadeManager().getPlugin(), 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ public class SpellNapalm extends Spell implements SpellClick
|
|||||||
{
|
{
|
||||||
final int length = 5 + (10 * getSpellLevel(player));
|
final int length = 5 + (10 * getSpellLevel(player));
|
||||||
|
|
||||||
final Vector vector = player.getLocation().getDirection().normalize().multiply(0.12);
|
final Vector vector = player.getLocation().getDirection().normalize().multiply(0.15);
|
||||||
|
|
||||||
final Location playerLoc = player.getLocation().add(0, 2, 0);
|
final Location playerLoc = player.getLocation().add(0, 2, 0);
|
||||||
final Location napalmLoc = playerLoc.clone().add(playerLoc.getDirection().normalize().multiply(2));
|
final Location napalmLoc = playerLoc.clone().add(playerLoc.getDirection().normalize().multiply(2));
|
||||||
@ -232,7 +232,7 @@ public class SpellNapalm extends Spell implements SpellClick
|
|||||||
size = Math.min(8, size + 0.06);
|
size = Math.min(8, size + 0.06);
|
||||||
}
|
}
|
||||||
|
|
||||||
blocksTravelled += 0.12;
|
blocksTravelled += 0.15;
|
||||||
|
|
||||||
if (lastTick++ % 8 == 0)
|
if (lastTick++ % 8 == 0)
|
||||||
{
|
{
|
||||||
|
@ -28,8 +28,11 @@ public class SpellSpectralArrow extends Spell implements SpellClick
|
|||||||
public void castSpell(Player player)
|
public void castSpell(Player player)
|
||||||
{
|
{
|
||||||
Arrow arrow = player.launchProjectile(Arrow.class);
|
Arrow arrow = player.launchProjectile(Arrow.class);
|
||||||
arrow.setVelocity(arrow.getVelocity().multiply(3));
|
|
||||||
|
arrow.setVelocity(arrow.getVelocity().multiply(2.3));
|
||||||
|
|
||||||
arrow.setMetadata("SpellLevel", new FixedMetadataValue(Wizards.getArcadeManager().getPlugin(), getSpellLevel(player)));
|
arrow.setMetadata("SpellLevel", new FixedMetadataValue(Wizards.getArcadeManager().getPlugin(), getSpellLevel(player)));
|
||||||
|
|
||||||
((CraftArrow) arrow).getHandle().fromPlayer = 0;
|
((CraftArrow) arrow).getHandle().fromPlayer = 0;
|
||||||
|
|
||||||
_spectralArrows.put(arrow, new Location[]
|
_spectralArrows.put(arrow, new Location[]
|
||||||
|
@ -29,7 +29,6 @@ public class SpellWizardsCompass extends Spell implements SpellClick
|
|||||||
public void castSpell(Player p)
|
public void castSpell(Player p)
|
||||||
{
|
{
|
||||||
Location loc = p.getEyeLocation().subtract(0, 1, 0);
|
Location loc = p.getEyeLocation().subtract(0, 1, 0);
|
||||||
ArrayList<Player> players = Wizards.GetPlayers(true);
|
|
||||||
|
|
||||||
final ArrayList<Integer[]> colors = new ArrayList<Integer[]>();
|
final ArrayList<Integer[]> colors = new ArrayList<Integer[]>();
|
||||||
|
|
||||||
@ -51,21 +50,19 @@ public class SpellWizardsCompass extends Spell implements SpellClick
|
|||||||
|
|
||||||
Collections.shuffle(colors);
|
Collections.shuffle(colors);
|
||||||
|
|
||||||
boolean foundSomeone = false;
|
for (Player enemy : Wizards.GetPlayers(true))
|
||||||
|
|
||||||
for (Player enemy : players)
|
|
||||||
{
|
{
|
||||||
if (UtilMath.offset(p, enemy) <= 10)
|
if (enemy == p)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
foundSomeone = true;
|
final double playerDist = Math.min(7, UtilMath.offset(enemy, p));
|
||||||
|
|
||||||
final Vector traj = UtilAlg.getTrajectory(p.getLocation(), enemy.getEyeLocation()).multiply(0.1);
|
final Vector traj = UtilAlg.getTrajectory(p.getLocation(), enemy.getEyeLocation()).multiply(0.1);
|
||||||
|
|
||||||
final Hologram hologram = new Hologram(Wizards.getArcadeManager().getHologramManager(), loc.clone().add(0, 0.3, 0)
|
final Hologram hologram = new Hologram(Wizards.getArcadeManager().getHologramManager(), loc.clone().add(0, 0.3, 0)
|
||||||
.add(traj.clone().normalize().multiply(7)), enemy.getName());
|
.add(traj.clone().normalize().multiply(playerDist)), enemy.getName());
|
||||||
|
|
||||||
hologram.setHologramTarget(HologramTarget.WHITELIST);
|
hologram.setHologramTarget(HologramTarget.WHITELIST);
|
||||||
hologram.addPlayer(p);
|
hologram.addPlayer(p);
|
||||||
@ -103,7 +100,7 @@ public class SpellWizardsCompass extends Spell implements SpellClick
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dist <= 7 * 10)
|
if (dist <= playerDist * 10)
|
||||||
{
|
{
|
||||||
for (int a = 0; a < 2; a++)
|
for (int a = 0; a < 2; a++)
|
||||||
{
|
{
|
||||||
@ -125,15 +122,8 @@ public class SpellWizardsCompass extends Spell implements SpellClick
|
|||||||
}.runTaskTimer(Wizards.getArcadeManager().getPlugin(), 0, 0);
|
}.runTaskTimer(Wizards.getArcadeManager().getPlugin(), 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!foundSomeone)
|
p.playSound(p.getLocation(), Sound.ZOMBIE_UNFECT, 1.5F, 1);
|
||||||
{
|
|
||||||
p.sendMessage(C.cRed + "All players are less than 10 blocks from you!");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p.playSound(p.getLocation(), Sound.ZOMBIE_UNFECT, 1.5F, 1);
|
|
||||||
|
|
||||||
charge(p);
|
charge(p);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user