titan cosmetics
This commit is contained in:
parent
193c5fe487
commit
98d988584d
|
@ -9,6 +9,7 @@ import org.bukkit.Location;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.EulerAngle;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public class UtilAlg
|
public class UtilAlg
|
||||||
|
@ -439,4 +440,9 @@ public class UtilAlg
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static EulerAngle vectorToEuler(Vector vector)
|
||||||
|
{
|
||||||
|
return new EulerAngle(Math.toRadians(GetPitch(vector)), Math.toRadians(GetYaw(vector)), 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package mineplex.core.disguise.disguises;
|
||||||
|
|
||||||
|
import org.bukkit.entity.*;
|
||||||
|
|
||||||
|
public class DisguiseGuardian extends DisguiseCreature
|
||||||
|
{
|
||||||
|
public DisguiseGuardian(org.bukkit.entity.Entity entity)
|
||||||
|
{
|
||||||
|
super(EntityType.GUARDIAN, entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setElder(boolean elder)
|
||||||
|
{
|
||||||
|
//data stuff
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isElder()
|
||||||
|
{
|
||||||
|
//return DataWatcher.getByte(13);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,35 +1,76 @@
|
||||||
package mineplex.core.gadget.gadgets;
|
package mineplex.core.gadget.gadgets;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.UtilEvent;
|
||||||
|
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseGuardian;
|
||||||
import mineplex.core.gadget.GadgetManager;
|
import mineplex.core.gadget.GadgetManager;
|
||||||
import mineplex.core.gadget.types.MorphGadget;
|
import mineplex.core.gadget.types.MorphGadget;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
|
||||||
public class MorphTitan extends MorphGadget
|
public class MorphTitan extends MorphGadget
|
||||||
{
|
{
|
||||||
public MorphTitan(GadgetManager manager)
|
public MorphTitan(GadgetManager manager)
|
||||||
{
|
{
|
||||||
super(manager, "Titanic Morph", new String[]
|
super(manager, "Elder Guardian Morph", new String[]
|
||||||
{
|
{
|
||||||
C.cWhite + "Coming Soon...",
|
C.cWhite + "From deep withinsdngsg",
|
||||||
" ",
|
" ",
|
||||||
C.cRed + "Unlocked with Titan Rank",
|
C.cRed + "Unlocked with Titan Rank",
|
||||||
},
|
},
|
||||||
-1,
|
-1,
|
||||||
Material.INK_SACK, (byte)8);
|
Material.PRISMARINE_SHARD, (byte)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void EnableCustom(Player player)
|
public void EnableCustom(Player player)
|
||||||
{
|
{
|
||||||
|
this.ApplyArmor(player);
|
||||||
|
|
||||||
|
DisguiseGuardian disguise = new DisguiseGuardian(player);
|
||||||
|
disguise.setName(player.getName(), Manager.getClientManager().Get(player).GetRank());
|
||||||
|
disguise.setCustomNameVisible(true);
|
||||||
|
Manager.getDisguiseManager().disguise(disguise);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void DisableCustom(Player player)
|
public void DisableCustom(Player player)
|
||||||
{
|
{
|
||||||
|
this.RemoveArmor(player);
|
||||||
|
Manager.getDisguiseManager().undisguise(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void Snort(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (!IsActive(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!UtilEvent.isAction(event, ActionType.L))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Recharge.Instance.use(player, GetName(), 2000, false, false))
|
||||||
|
return;
|
||||||
|
|
||||||
|
player.getWorld().playSound(player.getLocation(), Sound.ZOMBIE_UNFECT, 1f, 0.25f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void titanOwner(PlayerJoinEvent event)
|
||||||
|
{
|
||||||
|
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
|
||||||
|
{
|
||||||
|
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,7 @@ public abstract class Mount<T> extends SalesPackageBase implements Listener
|
||||||
Manager.setActive(player, this);
|
Manager.setActive(player, this);
|
||||||
EnableCustom(player);
|
EnableCustom(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void EnableCustom(Player player);
|
public abstract void EnableCustom(Player player);
|
||||||
public abstract void Disable(Player player);
|
public abstract void Disable(Player player);
|
||||||
|
|
||||||
|
|
|
@ -1,27 +1,126 @@
|
||||||
package mineplex.core.mount.types;
|
package mineplex.core.mount.types;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.ArmorStand;
|
||||||
|
import org.bukkit.entity.Slime;
|
||||||
import org.bukkit.entity.Horse.Color;
|
import org.bukkit.entity.Horse.Color;
|
||||||
import org.bukkit.entity.Horse.Style;
|
import org.bukkit.entity.Horse.Style;
|
||||||
import org.bukkit.entity.Horse.Variant;
|
import org.bukkit.entity.Horse.Variant;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.entity.EntityTargetEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.mount.HorseMount;
|
import mineplex.core.mount.HorseMount;
|
||||||
|
import mineplex.core.mount.Mount;
|
||||||
import mineplex.core.mount.MountManager;
|
import mineplex.core.mount.MountManager;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
|
||||||
public class MountTitan extends HorseMount
|
public class MountTitan extends Mount<MountTitanData>
|
||||||
{
|
{
|
||||||
public MountTitan(MountManager manager)
|
public MountTitan(MountManager manager)
|
||||||
{
|
{
|
||||||
super(manager, "Titanic Mount", new String[]
|
super(manager, "Molten Snake", Material.REDSTONE_BLOCK, (byte)0, new String[]
|
||||||
{
|
{
|
||||||
C.cWhite + "Coming Soon...",
|
C.cWhite + "From the distant ether realm,",
|
||||||
|
C.cWhite + "this prized dragon is said to",
|
||||||
|
C.cWhite + "obey only true Heroes!",
|
||||||
" ",
|
" ",
|
||||||
C.cRed + "Unlocked with Titan Rank",
|
C.cRed + "Unlocked with Titan Rank",
|
||||||
},
|
}, -1);
|
||||||
Material.INK_SACK,
|
}
|
||||||
(byte)8,
|
|
||||||
-1,
|
@Override
|
||||||
Color.BLACK, Style.BLACK_DOTS, Variant.UNDEAD_HORSE, 0.8, null);
|
public void EnableCustom(Player player)
|
||||||
|
{
|
||||||
|
player.leaveVehicle();
|
||||||
|
player.eject();
|
||||||
|
|
||||||
|
//Remove other mounts
|
||||||
|
Manager.DeregisterAll(player);
|
||||||
|
|
||||||
|
//Inform
|
||||||
|
UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + "."));
|
||||||
|
|
||||||
|
//Store
|
||||||
|
_active.put(player, new MountTitanData(player, GetName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void Disable(Player player)
|
||||||
|
{
|
||||||
|
MountTitanData data = _active.remove(player);
|
||||||
|
if (data != null)
|
||||||
|
{
|
||||||
|
data.clean();
|
||||||
|
|
||||||
|
//Inform
|
||||||
|
UtilPlayer.message(player, F.main("Mount", "You despawned " + F.elem(GetName()) + "."));
|
||||||
|
|
||||||
|
Manager.removeActive(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void update(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (MountTitanData data : _active.values())
|
||||||
|
{
|
||||||
|
data.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void interactMount(PlayerInteractEntityEvent event)
|
||||||
|
{
|
||||||
|
if (event.getRightClicked() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!GetActive().containsKey(event.getPlayer()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!GetActive().get(event.getPlayer()).ownsMount(event.getPlayer()))
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Mount", "This is not your Mount!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getPlayer().leaveVehicle();
|
||||||
|
event.getPlayer().eject();
|
||||||
|
|
||||||
|
GetActive().get(event.getPlayer()).mount(event.getPlayer(), event.getRightClicked());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void target(EntityTargetEvent event)
|
||||||
|
{
|
||||||
|
if (!(event.getEntity() instanceof Player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!GetActive().containsKey(event.getTarget()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!GetActive().get(event.getTarget()).ownsMount((Player)event.getEntity()))
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void titanOwner(PlayerJoinEvent event)
|
||||||
|
{
|
||||||
|
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
|
||||||
|
{
|
||||||
|
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,117 @@
|
||||||
|
|
||||||
|
|
||||||
|
package mineplex.core.mount.types;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.ArmorStand;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.MagmaCube;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Slime;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
public class MountTitanData
|
||||||
|
{
|
||||||
|
private String _owner;
|
||||||
|
|
||||||
|
private Slime _head;
|
||||||
|
|
||||||
|
private ArrayList<ArmorStand> _nodes;
|
||||||
|
|
||||||
|
public MountTitanData(Player player, String name)
|
||||||
|
{
|
||||||
|
_owner = player.getName();
|
||||||
|
|
||||||
|
//Nodes
|
||||||
|
_nodes = new ArrayList<ArmorStand>();
|
||||||
|
|
||||||
|
for (int i=0 ; i<30 ; i++)
|
||||||
|
{
|
||||||
|
ArmorStand node = player.getWorld().spawn(player.getLocation(), ArmorStand.class);
|
||||||
|
|
||||||
|
node.setVisible(false);
|
||||||
|
node.setGravity(false);
|
||||||
|
|
||||||
|
node.setHelmet(new ItemStack(Material.REDSTONE_BLOCK));
|
||||||
|
|
||||||
|
_nodes.add(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Head
|
||||||
|
_head = player.getWorld().spawn(player.getLocation(), MagmaCube.class);
|
||||||
|
_head.setSize(2);
|
||||||
|
|
||||||
|
_head.setCustomName(player.getName() + "'s " + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mount(Player player, Entity entity)
|
||||||
|
{
|
||||||
|
if (_head.equals(entity) || _nodes.contains(entity))
|
||||||
|
_head.setPassenger(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update()
|
||||||
|
{
|
||||||
|
//Head
|
||||||
|
if (_head.getPassenger() != null)
|
||||||
|
_head.setVelocity(_head.getPassenger().getLocation().getDirection().add(new Vector(0,0.2,0)));
|
||||||
|
|
||||||
|
Location infront = _head.getLocation().add(0, -1.5, 0);
|
||||||
|
|
||||||
|
//Move
|
||||||
|
for (int i=0 ; i<30 ; i++)
|
||||||
|
{
|
||||||
|
ArmorStand node = _nodes.get(i);
|
||||||
|
|
||||||
|
//Move
|
||||||
|
if (i == 0)
|
||||||
|
node.teleport(infront);
|
||||||
|
else if (UtilMath.offset(node.getLocation(), infront) > 0.5)
|
||||||
|
node.teleport(infront.add(UtilAlg.getTrajectory(infront, node.getLocation()).multiply(0.5)));
|
||||||
|
|
||||||
|
infront = node.getLocation();
|
||||||
|
|
||||||
|
//Rotation
|
||||||
|
node.setHeadPose(UtilAlg.vectorToEuler(UtilAlg.getTrajectory(infront, node.getLocation())));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Shuffle In
|
||||||
|
if (_head.getPassenger() == null)
|
||||||
|
{
|
||||||
|
for (int i=_nodes.size()-1 ; i>=0 ; i--)
|
||||||
|
{
|
||||||
|
ArmorStand node = _nodes.get(i);
|
||||||
|
|
||||||
|
if (i>0)
|
||||||
|
infront = _nodes.get(i-1).getLocation();
|
||||||
|
else
|
||||||
|
infront = _head.getLocation().add(0, -1.5, 0);
|
||||||
|
|
||||||
|
node.teleport(infront);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void clean()
|
||||||
|
{
|
||||||
|
_head.remove();
|
||||||
|
|
||||||
|
for (ArmorStand stand : _nodes)
|
||||||
|
stand.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean ownsMount(Player player)
|
||||||
|
{
|
||||||
|
return _owner.equals(player.getName());
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,6 +42,7 @@ public class PetFactory
|
||||||
_pets.put(EntityType.OCELOT, new Pet("Cat", EntityType.OCELOT, 6000));
|
_pets.put(EntityType.OCELOT, new Pet("Cat", EntityType.OCELOT, 6000));
|
||||||
_pets.put(EntityType.MUSHROOM_COW, new Pet("Mooshroom", EntityType.MUSHROOM_COW, 5000));
|
_pets.put(EntityType.MUSHROOM_COW, new Pet("Mooshroom", EntityType.MUSHROOM_COW, 5000));
|
||||||
_pets.put(EntityType.WITHER, new Pet("Widder", EntityType.WITHER, -1));
|
_pets.put(EntityType.WITHER, new Pet("Widder", EntityType.WITHER, -1));
|
||||||
|
_pets.put(EntityType.GUARDIAN, new Pet("Guardian", EntityType.GUARDIAN, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreatePetExtras()
|
private void CreatePetExtras()
|
||||||
|
|
|
@ -38,8 +38,10 @@ import org.bukkit.entity.Ageable;
|
||||||
import org.bukkit.entity.Creature;
|
import org.bukkit.entity.Creature;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Guardian;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Skeleton;
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.entity.Zombie;
|
import org.bukkit.entity.Zombie;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
@ -159,6 +161,12 @@ public class PetManager extends MiniClientPlugin<PetClient>
|
||||||
if (!Get(p).GetPets().containsKey(EntityType.WITHER))
|
if (!Get(p).GetPets().containsKey(EntityType.WITHER))
|
||||||
Get(p).GetPets().put(EntityType.WITHER, "Widder");
|
Get(p).GetPets().put(EntityType.WITHER, "Widder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rank.has(Rank.TITAN))
|
||||||
|
{
|
||||||
|
if (!Get(p).GetPets().containsKey(EntityType.GUARDIAN))
|
||||||
|
Get(p).GetPets().put(EntityType.GUARDIAN, "Guardian");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddPetOwner(Player player, EntityType entityType, Location location)
|
public void AddPetOwner(Player player, EntityType entityType, Location location)
|
||||||
|
|
|
@ -160,6 +160,7 @@ public class MapParser extends JavaPlugin implements Listener
|
||||||
player.addAttachment(plugin, "worldedit.*", hasPermission);
|
player.addAttachment(plugin, "worldedit.*", hasPermission);
|
||||||
player.addAttachment(plugin, "voxelsniper.sniper", hasPermission);
|
player.addAttachment(plugin, "voxelsniper.sniper", hasPermission);
|
||||||
player.addAttachment(plugin, "voxelsniper.brush.*", hasPermission);
|
player.addAttachment(plugin, "voxelsniper.brush.*", hasPermission);
|
||||||
|
player.addAttachment(plugin, "coloredsigns.format", hasPermission);
|
||||||
}
|
}
|
||||||
|
|
||||||
_permissionMap.put(player, hasPermission);
|
_permissionMap.put(player, hasPermission);
|
||||||
|
|
Loading…
Reference in New Issue