Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
cd15df0238
Binary file not shown.
After Width: | Height: | Size: 169 KiB |
Binary file not shown.
After Width: | Height: | Size: 119 KiB |
Binary file not shown.
After Width: | Height: | Size: 182 KiB |
|
@ -428,4 +428,15 @@ public class UtilAlg
|
||||||
{
|
{
|
||||||
return a.getWorld() == b.getWorld() && a.getX() == b.getX() && a.getY() == b.getY() && a.getZ() == b.getZ();
|
return a.getWorld() == b.getWorld() && a.getX() == b.getX() && a.getY() == b.getY() && a.getZ() == b.getZ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int randomMidpoint(int min, int max)
|
||||||
|
{
|
||||||
|
int variance = max - min;
|
||||||
|
|
||||||
|
int value = UtilMath.r(variance);
|
||||||
|
|
||||||
|
value += min;
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -435,10 +435,23 @@ public class UtilEnt
|
||||||
|
|
||||||
LivingEntity ent = (LivingEntity)cur;
|
LivingEntity ent = (LivingEntity)cur;
|
||||||
|
|
||||||
|
//Feet
|
||||||
double offset = UtilMath.offset(loc, ent.getLocation());
|
double offset = UtilMath.offset(loc, ent.getLocation());
|
||||||
|
|
||||||
if (offset < dR)
|
if (offset < dR)
|
||||||
|
{
|
||||||
ents.put(ent, 1 - (offset/dR));
|
ents.put(ent, 1 - (offset/dR));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Eyes
|
||||||
|
offset = UtilMath.offset(loc, ent.getEyeLocation());
|
||||||
|
|
||||||
|
if (offset < dR)
|
||||||
|
{
|
||||||
|
ents.put(ent, 1 - (offset/dR));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ents;
|
return ents;
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Database"/>
|
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Database"/>
|
||||||
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/jooq-3.5.2.jar"/>
|
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/jooq-3.5.2.jar"/>
|
||||||
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/craftbukkit.jar"/>
|
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/craftbukkit.jar"/>
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Core.Common"/>
|
|
||||||
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/NoCheatPlus.jar"/>
|
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/NoCheatPlus.jar"/>
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.PlayerCache"/>
|
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.PlayerCache"/>
|
||||||
|
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Core.Common"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package mineplex.core.disguise.disguises;
|
||||||
|
|
||||||
|
import org.bukkit.entity.*;
|
||||||
|
|
||||||
|
public class DisguiseMooshroom extends DisguiseAnimal
|
||||||
|
{
|
||||||
|
public DisguiseMooshroom(org.bukkit.entity.Entity entity)
|
||||||
|
{
|
||||||
|
super(EntityType.MUSHROOM_COW, entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHurtSound()
|
||||||
|
{
|
||||||
|
return "mob.cow.hurt";
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,7 +45,7 @@ public class ItemFleshHook extends ItemGadget implements IThrown
|
||||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||||
1.6, false, 0, 0.2, 10, false);
|
1.6, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true,
|
Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true, true,
|
||||||
Sound.FIRE_IGNITE, 1.4f, 0.8f, ParticleType.CRIT, null, 0, UpdateType.TICK, 0.5f);
|
Sound.FIRE_IGNITE, 1.4f, 0.8f, ParticleType.CRIT, null, 0, UpdateType.TICK, 0.5f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class ItemMelonLauncher extends ItemGadget implements IThrown
|
||||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||||
1, false, 0, 0.2, 10, false);
|
1, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true,
|
Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f, null, null, 0, UpdateType.TICK, 0.5f);
|
null, 1f, 1f, null, null, 0, UpdateType.TICK, 0.5f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -114,7 +114,7 @@ public class MorphBat extends MorphGadget implements IThrown
|
||||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||||
0.01, true, -0.3, 0, 10, false);
|
0.01, true, -0.3, 0, 10, false);
|
||||||
|
|
||||||
Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true,
|
Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f, null, null, 0, UpdateType.TICK, 0.5f);
|
null, 1f, 1f, null, null, 0, UpdateType.TICK, 0.5f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class MorphVillager extends MorphGadget implements IThrown
|
||||||
UtilAction.velocity(gem, player.getLocation().getDirection(), 1, false, 0, 0.2, 1, false);
|
UtilAction.velocity(gem, player.getLocation().getDirection(), 1, false, 0, 0.2, 1, false);
|
||||||
|
|
||||||
//Throw
|
//Throw
|
||||||
Manager.getProjectileManager().AddThrow(gem, player, this, -1, true, true, true,
|
Manager.getProjectileManager().AddThrow(gem, player, this, -1, true, true, true, true,
|
||||||
null, 1.4f, 0.8f, null, null, 0, UpdateType.TICK, 0.5f);
|
null, 1.4f, 0.8f, null, null, 0, UpdateType.TICK, 0.5f);
|
||||||
|
|
||||||
Manager.getDonationManager().RewardGems(null, this.GetName() + " Throw", player.getName(), player.getUniqueId(), -20);
|
Manager.getDonationManager().RewardGems(null, this.GetName() + " Throw", player.getName(), player.getUniqueId(), -20);
|
||||||
|
|
|
@ -31,107 +31,107 @@ public class ProjectileManager extends MiniPlugin
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, float hitboxGrow)
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle, float hitboxGrow)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, boolean pickup, float hitboxGrow)
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle, boolean pickup, float hitboxGrow)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, pickup,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, pickup,
|
||||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, Effect effect, int effectData, UpdateType effectRate , float hitboxGrow)
|
Sound sound, float soundVolume, float soundPitch, Effect effect, int effectData, UpdateType effectRate , float hitboxGrow)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, effect, effectData, effectRate, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
sound, soundVolume, soundPitch, effect, effectData, effectRate, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, Effect effect, int effectData, UpdateType effectRate, float hitboxGrow)
|
Sound sound, float soundVolume, float soundPitch, ParticleType particle, Effect effect, int effectData, UpdateType effectRate, float hitboxGrow)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, effect, effectData, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
sound, soundVolume, soundPitch, effect, effectData, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, UpdateType effectRate, float hitboxMult)
|
Sound sound, float soundVolume, float soundPitch, ParticleType particle, UpdateType effectRate, float hitboxMult)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, null, 0, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxMult));
|
sound, soundVolume, soundPitch, null, 0, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxMult));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, float pX, float pY, float pZ, float pS, int pC, UpdateType effectRate, float hitboxMult)
|
Sound sound, float soundVolume, float soundPitch, ParticleType particle, float pX, float pY, float pZ, float pS, int pC, UpdateType effectRate, float hitboxMult)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, null, 0, effectRate, particle, pX, pY, pZ, pS, pC, hitboxMult));
|
sound, soundVolume, soundPitch, null, 0, effectRate, particle, pX, pY, pZ, pS, pC, hitboxMult));
|
||||||
}
|
}
|
||||||
|
|
||||||
// WITH CAN HIT PLAYERS LIST:
|
// WITH CAN HIT PLAYERS LIST:
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, float hitboxGrow, List<Player> canHit)
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle, float hitboxGrow, List<Player> canHit)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, boolean pickup, float hitboxGrow, List<Player> canHit)
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle, boolean pickup, float hitboxGrow, List<Player> canHit)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, pickup,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, pickup,
|
||||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, Effect effect, int effectData, UpdateType effectRate , float hitboxGrow, List<Player> canHit)
|
Sound sound, float soundVolume, float soundPitch, Effect effect, int effectData, UpdateType effectRate , float hitboxGrow, List<Player> canHit)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, effect, effectData, effectRate, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
sound, soundVolume, soundPitch, effect, effectData, effectRate, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, Effect effect, int effectData, UpdateType effectRate, float hitboxGrow, List<Player> canHit)
|
Sound sound, float soundVolume, float soundPitch, ParticleType particle, Effect effect, int effectData, UpdateType effectRate, float hitboxGrow, List<Player> canHit)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, effect, effectData, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
sound, soundVolume, soundPitch, effect, effectData, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, UpdateType effectRate, float hitboxMult, List<Player> canHit)
|
Sound sound, float soundVolume, float soundPitch, ParticleType particle, UpdateType effectRate, float hitboxMult, List<Player> canHit)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, null, 0, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxMult, canHit));
|
sound, soundVolume, soundPitch, null, 0, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxMult, canHit));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle,
|
||||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, float pX, float pY, float pZ, float pS, int pC, UpdateType effectRate, float hitboxMult, List<Player> canHit)
|
Sound sound, float soundVolume, float soundPitch, ParticleType particle, float pX, float pY, float pZ, float pS, int pC, UpdateType effectRate, float hitboxMult, List<Player> canHit)
|
||||||
{
|
{
|
||||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||||
expireTime, hitPlayer, hitBlock, idle, false,
|
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||||
sound, soundVolume, soundPitch, null, 0, effectRate, particle, pX, pY, pZ, pS, pC, hitboxMult, canHit));
|
sound, soundVolume, soundPitch, null, 0, effectRate, particle, pX, pY, pZ, pS, pC, hitboxMult, canHit));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import net.minecraft.server.v1_7_R4.AxisAlignedBB;
|
import net.minecraft.server.v1_7_R4.AxisAlignedBB;
|
||||||
|
import net.minecraft.server.v1_7_R4.EntityPlayer;
|
||||||
import net.minecraft.server.v1_7_R4.MathHelper;
|
import net.minecraft.server.v1_7_R4.MathHelper;
|
||||||
import net.minecraft.server.v1_7_R4.MovingObjectPosition;
|
import net.minecraft.server.v1_7_R4.MovingObjectPosition;
|
||||||
import net.minecraft.server.v1_7_R4.Vec3D;
|
import net.minecraft.server.v1_7_R4.Vec3D;
|
||||||
|
@ -37,6 +38,7 @@ public class ProjectileUser
|
||||||
|
|
||||||
private long _expireTime;
|
private long _expireTime;
|
||||||
private boolean _hitPlayer = false;
|
private boolean _hitPlayer = false;
|
||||||
|
private boolean _hitNonPlayerEntity = false;
|
||||||
private boolean _hitBlock = false;
|
private boolean _hitBlock = false;
|
||||||
private boolean _idle = false;
|
private boolean _idle = false;
|
||||||
private boolean _pickup = false;
|
private boolean _pickup = false;
|
||||||
|
@ -61,7 +63,7 @@ public class ProjectileUser
|
||||||
private List<Player> _canHit;
|
private List<Player> _canHit;
|
||||||
|
|
||||||
public ProjectileUser(ProjectileManager throwInput, Entity thrown, LivingEntity thrower, IThrown callback,
|
public ProjectileUser(ProjectileManager throwInput, Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, boolean pickup,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle, boolean pickup,
|
||||||
Sound sound, float soundVolume, float soundPitch,
|
Sound sound, float soundVolume, float soundPitch,
|
||||||
Effect effect, int effectData, UpdateType effectRate,
|
Effect effect, int effectData, UpdateType effectRate,
|
||||||
ParticleType particle, float particleX, float particleY,
|
ParticleType particle, float particleX, float particleY,
|
||||||
|
@ -75,6 +77,7 @@ public class ProjectileUser
|
||||||
|
|
||||||
_expireTime = expireTime;
|
_expireTime = expireTime;
|
||||||
_hitPlayer = hitPlayer;
|
_hitPlayer = hitPlayer;
|
||||||
|
_hitNonPlayerEntity = hitNonPlayerEntity;
|
||||||
_hitBlock = hitBlock;
|
_hitBlock = hitBlock;
|
||||||
_idle = idle;
|
_idle = idle;
|
||||||
_pickup = pickup;
|
_pickup = pickup;
|
||||||
|
@ -97,7 +100,7 @@ public class ProjectileUser
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProjectileUser(ProjectileManager throwInput, Entity thrown, LivingEntity thrower, IThrown callback,
|
public ProjectileUser(ProjectileManager throwInput, Entity thrown, LivingEntity thrower, IThrown callback,
|
||||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, boolean pickup,
|
long expireTime, boolean hitPlayer, boolean hitNonPlayerEntity, boolean hitBlock, boolean idle, boolean pickup,
|
||||||
Sound sound, float soundVolume, float soundPitch,
|
Sound sound, float soundVolume, float soundPitch,
|
||||||
Effect effect, int effectData, UpdateType effectRate,
|
Effect effect, int effectData, UpdateType effectRate,
|
||||||
ParticleType particle, float particleX, float particleY,
|
ParticleType particle, float particleX, float particleY,
|
||||||
|
@ -111,6 +114,7 @@ public class ProjectileUser
|
||||||
|
|
||||||
_expireTime = expireTime;
|
_expireTime = expireTime;
|
||||||
_hitPlayer = hitPlayer;
|
_hitPlayer = hitPlayer;
|
||||||
|
_hitNonPlayerEntity = hitNonPlayerEntity;
|
||||||
_hitBlock = hitBlock;
|
_hitBlock = hitBlock;
|
||||||
_idle = idle;
|
_idle = idle;
|
||||||
_pickup = pickup;
|
_pickup = pickup;
|
||||||
|
@ -157,7 +161,7 @@ public class ProjectileUser
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_hitPlayer)
|
if (_hitPlayer || _hitNonPlayerEntity)
|
||||||
{
|
{
|
||||||
double distanceToEntity = 0.0D;
|
double distanceToEntity = 0.0D;
|
||||||
LivingEntity victim = null;
|
LivingEntity victim = null;
|
||||||
|
@ -181,6 +185,12 @@ public class ProjectileUser
|
||||||
((CraftEntity)_thrown).getHandle().motY,
|
((CraftEntity)_thrown).getHandle().motY,
|
||||||
((CraftEntity)_thrown).getHandle().motZ).grow(_hitboxGrow, _hitboxGrow, _hitboxGrow)))
|
((CraftEntity)_thrown).getHandle().motZ).grow(_hitboxGrow, _hitboxGrow, _hitboxGrow)))
|
||||||
{
|
{
|
||||||
|
if (!_hitNonPlayerEntity && !(entity instanceof EntityPlayer))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!_hitPlayer && entity instanceof EntityPlayer)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (entity instanceof net.minecraft.server.v1_7_R4.Entity)
|
if (entity instanceof net.minecraft.server.v1_7_R4.Entity)
|
||||||
{
|
{
|
||||||
Entity bukkitEntity = ((net.minecraft.server.v1_7_R4.Entity) entity).getBukkitEntity();
|
Entity bukkitEntity = ((net.minecraft.server.v1_7_R4.Entity) entity).getBukkitEntity();
|
||||||
|
@ -264,8 +274,8 @@ public class ProjectileUser
|
||||||
//Idle
|
//Idle
|
||||||
if (_idle)
|
if (_idle)
|
||||||
{
|
{
|
||||||
if (_thrown.getVelocity().length() < 0.2 &&
|
if (_thrown.getVelocity().length() < 0.2 && (_thrown.isOnGround() ||
|
||||||
!UtilBlock.airFoliage(_thrown.getLocation().getBlock().getRelative(BlockFace.DOWN)))
|
!UtilBlock.airFoliage(_thrown.getLocation().getBlock().getRelative(BlockFace.DOWN))))
|
||||||
{
|
{
|
||||||
_callback.Idle(this);
|
_callback.Idle(this);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -5,10 +5,6 @@ import java.sql.SQLException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import mineplex.core.MiniDbClientPlugin;
|
import mineplex.core.MiniDbClientPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
|
@ -16,6 +12,10 @@ import mineplex.core.common.util.NautHashMap;
|
||||||
import mineplex.core.task.repository.TaskRepository;
|
import mineplex.core.task.repository.TaskRepository;
|
||||||
import mineplex.playerCache.PlayerCache;
|
import mineplex.playerCache.PlayerCache;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public class TaskManager extends MiniDbClientPlugin<TaskClient>
|
public class TaskManager extends MiniDbClientPlugin<TaskClient>
|
||||||
{
|
{
|
||||||
private static Object _taskLock = new Object();
|
private static Object _taskLock = new Object();
|
||||||
|
|
|
@ -66,6 +66,7 @@ import mineplex.hub.modules.NewsManager;
|
||||||
import mineplex.hub.modules.ParkourManager;
|
import mineplex.hub.modules.ParkourManager;
|
||||||
import mineplex.hub.modules.SoccerManager;
|
import mineplex.hub.modules.SoccerManager;
|
||||||
import mineplex.hub.modules.TextManager;
|
import mineplex.hub.modules.TextManager;
|
||||||
|
import mineplex.hub.modules.TrickOrTreatManager;
|
||||||
import mineplex.hub.modules.WorldManager;
|
import mineplex.hub.modules.WorldManager;
|
||||||
import mineplex.hub.profile.gui.GUIProfile;
|
import mineplex.hub.profile.gui.GUIProfile;
|
||||||
import mineplex.hub.tutorial.TutorialManager;
|
import mineplex.hub.tutorial.TutorialManager;
|
||||||
|
@ -142,6 +143,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
private PacketHandler _packetHandler;
|
private PacketHandler _packetHandler;
|
||||||
private PersonalServerManager _personalServerManager;
|
private PersonalServerManager _personalServerManager;
|
||||||
// private HalloweenSpookinessManager _halloweenManager;
|
// private HalloweenSpookinessManager _halloweenManager;
|
||||||
|
// private TrickOrTreatManager _trickOrTreatManager;
|
||||||
|
|
||||||
private Location _spawn;
|
private Location _spawn;
|
||||||
private int _scoreboardTick = 0;
|
private int _scoreboardTick = 0;
|
||||||
|
@ -198,6 +200,8 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
new SoccerManager(this, _gadgetManager);
|
new SoccerManager(this, _gadgetManager);
|
||||||
new KothManager(this, _gadgetManager);
|
new KothManager(this, _gadgetManager);
|
||||||
|
|
||||||
|
new TrickOrTreatManager(_plugin, this, taskManager, donationManager, clientManager);
|
||||||
|
|
||||||
_petManager = petManager;
|
_petManager = petManager;
|
||||||
_partyManager = partyManager;
|
_partyManager = partyManager;
|
||||||
_preferences = preferences;
|
_preferences = preferences;
|
||||||
|
|
|
@ -0,0 +1,294 @@
|
||||||
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import mineplex.core.MiniPlugin;
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.Rank;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.Callback;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import mineplex.core.task.TaskManager;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.hub.HubManager;
|
||||||
|
import mineplex.hub.HubType;
|
||||||
|
import mineplex.hub.modules.trickortreat.Trick;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Instrument;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Note;
|
||||||
|
import org.bukkit.Note.Tone;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
public class TrickOrTreatManager extends MiniPlugin
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Mysticate
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
private HubManager _manager;
|
||||||
|
private TaskManager _taskManager;
|
||||||
|
private DonationManager _donationManager;
|
||||||
|
private CoreClientManager _coreClientManager;
|
||||||
|
|
||||||
|
private Calendar _cal = Calendar.getInstance();
|
||||||
|
|
||||||
|
private String _identifier = "villager";
|
||||||
|
|
||||||
|
private HashSet<String> _interacting = new HashSet<String>();
|
||||||
|
|
||||||
|
private String[] _nextYear = new String[]
|
||||||
|
{
|
||||||
|
"Nosy kids...",
|
||||||
|
"I'm out of candy!",
|
||||||
|
"Come back next year.",
|
||||||
|
"No double dipping!",
|
||||||
|
"I've seen that costume before...",
|
||||||
|
"You already have enough candy!",
|
||||||
|
"Once is enough.",
|
||||||
|
"Isn't it past your bedtime?",
|
||||||
|
"I already gave you my candy, what more do you want!",
|
||||||
|
"You again...",
|
||||||
|
"I said no more!",
|
||||||
|
"No taking the whole bowl.",
|
||||||
|
"I have my eye on you...",
|
||||||
|
"You know what happens to children who want more candy...",
|
||||||
|
"This was a great year, wasn't it?",
|
||||||
|
"Aww, did you come back just to talk to me?",
|
||||||
|
"*heavy staring*",
|
||||||
|
"Run along, now!",
|
||||||
|
"The real horror will be your dentist's face...",
|
||||||
|
"I've heard good things about the house down the road.",
|
||||||
|
"I started out with 700 pieces!",
|
||||||
|
"I might call it a night soon.",
|
||||||
|
"Meow",
|
||||||
|
"Sure is a mystical night, isn't it?",
|
||||||
|
"Do you want to hear my song? I wrote it myself!",
|
||||||
|
};
|
||||||
|
|
||||||
|
public TrickOrTreatManager(JavaPlugin plugin, HubManager manager, TaskManager taskManager, DonationManager donationManager, CoreClientManager coreClientManager)
|
||||||
|
{
|
||||||
|
super("Trick or Treat", plugin);
|
||||||
|
|
||||||
|
_manager = manager;
|
||||||
|
_taskManager = taskManager;
|
||||||
|
_donationManager = donationManager;
|
||||||
|
_coreClientManager = coreClientManager;
|
||||||
|
|
||||||
|
Trick.init(getPlugin());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void trickCommand(PlayerCommandPreprocessEvent event)
|
||||||
|
{
|
||||||
|
if (_manager.Type != HubType.Halloween)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!event.getMessage().toLowerCase().startsWith("/trick"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!_coreClientManager.hasRank(event.getPlayer(), Rank.JNR_DEV))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
new Trick(event.getPlayer(), "Command");
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
|
public void onInteract(final PlayerInteractEntityEvent event)
|
||||||
|
{
|
||||||
|
if (_manager.Type != HubType.Halloween)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!(event.getRightClicked() instanceof LivingEntity))
|
||||||
|
return;
|
||||||
|
|
||||||
|
LivingEntity en = (LivingEntity) event.getRightClicked();
|
||||||
|
|
||||||
|
if (en.getCustomName() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!new String(ChatColor.stripColor(en.getCustomName())).toLowerCase().trim().startsWith(_identifier))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
final String villagerName = ChatColor.stripColor(en.getCustomName()).substring(_identifier.length()).trim();
|
||||||
|
|
||||||
|
if (_interacting.contains(event.getPlayer().getName()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Recharge.Instance.use(event.getPlayer(), "ToT with " + villagerName, 2000, false, false))
|
||||||
|
return;
|
||||||
|
|
||||||
|
_interacting.add(event.getPlayer().getName());
|
||||||
|
|
||||||
|
final String task = "ToT " + _cal.get(Calendar.YEAR) + " " + villagerName;
|
||||||
|
|
||||||
|
runAsync(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
if (!_taskManager.hasCompletedTask(event.getPlayer(), task))
|
||||||
|
{
|
||||||
|
final boolean trick = UtilMath.r(10) > 5;
|
||||||
|
|
||||||
|
UtilPlayer.message(event.getPlayer(), C.cDGreenB + "You: " + C.cGreenB + "Trick or Treat!");
|
||||||
|
|
||||||
|
event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.NOTE_PIANO, 1F, 1F);
|
||||||
|
|
||||||
|
try { Thread.sleep(250); } catch (Exception ex) { } //XXX
|
||||||
|
|
||||||
|
event.getPlayer().playNote(event.getPlayer().getLocation(), Instrument.PIANO, Note.natural(1, Tone.D));
|
||||||
|
event.getPlayer().playNote(event.getPlayer().getLocation(), Instrument.PIANO, Note.natural(1, Tone.A));
|
||||||
|
|
||||||
|
try { Thread.sleep(1000); } catch (Exception ex) { } //XXX
|
||||||
|
|
||||||
|
if (trick) //Trick
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), C.cGoldB + villagerName + ": " + C.cYellowB + "I choose... TRICK!");
|
||||||
|
|
||||||
|
try { Thread.sleep(750); } catch (Exception ex) { } //XXX
|
||||||
|
|
||||||
|
_taskManager.completedTask(null, event.getPlayer(), task);
|
||||||
|
|
||||||
|
runSync(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
new Trick(event.getPlayer(), villagerName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), C.cGoldB + villagerName + ": " + C.cYellowB + "I choose... TREAT!");
|
||||||
|
|
||||||
|
try { Thread.sleep(750); } catch (Exception ex) { } //XXX
|
||||||
|
|
||||||
|
UtilPlayer.message(event.getPlayer(), C.cGoldB + villagerName + ": " + C.cYellowB + "Have a Happy Halloween!");
|
||||||
|
|
||||||
|
_taskManager.completedTask(new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run(Boolean data)
|
||||||
|
{
|
||||||
|
if (!data)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (UtilMath.r(10) > 5) //Coins
|
||||||
|
{
|
||||||
|
final int amount = Math.max(new Random().nextInt(100) + 100, (int) Math.floor(new Random().nextDouble() * 600));
|
||||||
|
_donationManager.RewardCoins(new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
public void run(Boolean completed)
|
||||||
|
{
|
||||||
|
if (completed)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Treat", "You received " + F.elem(C.cYellow + amount + " Coins") + " from " + F.name(villagerName) + "."));
|
||||||
|
|
||||||
|
//Sound
|
||||||
|
event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Treat", "There was an error giving " + F.elem(C.cYellow + amount + " Coins") + " to you. Please visit that villager again.") + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, "Treat " + villagerName, event.getPlayer().getName(), _coreClientManager.getAccountId(event.getPlayer()), amount);
|
||||||
|
}
|
||||||
|
else //Gems
|
||||||
|
{
|
||||||
|
final int amount = Math.max(new Random().nextInt(100) + 100, (int) Math.floor(new Random().nextDouble() * 600));
|
||||||
|
_donationManager.RewardGems(new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
public void run(Boolean completed)
|
||||||
|
{
|
||||||
|
if (completed)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Treat", "You received " + F.elem(C.cGreen + amount + " Gems") + " from " + F.name(villagerName) + "."));
|
||||||
|
|
||||||
|
//Sound
|
||||||
|
event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Treat", "There was an error giving " + F.elem(C.cGreen + amount + " Gems") + " to you. Please visit that villager again.") + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, "Treat " + villagerName, event.getPlayer().getName(), event.getPlayer().getUniqueId(), amount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, event.getPlayer(), task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), C.cGoldB + villagerName + ": " + C.cYellowB + UtilMath.randomElement(_nextYear));
|
||||||
|
}
|
||||||
|
|
||||||
|
_interacting.remove(event.getPlayer().getName());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void pumpkinHat(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.SEC)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (Player player : UtilServer.getPlayers())
|
||||||
|
{
|
||||||
|
if (player.getInventory().getHelmet() == null || player.getInventory().getHelmet().getType() == Material.AIR)
|
||||||
|
{
|
||||||
|
double rand = Math.random();
|
||||||
|
|
||||||
|
Material mat;
|
||||||
|
byte data = 0;
|
||||||
|
if (rand <= 0.25)
|
||||||
|
{
|
||||||
|
mat = Material.JACK_O_LANTERN;
|
||||||
|
}
|
||||||
|
else if (rand <= 0.5)
|
||||||
|
{
|
||||||
|
mat = Material.SKULL_ITEM;
|
||||||
|
data = 0; // Skeleton
|
||||||
|
}
|
||||||
|
else if (rand <= 0.75)
|
||||||
|
{
|
||||||
|
mat = Material.SKULL_ITEM;
|
||||||
|
data = 2; // Zombie
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mat = Material.SKULL_ITEM;
|
||||||
|
data = 4; // Creeper
|
||||||
|
}
|
||||||
|
|
||||||
|
player.getInventory().setHelmet(new ItemStack(mat, 1, (short) 0, data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,235 @@
|
||||||
|
package mineplex.hub.modules.trickortreat;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.NautHashMap;
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import net.minecraft.server.v1_7_R4.EntityLightning;
|
||||||
|
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityLook;
|
||||||
|
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityStatus;
|
||||||
|
import net.minecraft.server.v1_7_R4.PacketPlayOutSpawnEntityWeather;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
public class Trick
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Mysticate
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static interface ITrick
|
||||||
|
{
|
||||||
|
public String onTrick(Player player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static JavaPlugin _plugin;
|
||||||
|
private static HashSet<ITrick> _tricks = new HashSet<ITrick>();
|
||||||
|
private static NautHashMap<String, ITrick> _lastTricks = new NautHashMap<String, ITrick>();
|
||||||
|
|
||||||
|
public static void init(JavaPlugin plugin)
|
||||||
|
{
|
||||||
|
_plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ITrick nextTrick(String name)
|
||||||
|
{
|
||||||
|
if (!_lastTricks.containsKey(name))
|
||||||
|
return UtilAlg.Random(_tricks);
|
||||||
|
|
||||||
|
ITrick last = _lastTricks.remove(name);
|
||||||
|
|
||||||
|
//Attempt 10 times
|
||||||
|
for (int i = 0 ; i < 10 ; i++)
|
||||||
|
{
|
||||||
|
ITrick trick = UtilAlg.Random(_tricks);
|
||||||
|
if (trick == last)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
return trick;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Give up
|
||||||
|
return UtilAlg.Random(_tricks);
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
_tricks.add(new ITrick() // blindness
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String onTrick(Player player)
|
||||||
|
{
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_SCREAM, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 1.2F, 0F);
|
||||||
|
|
||||||
|
for (int i = 0 ; i < UtilMath.r(5) ; i++)
|
||||||
|
player.playSound(player.getLocation(), i % 2 == 0 ? Sound.GHAST_SCREAM : Sound.GHAST_SCREAM2, 1.5F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.AMBIENCE_THUNDER, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ZOMBIE_PIG_ANGRY, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.CREEPER_HISS, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ZOMBIE_REMEDY, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION, 400, 0));
|
||||||
|
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 400, 0));
|
||||||
|
|
||||||
|
return "See you around...";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
_tricks.add(new ITrick() // nausea
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String onTrick(Player player)
|
||||||
|
{
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_SCREAM, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 1.2F, 0F);
|
||||||
|
|
||||||
|
for (int i = 0 ; i < UtilMath.r(5) ; i++)
|
||||||
|
player.playSound(player.getLocation(), i % 2 == 0 ? Sound.GHAST_SCREAM : Sound.GHAST_SCREAM2, 1.5F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.AMBIENCE_THUNDER, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ZOMBIE_PIG_ANGRY, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.CREEPER_HISS, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.GHAST_MOAN, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.ZOMBIE_WOODBREAK, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 400, 3));
|
||||||
|
player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 400, 9));
|
||||||
|
|
||||||
|
return "Did someone eat too much candy?";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
_tricks.add(new ITrick() // Random teleport
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String onTrick(Player player)
|
||||||
|
{
|
||||||
|
player.teleport(player.getWorld().getHighestBlockAt(Math.max(UtilMath.r(100), 25), Math.max(UtilMath.r(100), 25)).getLocation().add(0, UtilMath.r(30), 0).clone().add(.5, 1, .5));
|
||||||
|
|
||||||
|
for (int i = 0 ; i < UtilMath.r(5) ; i++)
|
||||||
|
player.playSound(player.getLocation(), i % 2 == 0 ? Sound.GHAST_SCREAM : Sound.GHAST_SCREAM2, 1.5F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.AMBIENCE_THUNDER, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ZOMBIE_PIG_ANGRY, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.CREEPER_HISS, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 1.2F, 0F);
|
||||||
|
|
||||||
|
return "Goodbye...";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// _tricks.add(new ITrick() // Kick
|
||||||
|
// {
|
||||||
|
// @Override
|
||||||
|
// public String onTrick(final Player player)
|
||||||
|
// {
|
||||||
|
// for (int i = 0 ; i < 10 ; i++)
|
||||||
|
// player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 1.2F, 0F);
|
||||||
|
//
|
||||||
|
// Bukkit.getScheduler().runTaskLater(_plugin, new Runnable()
|
||||||
|
// {
|
||||||
|
// @Override
|
||||||
|
// public void run()
|
||||||
|
// {
|
||||||
|
// player.kickPlayer(C.cDRedB + "Trick: " + C.cRedB + "Better luck next time!");
|
||||||
|
// }
|
||||||
|
// }, 20);
|
||||||
|
//
|
||||||
|
// return "Off in such a hurry?";
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
_tricks.add(new ITrick() // Shocking strikes
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String onTrick(final Player player)
|
||||||
|
{
|
||||||
|
for (int i = 0 ; i < UtilMath.r(5) ; i++)
|
||||||
|
player.playSound(player.getLocation(), i % 2 == 0 ? Sound.GHAST_SCREAM : Sound.GHAST_SCREAM2, 1.5F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.AMBIENCE_THUNDER, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ZOMBIE_PIG_ANGRY, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.CREEPER_HISS, 1.2F, 0F);
|
||||||
|
|
||||||
|
for (int i = 0 ; i < 5 ; i++)
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_SCREAM, 1.2F, 0F);
|
||||||
|
|
||||||
|
UtilPlayer.sendPacket(player, new PacketPlayOutSpawnEntityWeather(new EntityLightning(((CraftWorld) player.getWorld()).getHandle(), player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ(), true, false)));
|
||||||
|
|
||||||
|
for (int i = 0 ; i < 20 ; i++)
|
||||||
|
{
|
||||||
|
Bukkit.getScheduler().runTaskLater(_plugin, new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
UtilPlayer.sendPacket(player, new PacketPlayOutEntityStatus(((CraftPlayer) player).getHandle(), (byte) 2));
|
||||||
|
}
|
||||||
|
}, 2 * i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "I hope you're not too shocked...";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
_tricks.add(new ITrick() // Creepy head spazmes
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String onTrick(final Player player)
|
||||||
|
{
|
||||||
|
for (int i = 0 ; i < UtilMath.r(5) ; i++)
|
||||||
|
player.playSound(player.getLocation(), i % 2 == 0 ? Sound.GHAST_SCREAM : Sound.GHAST_SCREAM2, 1.5F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.AMBIENCE_THUNDER, 1.2F, 0F);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ZOMBIE_PIG_ANGRY, 1.2F, 0F);
|
||||||
|
player.playSound(player.getLocation(), Sound.CREEPER_HISS, 1.2F, 0F);
|
||||||
|
|
||||||
|
for (int i = 0 ; i < 5 ; i++)
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_SCREAM, 1.2F, 0F);
|
||||||
|
|
||||||
|
for (int i = 0 ; i < 40 ; i++)
|
||||||
|
{
|
||||||
|
final int i2 = i;
|
||||||
|
Bukkit.getScheduler().runTaskLater(_plugin, new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
UtilPlayer.sendPacket(player, new PacketPlayOutEntityLook(player.getEntityId(), (byte) player.getLocation().getYaw(), (byte) ((i2 % 2 == 0 ? 1 : -1) * 80), true));
|
||||||
|
}
|
||||||
|
}, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "What is wrong with your head, dear?";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public Trick(Player player, String villager)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(player, C.cGoldB + villager + ": " + C.cYellowB + nextTrick(player.getName()).onTrick(player));
|
||||||
|
}
|
||||||
|
}
|
|
@ -204,7 +204,7 @@ public class BlockToss extends SkillCharge implements IThrown
|
||||||
|
|
||||||
//Action
|
//Action
|
||||||
UtilAction.velocity(block, cur.getLocation().getDirection(), mult, false, 0, 0, 1, true);
|
UtilAction.velocity(block, cur.getLocation().getDirection(), mult, false, 0, 0, 1, true);
|
||||||
Factory.Projectile().AddThrow(block, cur, this, -1, true, true, true,
|
Factory.Projectile().AddThrow(block, cur, this, -1, true, true, true, true,
|
||||||
null, 0, 0, null, 0, UpdateType.FASTEST, 1.2f);
|
null, 0, 0, null, 0, UpdateType.FASTEST, 1.2f);
|
||||||
|
|
||||||
//Event
|
//Event
|
||||||
|
|
|
@ -107,7 +107,7 @@ public class FleshHook extends SkillActiveCharge implements IThrown
|
||||||
UtilAction.velocity(item, cur.getLocation().getDirection(),
|
UtilAction.velocity(item, cur.getLocation().getDirection(),
|
||||||
1 + charge , false, 0, 0.2, 20, false);
|
1 + charge , false, 0, 0.2, 20, false);
|
||||||
|
|
||||||
Factory.Projectile().AddThrow(item, cur, this, -1, true, true, true,
|
Factory.Projectile().AddThrow(item, cur, this, -1, true, true, true, true,
|
||||||
Sound.FIRE_IGNITE, 1.4f, 0.8f, ParticleType.CRIT, UpdateType.TICK, 0.6f);
|
Sound.FIRE_IGNITE, 1.4f, 0.8f, ParticleType.CRIT, UpdateType.TICK, 0.6f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class FreezingBlast extends SkillActive implements IThrown
|
||||||
//Action
|
//Action
|
||||||
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(79));
|
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(79));
|
||||||
item.setVelocity(player.getLocation().getDirection());
|
item.setVelocity(player.getLocation().getDirection());
|
||||||
Factory.Projectile().AddThrow(item, player, this, -1, true, true, true,
|
Factory.Projectile().AddThrow(item, player, this, -1, true, true, true, true,
|
||||||
Sound.FIZZ, 0.6f, 1.6f, null, 0, UpdateType.FASTEST, 1f);
|
Sound.FIZZ, 0.6f, 1.6f, null, 0, UpdateType.FASTEST, 1f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class GlacialBlade extends SkillActive implements IThrown
|
||||||
//Action
|
//Action
|
||||||
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()).subtract(0, 0.2, 0), ItemStackFactory.Instance.CreateStack(370));
|
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()).subtract(0, 0.2, 0), ItemStackFactory.Instance.CreateStack(370));
|
||||||
UtilAction.velocity(item, player.getLocation().getDirection(), 1.6, false, 0, 0.2, 10, false);
|
UtilAction.velocity(item, player.getLocation().getDirection(), 1.6, false, 0, 0.2, 10, false);
|
||||||
Factory.Projectile().AddThrow(item, player, this, -1, true, true, true,
|
Factory.Projectile().AddThrow(item, player, this, -1, true, true, true, true,
|
||||||
null, 0, 0, ParticleType.SNOW_SHOVEL, UpdateType.TICK, 0.3f);
|
null, 0, 0, ParticleType.SNOW_SHOVEL, UpdateType.TICK, 0.3f);
|
||||||
|
|
||||||
//Effect
|
//Effect
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class IcePrison extends SkillActive implements IThrown
|
||||||
//Action
|
//Action
|
||||||
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(79));
|
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(79));
|
||||||
item.setVelocity(player.getLocation().getDirection());
|
item.setVelocity(player.getLocation().getDirection());
|
||||||
Factory.Projectile().AddThrow(item, player, this, -1, true, true, true,
|
Factory.Projectile().AddThrow(item, player, this, -1, true, true, true, true,
|
||||||
Sound.FIZZ, 0.6f, 1.6f, ParticleType.SNOW_SHOVEL, UpdateType.TICK, 1.5f);
|
Sound.FIZZ, 0.6f, 1.6f, ParticleType.SNOW_SHOVEL, UpdateType.TICK, 1.5f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -101,7 +101,7 @@ public class LightningOrb extends SkillActive implements IThrown
|
||||||
//Action
|
//Action
|
||||||
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(57));
|
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(57));
|
||||||
item.setVelocity(player.getLocation().getDirection());
|
item.setVelocity(player.getLocation().getDirection());
|
||||||
Factory.Projectile().AddThrow(item, player, this, System.currentTimeMillis() + 5000 - (400 * level), true, false, false,
|
Factory.Projectile().AddThrow(item, player, this, System.currentTimeMillis() + 5000 - (400 * level), true, true, false, false,
|
||||||
Sound.FIZZ, 0.6f, 1.6f, ParticleType.FIREWORKS_SPARK, UpdateType.TICK, 0.4f);
|
Sound.FIZZ, 0.6f, 1.6f, ParticleType.FIREWORKS_SPARK, UpdateType.TICK, 0.4f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class StaticLazer extends SkillChargeSword
|
||||||
{
|
{
|
||||||
super(skills, name, classType, skillType, cost, maxLevel,
|
super(skills, name, classType, skillType, cost, maxLevel,
|
||||||
0.012f, 0.004f,
|
0.012f, 0.004f,
|
||||||
12000, -1000, true, true,
|
16000, -1000, true, true,
|
||||||
false, true);
|
false, true);
|
||||||
|
|
||||||
SetDesc(new String[]
|
SetDesc(new String[]
|
||||||
|
@ -48,24 +48,25 @@ public class StaticLazer extends SkillChargeSword
|
||||||
"Taking damage cancels charge.",
|
"Taking damage cancels charge.",
|
||||||
"",
|
"",
|
||||||
"Deals #6#1 damage and travels up to",
|
"Deals #6#1 damage and travels up to",
|
||||||
"#20#10 blocks.",
|
"#20#10 blocks, but loses 1 damage",
|
||||||
|
"per 20 blocks travelled.",
|
||||||
});
|
});
|
||||||
|
|
||||||
_fireOnFull = false;
|
_fireOnFull = false;
|
||||||
_energyPerCharge = 1.2f;
|
_energyPerCharge = 2.4f;
|
||||||
setAchievementSkill(true);
|
setAchievementSkill(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String GetRechargeString()
|
public String GetRechargeString()
|
||||||
{
|
{
|
||||||
return "Recharge: " + "#12#-1 Seconds";
|
return "Recharge: " + "#16#-1 Seconds";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String GetEnergyString()
|
public String GetEnergyString()
|
||||||
{
|
{
|
||||||
return "Energy: " + "24 per Second";
|
return "Energy: " + "48 per Second";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -82,7 +83,7 @@ public class StaticLazer extends SkillChargeSword
|
||||||
Location newTarget = player.getEyeLocation().add(player.getLocation().getDirection().multiply(curRange));
|
Location newTarget = player.getEyeLocation().add(player.getLocation().getDirection().multiply(curRange));
|
||||||
|
|
||||||
//Hit Player
|
//Hit Player
|
||||||
HashMap<LivingEntity, Double> hits = UtilEnt.getInRadius(newTarget, 2);
|
HashMap<LivingEntity, Double> hits = UtilEnt.getInRadius(newTarget, 1.25);
|
||||||
hits.remove(player);
|
hits.remove(player);
|
||||||
if (!hits.isEmpty())
|
if (!hits.isEmpty())
|
||||||
break;
|
break;
|
||||||
|
@ -116,7 +117,7 @@ public class StaticLazer extends SkillChargeSword
|
||||||
|
|
||||||
//Damage Event
|
//Damage Event
|
||||||
Factory.Damage().NewDamageEvent(other, player, null,
|
Factory.Damage().NewDamageEvent(other, player, null,
|
||||||
DamageCause.CUSTOM, 6 + level * charge, true, true, false,
|
DamageCause.CUSTOM, 2 + ((4 + level) * charge) - (curRange * 0.05), true, true, false,
|
||||||
player.getName(), GetName());
|
player.getName(), GetName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mineplex.core.common.util.C;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
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.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
|
@ -36,6 +37,7 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||||
private Player _damagerPlayer;
|
private Player _damagerPlayer;
|
||||||
private Projectile _projectile;
|
private Projectile _projectile;
|
||||||
private Location _knockbackOrigin = null;
|
private Location _knockbackOrigin = null;
|
||||||
|
private Entity _knockbackSource = null;
|
||||||
|
|
||||||
//Flags
|
//Flags
|
||||||
private boolean _ignoreArmor = false;
|
private boolean _ignoreArmor = false;
|
||||||
|
@ -46,7 +48,7 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||||
|
|
||||||
public CustomDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile projectile,
|
public CustomDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile projectile,
|
||||||
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor,
|
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor,
|
||||||
String initialSource, String initialReason, boolean cancelled)
|
String initialSource, String initialReason, boolean cancelled, Entity knockbackSource)
|
||||||
{
|
{
|
||||||
_eventCause = cause;
|
_eventCause = cause;
|
||||||
|
|
||||||
|
@ -65,6 +67,8 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||||
_ignoreRate = ignoreRate;
|
_ignoreRate = ignoreRate;
|
||||||
_ignoreArmor = ignoreArmor;
|
_ignoreArmor = ignoreArmor;
|
||||||
|
|
||||||
|
_knockbackSource = knockbackSource;
|
||||||
|
|
||||||
if (initialSource != null && initialReason != null)
|
if (initialSource != null && initialReason != null)
|
||||||
AddMod(initialSource, initialReason, 0, true);
|
AddMod(initialSource, initialReason, 0, true);
|
||||||
|
|
||||||
|
@ -266,6 +270,9 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||||
|
|
||||||
public Location getKnockbackOrigin()
|
public Location getKnockbackOrigin()
|
||||||
{
|
{
|
||||||
|
if (_knockbackSource != null)
|
||||||
|
return _knockbackSource.getLocation();
|
||||||
|
|
||||||
return _knockbackOrigin;
|
return _knockbackOrigin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ import org.bukkit.Sound;
|
||||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity;
|
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.Arrow;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Fish;
|
import org.bukkit.entity.Fish;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -167,17 +168,35 @@ public class DamageManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
NewDamageEvent(damagee, damager, proj,
|
NewDamageEvent(damagee, damager, proj,
|
||||||
cause, damage, knockback, ignoreRate, ignoreArmor,
|
cause, damage, knockback, ignoreRate, ignoreArmor,
|
||||||
source, reason, false);
|
source, reason, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj,
|
||||||
|
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor,
|
||||||
|
String source, String reason, Entity knockbackSource)
|
||||||
|
{
|
||||||
|
NewDamageEvent(damagee, damager, proj,
|
||||||
|
cause, damage, knockback, ignoreRate, ignoreArmor,
|
||||||
|
source, reason, false, knockbackSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj,
|
public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj,
|
||||||
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor,
|
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor,
|
||||||
String source, String reason, boolean cancelled)
|
String source, String reason, boolean cancelled)
|
||||||
|
{
|
||||||
|
NewDamageEvent(damagee, damager, proj,
|
||||||
|
cause, damage, knockback, ignoreRate, ignoreArmor,
|
||||||
|
source, reason, cancelled, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj,
|
||||||
|
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor,
|
||||||
|
String source, String reason, boolean cancelled, Entity knockbackSource)
|
||||||
{
|
{
|
||||||
_plugin.getServer().getPluginManager().callEvent(
|
_plugin.getServer().getPluginManager().callEvent(
|
||||||
new CustomDamageEvent(damagee, damager, proj, cause, damage,
|
new CustomDamageEvent(damagee, damager, proj, cause, damage,
|
||||||
knockback, ignoreRate, ignoreArmor,
|
knockback, ignoreRate, ignoreArmor,
|
||||||
source, reason, cancelled));
|
source, reason, cancelled, knockbackSource));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
|
|
|
@ -42,9 +42,9 @@ public class Fire extends MiniPlugin
|
||||||
_damageManager = damageManager;
|
_damageManager = damageManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Add(Item item, LivingEntity owner, double expireTime, double delayTime, double burnTime, double d, String skillName)
|
public void Add(Item item, LivingEntity owner, double expireTime, double delayTime, double burnTime, double damage, String skillName)
|
||||||
{
|
{
|
||||||
_fire.put(item, new FireData(owner, expireTime, delayTime, burnTime, d, skillName));
|
_fire.put(item, new FireData(owner, expireTime, delayTime, burnTime, damage, skillName));
|
||||||
item.setPickupDelay(0);
|
item.setPickupDelay(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,6 @@
|
||||||
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/httpclient-4.2.jar"/>
|
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/httpclient-4.2.jar"/>
|
||||||
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/commons-codec-1.6.jar"/>
|
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/commons-codec-1.6.jar"/>
|
||||||
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/gson-2.2.1.jar"/>
|
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/gson-2.2.1.jar"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre1.8.0_60"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_60"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -158,7 +158,7 @@ public class PerkBlockTossEVO extends Perk implements IThrown
|
||||||
|
|
||||||
//Action
|
//Action
|
||||||
UtilAction.velocity(block, cur.getLocation().getDirection(), mult, false, 0.2, 0, 1, true);
|
UtilAction.velocity(block, cur.getLocation().getDirection(), mult, false, 0.2, 0, 1, true);
|
||||||
Manager.GetProjectile().AddThrow(block, cur, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(block, cur, this, -1, true, true, true, true,
|
||||||
null, 0, 0, null, 0, UpdateType.FASTEST, 1f);
|
null, 0, 0, null, 0, UpdateType.FASTEST, 1f);
|
||||||
|
|
||||||
//Event
|
//Event
|
||||||
|
|
|
@ -82,7 +82,7 @@ public class PerkSulphurBombEVO extends Perk implements IThrown
|
||||||
|
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false);
|
UtilAction.velocity(ent, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f,
|
null, 1f, 1f,
|
||||||
Effect.SMOKE, 1, UpdateType.SLOW,
|
Effect.SMOKE, 1, UpdateType.SLOW,
|
||||||
1f);
|
1f);
|
||||||
|
|
|
@ -229,7 +229,7 @@ public class BombLobbers extends TeamGame implements IThrown
|
||||||
canHit.add(pos);
|
canHit.add(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(tnt, player, this, -1L, true, false, true, .2F, canHit);
|
Manager.GetProjectile().AddThrow(tnt, player, this, -1L, true, true, false, true, .2F, canHit);
|
||||||
|
|
||||||
Manager.getPlugin().getServer().getPluginManager().callEvent(new TNTThrowEvent(player, tnt));
|
Manager.getPlugin().getServer().getPluginManager().callEvent(new TNTThrowEvent(player, tnt));
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ public class BombLobbers extends TeamGame implements IThrown
|
||||||
newTNT.setVelocity(tnt.getKey().getVelocity());
|
newTNT.setVelocity(tnt.getKey().getVelocity());
|
||||||
newTNT.setFuseTicks(60);
|
newTNT.setFuseTicks(60);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(newTNT, thrower, this, -1L, true, false, true, .2F);
|
Manager.GetProjectile().AddThrow(newTNT, thrower, this, -1L, true, true, false, true, .2F);
|
||||||
|
|
||||||
tnt.getKey().remove();
|
tnt.getKey().remove();
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class PerkMortar extends Perk
|
||||||
tnt.setFuseTicks(40);
|
tnt.setFuseTicks(40);
|
||||||
|
|
||||||
UtilAction.velocity(tnt, player.getLocation().getDirection(), 2.0D, false, 0.0D, 0.1D, 10.0D, false);
|
UtilAction.velocity(tnt, player.getLocation().getDirection(), 2.0D, false, 0.0D, 0.1D, 10.0D, false);
|
||||||
Manager.GetProjectile().AddThrow(tnt, player, l, -1L, true, false, false, .2F);
|
Manager.GetProjectile().AddThrow(tnt, player, l, -1L, true, true, false, false, .2F);
|
||||||
|
|
||||||
player.playSound(player.getLocation(), Sound.CREEPER_HISS, 3.0F, 1.0F);
|
player.playSound(player.getLocation(), Sound.CREEPER_HISS, 3.0F, 1.0F);
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ public class PerkMortar extends Perk
|
||||||
tnt.setFuseTicks(60);
|
tnt.setFuseTicks(60);
|
||||||
|
|
||||||
UtilAction.velocity(tnt, event.getTNT().getVelocity().add(new Vector(i / 5, 0, i / 5)).normalize(), 2.0D, false, 0.0D, 0.1D, 10.0D, false);
|
UtilAction.velocity(tnt, event.getTNT().getVelocity().add(new Vector(i / 5, 0, i / 5)).normalize(), 2.0D, false, 0.0D, 0.1D, 10.0D, false);
|
||||||
Manager.GetProjectile().AddThrow(tnt, event.getPlayer(), l, -1L, true, false, false, .2F);
|
Manager.GetProjectile().AddThrow(tnt, event.getPlayer(), l, -1L, true, true, false, false, .2F);
|
||||||
|
|
||||||
// l.addThrower(event.getPlayer(), tnt);
|
// l.addThrower(event.getPlayer(), tnt);
|
||||||
_scatter.add(tnt);
|
_scatter.add(tnt);
|
||||||
|
|
|
@ -26,6 +26,7 @@ import nautilus.game.arcade.game.GameTeam;
|
||||||
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||||
import nautilus.game.arcade.game.games.smash.kits.KitBlaze;
|
import nautilus.game.arcade.game.games.smash.kits.KitBlaze;
|
||||||
import nautilus.game.arcade.game.games.smash.kits.KitChicken;
|
import nautilus.game.arcade.game.games.smash.kits.KitChicken;
|
||||||
|
import nautilus.game.arcade.game.games.smash.kits.KitCow;
|
||||||
import nautilus.game.arcade.game.games.smash.kits.KitCreeper;
|
import nautilus.game.arcade.game.games.smash.kits.KitCreeper;
|
||||||
import nautilus.game.arcade.game.games.smash.kits.KitEnderman;
|
import nautilus.game.arcade.game.games.smash.kits.KitEnderman;
|
||||||
import nautilus.game.arcade.game.games.smash.kits.KitGolem;
|
import nautilus.game.arcade.game.games.smash.kits.KitGolem;
|
||||||
|
@ -109,6 +110,7 @@ public abstract class SuperSmash extends Game
|
||||||
new KitWitherSkeleton(manager),
|
new KitWitherSkeleton(manager),
|
||||||
new KitMagmaCube(manager),
|
new KitMagmaCube(manager),
|
||||||
new KitZombie(manager),
|
new KitZombie(manager),
|
||||||
|
new KitCow(manager),
|
||||||
|
|
||||||
new KitSheep(manager)
|
new KitSheep(manager)
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class KitChicken extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(4, 2.0, 0.1, 1.5),
|
new PerkSmashStats(4, 2.0, 0.15, 2),
|
||||||
new PerkFlap(0.8, 0.8, false),
|
new PerkFlap(0.8, 0.8, false),
|
||||||
new PerkEggGun(),
|
new PerkEggGun(),
|
||||||
new PerkChickenRocket()
|
new PerkChickenRocket()
|
||||||
|
@ -89,7 +89,7 @@ public class KitChicken extends SmashKit
|
||||||
ChatColor.RESET + "while also gaining permanant flight.",
|
ChatColor.RESET + "while also gaining permanant flight.",
|
||||||
}));
|
}));
|
||||||
|
|
||||||
player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.LEATHER_CHESTPLATE));
|
player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,15 +2,24 @@ package nautilus.game.arcade.game.games.smash.kits;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilInv;
|
import mineplex.core.common.util.UtilInv;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.disguise.disguises.DisguiseCow;
|
import mineplex.core.disguise.disguises.DisguiseCow;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseMooshroom;
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.game.games.smash.perks.PerkCowAngryHerd;
|
||||||
|
import nautilus.game.arcade.game.games.smash.perks.PerkCowMilkSpiral;
|
||||||
|
import nautilus.game.arcade.game.games.smash.perks.PerkCowMooshroomMadness;
|
||||||
|
import nautilus.game.arcade.game.games.smash.perks.PerkCowStampede;
|
||||||
import nautilus.game.arcade.kit.KitAvailability;
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
import nautilus.game.arcade.kit.Perk;
|
import nautilus.game.arcade.kit.Perk;
|
||||||
import nautilus.game.arcade.kit.SmashKit;
|
import nautilus.game.arcade.kit.SmashKit;
|
||||||
|
@ -20,7 +29,7 @@ public class KitCow extends SmashKit
|
||||||
{
|
{
|
||||||
public KitCow(ArcadeManager manager)
|
public KitCow(ArcadeManager manager)
|
||||||
{
|
{
|
||||||
super(manager, "Mad Cow", KitAvailability.Gem, 5000,
|
super(manager, "Cow", KitAvailability.Gem, 6000,
|
||||||
|
|
||||||
new String[]
|
new String[]
|
||||||
{
|
{
|
||||||
|
@ -28,14 +37,16 @@ public class KitCow extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(7, 1.0, 0.25, 8),
|
new PerkSmashStats(6, 0.9, 0.25, 7.5),
|
||||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||||
|
new PerkCowStampede(),
|
||||||
|
new PerkCowAngryHerd(),
|
||||||
|
new PerkCowMilkSpiral(),
|
||||||
|
new PerkCowMooshroomMadness(),
|
||||||
},
|
},
|
||||||
EntityType.COW,
|
EntityType.COW,
|
||||||
new ItemStack(Material.MILK_BUCKET),
|
new ItemStack(Material.MILK_BUCKET),
|
||||||
"", 0, null);
|
"Mooshroom Madness", 0, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,24 +55,56 @@ public class KitCow extends SmashKit
|
||||||
UtilInv.Clear(player);
|
UtilInv.Clear(player);
|
||||||
|
|
||||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1,
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1,
|
||||||
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Stampede",
|
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Angry Herd",
|
||||||
new String[]
|
new String[]
|
||||||
{
|
{
|
||||||
ChatColor.RESET + "",
|
ChatColor.RESET + "Send forth an angry herd of Cows",
|
||||||
|
ChatColor.RESET + "which deal damage and knockback",
|
||||||
|
ChatColor.RESET + "to opponents. Can hit multiple times.",
|
||||||
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SPADE, (byte)0, 1,
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SPADE, (byte)0, 1,
|
||||||
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Body Slam",
|
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Milk Spiral",
|
||||||
new String[]
|
new String[]
|
||||||
{
|
{
|
||||||
|
ChatColor.RESET + "Spray out a spiral of milk, propelling",
|
||||||
|
ChatColor.RESET + "yourself forwards through it. Deals damage",
|
||||||
|
ChatColor.RESET + "to opponents it collides with.",
|
||||||
ChatColor.RESET + "",
|
ChatColor.RESET + "",
|
||||||
|
ChatColor.RESET + "Crouching cancels propulsion.",
|
||||||
|
}));
|
||||||
|
|
||||||
|
if (Manager.GetGame().GetState() == GameState.Recruit)
|
||||||
|
{
|
||||||
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.LEATHER, (byte)0, 1,
|
||||||
|
C.cYellow + C.Bold + "Passive" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Stampede",
|
||||||
|
new String[]
|
||||||
|
{
|
||||||
|
ChatColor.RESET + "As you sprint, you will slowly",
|
||||||
|
ChatColor.RESET + "build up Speed Levels. You attacks",
|
||||||
|
ChatColor.RESET + "will deal extra damage and knockback",
|
||||||
|
ChatColor.RESET + "while you have Speed.",
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Manager.GetGame().GetState() == GameState.Recruit)
|
||||||
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.NETHER_STAR, (byte)0, 1,
|
||||||
|
C.cYellow + C.Bold + "Smash Crystal" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Mooshroom Madness",
|
||||||
|
new String[]
|
||||||
|
{
|
||||||
|
ChatColor.RESET + "Transform into a powerful Mooshroom Cow.",
|
||||||
|
ChatColor.RESET + "This grants you +1 damage on all attacks",
|
||||||
|
ChatColor.RESET + "and abilities, halves ability cooldowns,",
|
||||||
|
ChatColor.RESET + "and increases your health to 15 hearts.",
|
||||||
|
ChatColor.RESET + "",
|
||||||
|
ChatColor.RESET + "You remain a Mooshroom until you die.",
|
||||||
}));
|
}));
|
||||||
|
|
||||||
player.getInventory().setHelmet(ItemStackFactory.Instance.CreateStack(Material.IRON_HELMET));
|
player.getInventory().setHelmet(ItemStackFactory.Instance.CreateStack(Material.IRON_HELMET));
|
||||||
player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.IRON_CHESTPLATE));
|
player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.IRON_CHESTPLATE));
|
||||||
player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.IRON_LEGGINGS));
|
player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.IRON_LEGGINGS));
|
||||||
player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_BOOTS));
|
player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.IRON_BOOTS));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -21,6 +21,7 @@ import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
import nautilus.game.arcade.game.Game.GameState;
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.game.games.smash.perks.PerkEndermanTeleport;
|
||||||
import nautilus.game.arcade.kit.KitAvailability;
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
import nautilus.game.arcade.kit.Perk;
|
import nautilus.game.arcade.kit.Perk;
|
||||||
import nautilus.game.arcade.kit.SmashKit;
|
import nautilus.game.arcade.kit.SmashKit;
|
||||||
|
@ -50,6 +51,7 @@ public class KitEnderman extends SmashKit
|
||||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||||
new PerkBlink("Blink", 16, 6000),
|
new PerkBlink("Blink", 16, 6000),
|
||||||
new PerkBlockToss(),
|
new PerkBlockToss(),
|
||||||
|
new PerkEndermanTeleport(),
|
||||||
new PerkEndermanDragon()
|
new PerkEndermanDragon()
|
||||||
},
|
},
|
||||||
EntityType.ENDERMAN,
|
EntityType.ENDERMAN,
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class KitGolem extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(7, 1.0, 0.25, 8),
|
new PerkSmashStats(7, 1.0, 0.2, 8),
|
||||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||||
new PerkSlow(0),
|
new PerkSlow(0),
|
||||||
new PerkFissure(),
|
new PerkFissure(),
|
||||||
|
|
|
@ -214,13 +214,13 @@ public class KitKnight extends SmashKit
|
||||||
Horse horse = (Horse)damagee.getVehicle();
|
Horse horse = (Horse)damagee.getVehicle();
|
||||||
|
|
||||||
//Damage Event
|
//Damage Event
|
||||||
CustomDamageEvent newEvent = new CustomDamageEvent(horse, event.GetDamagerEntity(true), event.GetProjectile(),
|
// CustomDamageEvent newEvent = new CustomDamageEvent(horse, event.GetDamagerEntity(true), event.GetProjectile(),
|
||||||
event.GetCause(), event.GetDamageInitial(), true, false, false,
|
// event.GetCause(), event.GetDamageInitial(), true, false, false,
|
||||||
UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
// UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
||||||
|
|
||||||
_calledEvents.add(newEvent);
|
// _calledEvents.add(newEvent);
|
||||||
Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
// Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
||||||
_calledEvents.remove(newEvent);
|
// _calledEvents.remove(newEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
|
@ -246,13 +246,13 @@ public class KitKnight extends SmashKit
|
||||||
Player player = (Player)horse.getPassenger();
|
Player player = (Player)horse.getPassenger();
|
||||||
|
|
||||||
//Damage Event
|
//Damage Event
|
||||||
final CustomDamageEvent newEvent = new CustomDamageEvent(player, event.GetDamagerEntity(true), event.GetProjectile(),
|
// final CustomDamageEvent newEvent = new CustomDamageEvent(player, event.GetDamagerEntity(true), event.GetProjectile(),
|
||||||
event.GetCause(), event.GetDamageInitial(), true, false, false,
|
// event.GetCause(), event.GetDamageInitial(), true, false, false,
|
||||||
UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
// UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
||||||
|
//
|
||||||
_calledEvents.add(newEvent);
|
// _calledEvents.add(newEvent);
|
||||||
Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
// Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
||||||
_calledEvents.remove(newEvent);
|
// _calledEvents.remove(newEvent);
|
||||||
//Add Knockback
|
//Add Knockback
|
||||||
event.AddKnockback("Knockback Multiplier", 1.2);
|
event.AddKnockback("Knockback Multiplier", 1.2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class KitMagmaCube extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(5, 1.75, 0.4, 5),
|
new PerkSmashStats(5, 1.75, 0.35, 5),
|
||||||
new PerkDoubleJump("Double Jump", 1.2, 1, false),
|
new PerkDoubleJump("Double Jump", 1.2, 1, false),
|
||||||
new PerkMagmaBoost(),
|
new PerkMagmaBoost(),
|
||||||
new PerkMagmaBlast(),
|
new PerkMagmaBlast(),
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class KitPig extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(5, 1.7, 0.25, 5),
|
new PerkSmashStats(5, 1.5, 0.25, 5),
|
||||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||||
new PerkPigBaconBounce(),
|
new PerkPigBaconBounce(),
|
||||||
new PerkPigBaconBomb(),
|
new PerkPigBaconBomb(),
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class KitSkeletalHorse extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(6, 1.4, 0.35, 6),
|
new PerkSmashStats(6, 1.4, 0.3, 6),
|
||||||
new PerkDoubleJump("Double Jump", 1, 1, false),
|
new PerkDoubleJump("Double Jump", 1, 1, false),
|
||||||
new PerkHorseKick(),
|
new PerkHorseKick(),
|
||||||
new PerkBoneRush(),
|
new PerkBoneRush(),
|
||||||
|
@ -45,7 +45,7 @@ public class KitSkeletalHorse extends SmashKit
|
||||||
},
|
},
|
||||||
EntityType.HORSE,
|
EntityType.HORSE,
|
||||||
new ItemStack(Material.BONE),
|
new ItemStack(Material.BONE),
|
||||||
"Bone Storm", 24000, Sound.HORSE_SKELETON_DEATH);
|
"Bone Storm", 20000, Sound.HORSE_SKELETON_DEATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -37,10 +37,10 @@ public class KitSkeleton extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(5, 1.25, 0.20, 6),
|
new PerkSmashStats(5, 1.25, 0.15, 6),
|
||||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||||
new PerkFletcher(2, 4, false),
|
new PerkFletcher(3, 3, false),
|
||||||
new PerkKnockbackArrow(1.75),
|
new PerkKnockbackArrow(1.5),
|
||||||
new PerkBoneExplosion(),
|
new PerkBoneExplosion(),
|
||||||
new PerkRopedArrow("Roped Arrow", 1, 5000),
|
new PerkRopedArrow("Roped Arrow", 1, 5000),
|
||||||
new PerkBarrage(5, 300, true, false, true),
|
new PerkBarrage(5, 300, true, false, true),
|
||||||
|
|
|
@ -13,6 +13,7 @@ import mineplex.core.disguise.disguises.DisguiseSquid;
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
import nautilus.game.arcade.game.Game.GameState;
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.game.games.smash.perks.PerkFishFlurry;
|
||||||
import nautilus.game.arcade.kit.KitAvailability;
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
import nautilus.game.arcade.kit.Perk;
|
import nautilus.game.arcade.kit.Perk;
|
||||||
import nautilus.game.arcade.kit.SmashKit;
|
import nautilus.game.arcade.kit.SmashKit;
|
||||||
|
@ -38,6 +39,7 @@ public class KitSkySquid extends SmashKit
|
||||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||||
new PerkSuperSquid(),
|
new PerkSuperSquid(),
|
||||||
new PerkInkBlast(),
|
new PerkInkBlast(),
|
||||||
|
new PerkFishFlurry(),
|
||||||
new PerkStormSquid()
|
new PerkStormSquid()
|
||||||
},
|
},
|
||||||
EntityType.SQUID,
|
EntityType.SQUID,
|
||||||
|
@ -67,6 +69,16 @@ public class KitSkySquid extends SmashKit
|
||||||
ChatColor.RESET + "the sky in the direction you are looking.",
|
ChatColor.RESET + "the sky in the direction you are looking.",
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SPADE, (byte)0, 1,
|
||||||
|
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Fish Flurry",
|
||||||
|
new String[]
|
||||||
|
{
|
||||||
|
ChatColor.RESET + "Target a location to create a geyser.",
|
||||||
|
ChatColor.RESET + "After a few seconds, the geyser will explode",
|
||||||
|
ChatColor.RESET + "with all sorts of marine life which will",
|
||||||
|
ChatColor.RESET + "damage nearby opponents.",
|
||||||
|
}));
|
||||||
|
|
||||||
if (Manager.GetGame().GetState() == GameState.Recruit)
|
if (Manager.GetGame().GetState() == GameState.Recruit)
|
||||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.NETHER_STAR, (byte)0, 1,
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.NETHER_STAR, (byte)0, 1,
|
||||||
C.cYellow + C.Bold + "Smash Crystal" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Storm Squid",
|
C.cYellow + C.Bold + "Smash Crystal" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Storm Squid",
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class KitSlime extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(6, 1.75, 0.35, 3),
|
new PerkSmashStats(6, 1.75, 0.5, 3),
|
||||||
new PerkDoubleJump("Double Jump", 1.2, 1, false),
|
new PerkDoubleJump("Double Jump", 1.2, 1, false),
|
||||||
new PerkSlimeSlam(),
|
new PerkSlimeSlam(),
|
||||||
new PerkSlimeRocket(),
|
new PerkSlimeRocket(),
|
||||||
|
@ -142,7 +142,7 @@ public class KitSlime extends SmashKit
|
||||||
|
|
||||||
player.setExp(0.99f);
|
player.setExp(0.99f);
|
||||||
|
|
||||||
Manager.GetCondition().Factory().Speed("Giga Slime", player, player, 20, 1, false, false, false);
|
Manager.GetCondition().Factory().Speed("Giga Slime", player, player, 20, 2, false, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -92,8 +92,8 @@ public class KitSnowman extends SmashKit
|
||||||
new String[]
|
new String[]
|
||||||
{
|
{
|
||||||
ChatColor.RESET + "Creates a field of snow around you",
|
ChatColor.RESET + "Creates a field of snow around you",
|
||||||
ChatColor.RESET + "granting 150% damage to opponents",
|
ChatColor.RESET + "granting +1 damage and 60% knockback",
|
||||||
ChatColor.RESET + "who are standing on it.",
|
ChatColor.RESET + "to opponents standing on it.",
|
||||||
ChatColor.RESET + "",
|
ChatColor.RESET + "",
|
||||||
ChatColor.RESET + "Your aura shrinks on low energy.",
|
ChatColor.RESET + "Your aura shrinks on low energy.",
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class KitSpider extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(7, 1.5, 0.3, 6),
|
new PerkSmashStats(6, 1.5, 0.25, 6),
|
||||||
new PerkSpiderLeap(),
|
new PerkSpiderLeap(),
|
||||||
new PerkNeedler(),
|
new PerkNeedler(),
|
||||||
new PerkWebShot(),
|
new PerkWebShot(),
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class KitWolf extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(5, 1.6, 0.3, 4.5),
|
new PerkSmashStats(5, 1.6, 0.25, 4.5),
|
||||||
new PerkDoubleJump("Wolf Jump", 1.0, 1.0, true),
|
new PerkDoubleJump("Wolf Jump", 1.0, 1.0, true),
|
||||||
new PerkWolf(),
|
new PerkWolf(),
|
||||||
},
|
},
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class KitZombie extends SmashKit
|
||||||
|
|
||||||
new Perk[]
|
new Perk[]
|
||||||
{
|
{
|
||||||
new PerkSmashStats(6, 1.25, 0.3, 4.5),
|
new PerkSmashStats(6, 1.25, 0.25, 5),
|
||||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||||
new PerkFletcher(2, 2, false),
|
new PerkFletcher(2, 2, false),
|
||||||
new PerkKnockbackArrow(1.5),
|
new PerkKnockbackArrow(1.5),
|
||||||
|
@ -66,7 +66,7 @@ public class KitZombie extends SmashKit
|
||||||
}));
|
}));
|
||||||
|
|
||||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1,
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1,
|
||||||
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Deaths Grasp",
|
C.cYellow + C.Bold + "Left-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Deaths Grasp",
|
||||||
new String[]
|
new String[]
|
||||||
{
|
{
|
||||||
ChatColor.RESET + "Leap forwards. If you collide with an ",
|
ChatColor.RESET + "Leap forwards. If you collide with an ",
|
||||||
|
@ -99,6 +99,7 @@ public class KitZombie extends SmashKit
|
||||||
|
|
||||||
player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE));
|
player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE));
|
||||||
player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS));
|
player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS));
|
||||||
|
player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Cow;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
public class DataCowCharge
|
||||||
|
{
|
||||||
|
public long Time;
|
||||||
|
public Player Player;
|
||||||
|
public Vector Direction;
|
||||||
|
|
||||||
|
public Cow Cow;
|
||||||
|
|
||||||
|
public Location LastLoc;
|
||||||
|
public long LastMoveTime;
|
||||||
|
|
||||||
|
public DataCowCharge(Player player, Cow cow)
|
||||||
|
{
|
||||||
|
Time = System.currentTimeMillis();
|
||||||
|
|
||||||
|
Player = player;
|
||||||
|
|
||||||
|
Direction = player.getLocation().getDirection();
|
||||||
|
Direction.setY(0);
|
||||||
|
Direction.normalize();
|
||||||
|
Direction.multiply(0.75);
|
||||||
|
Direction.setY(-0.2);
|
||||||
|
|
||||||
|
Cow = cow;
|
||||||
|
|
||||||
|
LastLoc = Cow.getLocation();
|
||||||
|
LastMoveTime = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,112 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilAction;
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
public class DataCowMilkSpiral
|
||||||
|
{
|
||||||
|
public long Time;
|
||||||
|
public Player Player;
|
||||||
|
public Vector Direction;
|
||||||
|
|
||||||
|
public boolean SuperActive;
|
||||||
|
|
||||||
|
public boolean DisableVelocity = false;
|
||||||
|
|
||||||
|
public Location Spiral;
|
||||||
|
public Location SpiralA = null;
|
||||||
|
public Location SpiralB = null;
|
||||||
|
|
||||||
|
public DataCowMilkSpiral(Player player, boolean superActive)
|
||||||
|
{
|
||||||
|
Time = System.currentTimeMillis();
|
||||||
|
|
||||||
|
Player = player;
|
||||||
|
|
||||||
|
SuperActive = superActive;
|
||||||
|
|
||||||
|
Direction = player.getLocation().getDirection();
|
||||||
|
|
||||||
|
Spiral = player.getLocation().add(new Vector(0,1,0)).add(player.getLocation().getDirection().multiply(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean update()
|
||||||
|
{
|
||||||
|
//Propel
|
||||||
|
if (!DisableVelocity && !Player.isSneaking() && !UtilTime.elapsed(Time, SuperActive ? 2400 : 1800))
|
||||||
|
UtilAction.velocity(Player, Direction.clone().add(new Vector(0, 0.1, 0)).normalize().multiply(0.45));
|
||||||
|
else
|
||||||
|
DisableVelocity = true;
|
||||||
|
|
||||||
|
//Move Forward
|
||||||
|
Spiral.add(Direction.clone().multiply(0.7));
|
||||||
|
|
||||||
|
//Spiral
|
||||||
|
for (int i=0 ; i<2 ; i++)
|
||||||
|
{
|
||||||
|
double lead = i * ((2d * Math.PI)/2);
|
||||||
|
|
||||||
|
//Orbit
|
||||||
|
double speed = 3d;
|
||||||
|
double oX = -Math.sin(Player.getTicksLived()/speed + lead) * 1.5;
|
||||||
|
double oZ = Math.cos(Player.getTicksLived()/speed + lead) * 1.5;
|
||||||
|
|
||||||
|
Location newSpiral = Spiral.clone();
|
||||||
|
newSpiral.add(UtilAlg.getLeft(Direction).multiply(oX));
|
||||||
|
newSpiral.add(UtilAlg.getUp(Direction).multiply(oZ));
|
||||||
|
|
||||||
|
newSpiral.getWorld().playSound(newSpiral, Sound.SPLASH, 0.2f, 0.75f);
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
|
if (SpiralA != null)
|
||||||
|
{
|
||||||
|
while (UtilMath.offset(SpiralA, newSpiral) > 0.2)
|
||||||
|
{
|
||||||
|
SpiralA.add(UtilAlg.getTrajectory(SpiralA, newSpiral).multiply(0.2));
|
||||||
|
UtilParticle.PlayParticle(SuperActive ? ParticleType.RED_DUST : ParticleType.FIREWORKS_SPARK, SpiralA, 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SpiralA = newSpiral;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (SpiralB != null)
|
||||||
|
{
|
||||||
|
while (UtilMath.offset(SpiralB, newSpiral) > 0.1)
|
||||||
|
{
|
||||||
|
SpiralB.add(UtilAlg.getTrajectory(SpiralB, newSpiral).multiply(0.1));
|
||||||
|
UtilParticle.PlayParticle(SuperActive ? ParticleType.RED_DUST : ParticleType.FIREWORKS_SPARK, SpiralB, 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SpiralB = newSpiral;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (UtilBlock.solid(Spiral.getBlock()))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return (UtilTime.elapsed(Time, 3000));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class DataSquidGeyser
|
||||||
|
{
|
||||||
|
public Player Player;
|
||||||
|
public HashSet<Block> Blocks;
|
||||||
|
public long StartTime;
|
||||||
|
|
||||||
|
public DataSquidGeyser(Player player, HashSet<Block> blocks)
|
||||||
|
{
|
||||||
|
StartTime = System.currentTimeMillis();
|
||||||
|
Player = player;
|
||||||
|
Blocks = blocks;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,213 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Cow;
|
||||||
|
import org.bukkit.entity.MushroomCow;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
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.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseMooshroom;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
import nautilus.game.arcade.kit.SmashPerk;
|
||||||
|
|
||||||
|
public class PerkCowAngryHerd extends SmashPerk
|
||||||
|
{
|
||||||
|
private ArrayList<DataCowCharge> _active = new ArrayList<DataCowCharge>();
|
||||||
|
|
||||||
|
public PerkCowAngryHerd()
|
||||||
|
{
|
||||||
|
super("Angry Herd", new String[]
|
||||||
|
{
|
||||||
|
C.cYellow + "Right-Click" + C.cGray + " with Axe to use " + C.cGreen + "Angry Herd"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void shoot(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if (event.isCancelled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (UtilBlock.usable(event.getClickedBlock()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.getPlayer().getItemInHand() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (!Kit.HasKit(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Recharge.Instance.use(player, GetName(), isSuperActive(player) ? 6000 : 12000, true, true))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
for (double i=-2 ; i<3 ; i++)
|
||||||
|
{
|
||||||
|
Vector dir = player.getLocation().getDirection();
|
||||||
|
dir.setY(0);
|
||||||
|
dir.normalize();
|
||||||
|
|
||||||
|
Location loc = player.getLocation();
|
||||||
|
|
||||||
|
loc.add(dir);
|
||||||
|
loc.add(UtilAlg.getLeft(dir).multiply(i*1.5));
|
||||||
|
|
||||||
|
Manager.GetGame().CreatureAllowOverride = true;
|
||||||
|
Cow cow = player.getWorld().spawn(loc, isSuperActive(player) ? MushroomCow.class : Cow.class);
|
||||||
|
Manager.GetGame().CreatureAllowOverride = false;
|
||||||
|
|
||||||
|
_active.add(new DataCowCharge(player, cow));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Sound
|
||||||
|
player.getWorld().playSound(player.getLocation(), Sound.COW_IDLE, 2f, 0.6f);
|
||||||
|
|
||||||
|
//Inform
|
||||||
|
UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + "."));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void update(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Iterator<DataCowCharge> activeIter = _active.iterator();
|
||||||
|
|
||||||
|
while (activeIter.hasNext())
|
||||||
|
{
|
||||||
|
DataCowCharge data = activeIter.next();
|
||||||
|
|
||||||
|
//Expire
|
||||||
|
if (UtilTime.elapsed(data.Time, 3000))
|
||||||
|
{
|
||||||
|
if (data.Cow.isValid())
|
||||||
|
{
|
||||||
|
data.Cow.remove();
|
||||||
|
UtilParticle.PlayParticle(ParticleType.EXPLODE, data.Cow.getLocation().add(0, 1, 0), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
|
||||||
|
activeIter.remove();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set Moved
|
||||||
|
if (UtilMath.offset(data.Cow.getLocation(), data.LastLoc) > 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
data.LastLoc = data.Cow.getLocation();
|
||||||
|
data.LastMoveTime = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Stuck Remove
|
||||||
|
if (UtilTime.elapsed(data.LastMoveTime, 1000))
|
||||||
|
{
|
||||||
|
if (data.Cow.isValid())
|
||||||
|
{
|
||||||
|
data.Cow.remove();
|
||||||
|
UtilParticle.PlayParticle(ParticleType.EXPLODE, data.Cow.getLocation().add(0, 1, 0), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
|
||||||
|
activeIter.remove();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Gravity
|
||||||
|
if (UtilEnt.isGrounded(data.Cow))
|
||||||
|
{
|
||||||
|
data.Direction.setY(-0.1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data.Direction.setY(Math.max(-1, data.Direction.getY() - 0.03));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Move
|
||||||
|
if (UtilTime.elapsed(data.LastMoveTime, 350) && UtilEnt.isGrounded(data.Cow))
|
||||||
|
data.Cow.setVelocity(data.Direction.clone().add(new Vector(0,0.75,0)));
|
||||||
|
else
|
||||||
|
data.Cow.setVelocity(data.Direction);
|
||||||
|
|
||||||
|
if (Math.random() > 0.99)
|
||||||
|
data.Cow.getWorld().playSound(data.Cow.getLocation(), Sound.COW_IDLE, 1f, 1f);
|
||||||
|
|
||||||
|
if (Math.random() > 0.97)
|
||||||
|
data.Cow.getWorld().playSound(data.Cow.getLocation(), Sound.COW_WALK, 1f, 1.2f);
|
||||||
|
|
||||||
|
//Hit
|
||||||
|
for (Player player : Manager.GetGame().GetPlayers(true))
|
||||||
|
{
|
||||||
|
if (player.equals(data.Player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (UtilMath.offset(player, data.Cow) < 2.2)
|
||||||
|
{
|
||||||
|
if (Recharge.Instance.use(player, "Hit by " + data.Player.getName(), 600, false, false))
|
||||||
|
{
|
||||||
|
//Damage Event
|
||||||
|
Manager.GetDamage().NewDamageEvent(player, data.Player, null,
|
||||||
|
DamageCause.CUSTOM, 5, true, true, false,
|
||||||
|
UtilEnt.getName(data.Player), GetName(),
|
||||||
|
data.Cow);
|
||||||
|
|
||||||
|
UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, data.Cow.getLocation().add(0, 1, 0), 1f, 1f, 1f, 0, 12, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
|
||||||
|
data.Cow.getWorld().playSound(data.Cow.getLocation(), Sound.ZOMBIE_WOOD, 0.75f, 0.8f);
|
||||||
|
data.Cow.getWorld().playSound(data.Cow.getLocation(), Sound.COW_HURT, 1.5f, 0.75f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void Knockback(CustomDamageEvent event)
|
||||||
|
{
|
||||||
|
if (event.GetReason() == null || !event.GetReason().contains(GetName()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.AddKnockback(GetName(), 1.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSuperActive(Player player)
|
||||||
|
{
|
||||||
|
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||||
|
|
||||||
|
return disguise != null && disguise instanceof DisguiseMooshroom;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseMooshroom;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import nautilus.game.arcade.kit.SmashPerk;
|
||||||
|
|
||||||
|
public class PerkCowMilkSpiral extends SmashPerk
|
||||||
|
{
|
||||||
|
private HashMap<Player, DataCowMilkSpiral> _active = new HashMap<Player, DataCowMilkSpiral>();
|
||||||
|
|
||||||
|
public PerkCowMilkSpiral()
|
||||||
|
{
|
||||||
|
super("Milk Spiral", new String[]
|
||||||
|
{
|
||||||
|
C.cYellow + "Right Click" + C.cGray + " with Spade to " + C.cGreen + "Milk Spiral",
|
||||||
|
C.cGray + "Crouch to cancel movement for Milk Spiral"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void activate(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if (event.isCancelled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (UtilBlock.usable(event.getClickedBlock()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!event.getPlayer().getItemInHand().getType().toString().contains("_SPADE"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (!Kit.HasKit(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Recharge.Instance.use(player, GetName(), isSuperActive(player) ? 6000 : 12000, true, true))
|
||||||
|
return;
|
||||||
|
|
||||||
|
_active.put(player, new DataCowMilkSpiral(player, isSuperActive(player)));
|
||||||
|
|
||||||
|
//Inform
|
||||||
|
UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + "."));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void update(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Iterator<DataCowMilkSpiral> activeIter = _active.values().iterator();
|
||||||
|
|
||||||
|
while (activeIter.hasNext())
|
||||||
|
{
|
||||||
|
DataCowMilkSpiral data = activeIter.next();
|
||||||
|
|
||||||
|
if (data.update())
|
||||||
|
activeIter.remove();
|
||||||
|
|
||||||
|
for (Player player : Manager.GetGame().GetPlayers(true))
|
||||||
|
{
|
||||||
|
if (player.equals(data.Player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (UtilMath.offset(player.getLocation().add(0, 1, 0), data.Spiral) < 2)
|
||||||
|
{
|
||||||
|
Manager.GetDamage().NewDamageEvent(player, data.Player, null,
|
||||||
|
DamageCause.CUSTOM, 6, true, false, false,
|
||||||
|
player.getName(), GetName());
|
||||||
|
|
||||||
|
UtilParticle.PlayParticle(isSuperActive(player) ? ParticleType.RED_DUST : ParticleType.FIREWORKS_SPARK, player.getLocation().add(0, 1, 0), 0.2f, 0.2f, 0.2f, 0.3f, 30, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
player.getWorld().playSound(player.getLocation(), Sound.SPLASH, 0.25f, 2f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSuperActive(Player player)
|
||||||
|
{
|
||||||
|
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||||
|
|
||||||
|
return disguise != null && disguise instanceof DisguiseMooshroom;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseMooshroom;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
import nautilus.game.arcade.kit.SmashPerk;
|
||||||
|
|
||||||
|
public class PerkCowMooshroomMadness extends SmashPerk
|
||||||
|
{
|
||||||
|
private HashSet<String> _cowSuperActive = new HashSet<String>();
|
||||||
|
|
||||||
|
public PerkCowMooshroomMadness()
|
||||||
|
{
|
||||||
|
super("Mooshroom Madness", new String[]
|
||||||
|
{
|
||||||
|
}, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addSuperCustom(Player player)
|
||||||
|
{
|
||||||
|
_cowSuperActive.add(player.getName());
|
||||||
|
|
||||||
|
//Disguise
|
||||||
|
DisguiseMooshroom disguise = new DisguiseMooshroom(player);
|
||||||
|
|
||||||
|
if (Manager.GetGame().GetTeam(player) != null)
|
||||||
|
disguise.setName(Manager.GetGame().GetTeam(player).GetColor() + player.getName());
|
||||||
|
else
|
||||||
|
disguise.setName(player.getName());
|
||||||
|
|
||||||
|
disguise.setCustomNameVisible(true);
|
||||||
|
Manager.GetDisguise().disguise(disguise);
|
||||||
|
|
||||||
|
//Armor
|
||||||
|
player.setMaxHealth(30);
|
||||||
|
player.setHealth(30);
|
||||||
|
|
||||||
|
//Sound
|
||||||
|
player.getWorld().playSound(player.getLocation(), Sound.COW_HURT, 5f, 0.25f);
|
||||||
|
|
||||||
|
//Recharges
|
||||||
|
Recharge.Instance.recharge(player, "Angry Herd");
|
||||||
|
Recharge.Instance.recharge(player, "Milk Spiral");
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void damageBuff(CustomDamageEvent event)
|
||||||
|
{
|
||||||
|
Player player = event.GetDamagerPlayer(true);
|
||||||
|
if (player == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_cowSuperActive.contains(player.getName()))
|
||||||
|
{
|
||||||
|
event.AddMod(player.getName(), GetName(), 1, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSuperActive(Player player)
|
||||||
|
{
|
||||||
|
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||||
|
|
||||||
|
return disguise != null && disguise instanceof DisguiseMooshroom;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,197 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import java.util.WeakHashMap;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseMooshroom;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
||||||
|
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
||||||
|
import mineplex.minecraft.game.classcombat.Skill.ISkill.SkillType;
|
||||||
|
import mineplex.minecraft.game.classcombat.Skill.event.SkillEvent;
|
||||||
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
import nautilus.game.arcade.kit.SmashPerk;
|
||||||
|
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
public class PerkCowStampede extends SmashPerk
|
||||||
|
{
|
||||||
|
private WeakHashMap<Player, Long> _sprintTime = new WeakHashMap<Player, Long>();
|
||||||
|
private WeakHashMap<Player, Integer> _sprintStr = new WeakHashMap<Player, Integer>();
|
||||||
|
|
||||||
|
public PerkCowStampede()
|
||||||
|
{
|
||||||
|
super("Stampede", new String[]
|
||||||
|
{
|
||||||
|
C.cGray + "Build up Speed Levels as you sprint.",
|
||||||
|
C.cGray + "+1 damage for each Speed Level.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void update(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.FASTER)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (Player cur : UtilServer.getPlayers())
|
||||||
|
{
|
||||||
|
if (!Kit.HasKit(cur))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
//Active - Check for Disable
|
||||||
|
if (_sprintTime.containsKey(cur))
|
||||||
|
{
|
||||||
|
//Stopped
|
||||||
|
if (!cur.isSprinting() || cur.getLocation().getBlock().isLiquid())
|
||||||
|
{
|
||||||
|
_sprintTime.remove(cur);
|
||||||
|
_sprintStr.remove(cur);
|
||||||
|
cur.removePotionEffect(PotionEffectType.SPEED);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
long time = _sprintTime.get(cur);
|
||||||
|
int str = _sprintStr.get(cur);
|
||||||
|
|
||||||
|
//Apply Speed
|
||||||
|
if (str > 0)
|
||||||
|
Manager.GetCondition().Factory().Speed(GetName(), cur, cur, 1.9, !isSuperActive(cur) ? str-1 : str, false, true, true);
|
||||||
|
|
||||||
|
//Upgrade Speed
|
||||||
|
if (!UtilTime.elapsed(time, 3000))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
_sprintTime.put(cur, System.currentTimeMillis());
|
||||||
|
|
||||||
|
if (str < 3)
|
||||||
|
{
|
||||||
|
_sprintStr.put(cur, str+1);
|
||||||
|
|
||||||
|
//Effect
|
||||||
|
cur.getWorld().playSound(cur.getLocation(), Sound.COW_HURT, 2f, 0.75f + 0.25f * str);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Event
|
||||||
|
UtilServer.getServer().getPluginManager().callEvent(new SkillEvent(cur, GetName(), ClassType.Brute));
|
||||||
|
}
|
||||||
|
else if (cur.isSprinting() || !cur.getLocation().getBlock().isLiquid())
|
||||||
|
{
|
||||||
|
//Start Timer
|
||||||
|
if (!_sprintTime.containsKey(cur))
|
||||||
|
{
|
||||||
|
_sprintTime.put(cur, System.currentTimeMillis());
|
||||||
|
_sprintStr.put(cur, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void particle(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (Player ent : _sprintStr.keySet())
|
||||||
|
{
|
||||||
|
if (_sprintStr.get(ent) <= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
UtilParticle.PlayParticle(isSuperActive(ent) ? ParticleType.RED_DUST : ParticleType.CRIT, ent.getLocation(),
|
||||||
|
(float)(Math.random() - 0.5), 0.2f + (float)Math.random(), (float)(Math.random() - 0.5), 0, _sprintStr.get(ent) * 2,
|
||||||
|
ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void damage(CustomDamageEvent event)
|
||||||
|
{
|
||||||
|
if (event.IsCancelled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player damager = event.GetDamagerPlayer(false);
|
||||||
|
if (damager == null) return;
|
||||||
|
|
||||||
|
if (!_sprintStr.containsKey(damager))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_sprintStr.get(damager) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LivingEntity damagee = event.GetDamageeEntity();
|
||||||
|
if (damagee == null) return;
|
||||||
|
|
||||||
|
//Remove
|
||||||
|
_sprintTime.remove(damager);
|
||||||
|
int str = _sprintStr.remove(damager);
|
||||||
|
damager.removePotionEffect(PotionEffectType.SPEED);
|
||||||
|
|
||||||
|
//Damage
|
||||||
|
event.AddMod(damager.getName(), GetName(), str, true);
|
||||||
|
event.AddKnockback(GetName(), 1 + (0.1 * str));
|
||||||
|
|
||||||
|
//Inform
|
||||||
|
UtilPlayer.message(damagee, F.main("Game", F.name(damager.getName()) + " hit you with " + F.skill(GetName()) + "."));
|
||||||
|
|
||||||
|
//Effect
|
||||||
|
damager.getWorld().playSound(damager.getLocation(), Sound.ZOMBIE_WOOD, 1f, 2f);
|
||||||
|
damager.getWorld().playSound(damager.getLocation(), Sound.COW_HURT, 2f, 2f);
|
||||||
|
|
||||||
|
//Event
|
||||||
|
UtilServer.getServer().getPluginManager().callEvent(new SkillEvent(damager, GetName(), ClassType.Brute, damagee));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void damageCancel(CustomDamageEvent event)
|
||||||
|
{
|
||||||
|
if (event.IsCancelled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player damagee = event.GetDamageePlayer();
|
||||||
|
if (damagee == null) return;
|
||||||
|
|
||||||
|
clean(damagee);
|
||||||
|
Manager.GetCondition().EndCondition(damagee, null, GetName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void quit(PlayerQuitEvent event)
|
||||||
|
{
|
||||||
|
clean(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clean(Player player)
|
||||||
|
{
|
||||||
|
_sprintTime.remove(player);
|
||||||
|
_sprintStr.remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSuperActive(Player player)
|
||||||
|
{
|
||||||
|
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||||
|
|
||||||
|
return disguise != null && disguise instanceof DisguiseMooshroom;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,118 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
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.player.PlayerQuitEvent;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTextMiddle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import nautilus.game.arcade.kit.SmashPerk;
|
||||||
|
|
||||||
|
public class PerkEndermanTeleport extends SmashPerk
|
||||||
|
{
|
||||||
|
private HashMap<Player, Block> _target = new HashMap<Player, Block>();
|
||||||
|
private HashMap<Player, Float> _charge = new HashMap<Player, Float>();
|
||||||
|
|
||||||
|
public PerkEndermanTeleport()
|
||||||
|
{
|
||||||
|
super("Teleport", new String[]
|
||||||
|
{
|
||||||
|
C.cYellow + "Hold Sneak" + C.cGray + " to " + C.cGreen + "Teleport"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void update(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (Player player : UtilServer.getPlayers())
|
||||||
|
{
|
||||||
|
if (!Kit.HasKit(player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!player.isSneaking() || !Recharge.Instance.usable(player, GetName()))
|
||||||
|
{
|
||||||
|
_target.remove(player);
|
||||||
|
_charge.remove(player);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Block block = player.getTargetBlock(null, 200);
|
||||||
|
|
||||||
|
if (!_target.containsKey(player) || !_charge.containsKey(player))
|
||||||
|
{
|
||||||
|
if (block == null || block.getType() == Material.AIR)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
_target.put(player, block);
|
||||||
|
_charge.put(player, 0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Invalid Block - End
|
||||||
|
if (block == null || block.getType() == Material.AIR)
|
||||||
|
{
|
||||||
|
_target.remove(player);
|
||||||
|
_charge.remove(player);
|
||||||
|
}
|
||||||
|
//Same Block - Increase Charge
|
||||||
|
else if (block.equals(_target.get(player)))
|
||||||
|
{
|
||||||
|
_charge.put(player, _charge.get(player) + 0.015f);
|
||||||
|
|
||||||
|
UtilTextMiddle.display(null, UtilTextMiddle.progress(_charge.get(player)), 0, 10, 10, player);
|
||||||
|
|
||||||
|
if (_charge.get(player) >= 1f)
|
||||||
|
{
|
||||||
|
UtilTextMiddle.display(null, C.cGreen + "Teleported", 0, 10, 10, player);
|
||||||
|
Recharge.Instance.useForce(player, GetName(), 5000);
|
||||||
|
|
||||||
|
while (block.getRelative(BlockFace.UP).getType() != Material.AIR)
|
||||||
|
{
|
||||||
|
block = block.getRelative(BlockFace.UP);
|
||||||
|
}
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1f, 0.5f);
|
||||||
|
player.teleport(block.getLocation().add(0.5, 1, 0.5));
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1f, 0.5f);
|
||||||
|
|
||||||
|
UtilParticle.PlayParticle(ParticleType.WITCH_MAGIC, player.getLocation().add(0, 1, 0), 1f, 1f, 1f, 0.1f, 100, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1f, 1f + _charge.get(player));
|
||||||
|
UtilParticle.PlayParticle(ParticleType.WITCH_MAGIC, player.getLocation().add(0, 1, 0), 1f, 1f, 1f, 0.05f, 10, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//New Block - Reset
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_target.put(player, block);
|
||||||
|
_charge.put(player, 0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void clean(PlayerQuitEvent event)
|
||||||
|
{
|
||||||
|
_target.remove(event.getPlayer());
|
||||||
|
_charge.remove(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,206 @@
|
||||||
|
package nautilus.game.arcade.game.games.smash.perks;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilAction;
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
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.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
|
import mineplex.core.projectile.IThrown;
|
||||||
|
import mineplex.core.projectile.ProjectileUser;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
import nautilus.game.arcade.kit.SmashPerk;
|
||||||
|
|
||||||
|
public class PerkFishFlurry extends SmashPerk implements IThrown
|
||||||
|
{
|
||||||
|
private ArrayList<DataSquidGeyser> _active = new ArrayList<DataSquidGeyser>();
|
||||||
|
|
||||||
|
public PerkFishFlurry()
|
||||||
|
{
|
||||||
|
super("Fish Flurry", new String[]
|
||||||
|
{
|
||||||
|
C.cYellow + "Right-Click" + C.cGray + " with Spade to use " + C.cGreen + "Fish Flurry"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void shoot(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if (event.isCancelled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (UtilBlock.usable(event.getClickedBlock()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.getPlayer().getItemInHand() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!event.getPlayer().getItemInHand().getType().toString().contains("_SPADE"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (isSuperActive(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Kit.HasKit(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Block block = player.getTargetBlock(null, 64);
|
||||||
|
|
||||||
|
if (block == null || block.getType() == Material.AIR)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(player, F.main("Game", "You must target a block."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Recharge.Instance.use(player, GetName(), 24000, true, true))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
HashSet<Block> blocks = new HashSet<Block>();
|
||||||
|
|
||||||
|
for (Block cur : UtilBlock.getInRadius(block, 3.5d).keySet())
|
||||||
|
{
|
||||||
|
if (UtilBlock.airFoliage(cur))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!UtilBlock.airFoliage(cur.getRelative(BlockFace.UP)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
blocks.add(cur);
|
||||||
|
}
|
||||||
|
|
||||||
|
_active.add(new DataSquidGeyser(player, blocks));
|
||||||
|
|
||||||
|
//Inform
|
||||||
|
UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + "."));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void update(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Iterator<DataSquidGeyser> activeIter = _active.iterator();
|
||||||
|
|
||||||
|
while (activeIter.hasNext())
|
||||||
|
{
|
||||||
|
DataSquidGeyser data = activeIter.next();
|
||||||
|
|
||||||
|
//paticles
|
||||||
|
for (Block block : data.Blocks)
|
||||||
|
UtilParticle.PlayParticle(ParticleType.SPLASH, block.getLocation().add(0.5, 1, 0.5), 0.25f, 0, 0.25f, 0, 10, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
|
||||||
|
//sound
|
||||||
|
Block block = UtilAlg.Random(data.Blocks);
|
||||||
|
if (Math.random() > 0.5)
|
||||||
|
block.getWorld().playSound(block.getLocation(), Math.random() > 0.5 ? Sound.SPLASH : Sound.SPLASH2, 0.5f, 1f);
|
||||||
|
|
||||||
|
//Fish
|
||||||
|
if (!UtilTime.elapsed(data.StartTime, 2000))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (!UtilTime.elapsed(data.StartTime, 6000))
|
||||||
|
{
|
||||||
|
for (int i=0 ; i<1 ; i++)
|
||||||
|
{
|
||||||
|
Item fish = block.getWorld().dropItem(block.getLocation().add(0.5, 1.5, 0.5),
|
||||||
|
ItemStackFactory.Instance.CreateStack(Material.RAW_FISH, (byte)UtilMath.r(4), 1, "Fish" + System.currentTimeMillis()));
|
||||||
|
|
||||||
|
Vector random = new Vector(
|
||||||
|
Math.random() - 0.5,
|
||||||
|
1 + Math.random() * 1,
|
||||||
|
Math.random() - 0.5);
|
||||||
|
|
||||||
|
|
||||||
|
UtilAction.velocity(fish, random, 0.25 + 0.4 * Math.random(), false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
|
Manager.GetProjectile().AddThrow(fish, data.Player, this,
|
||||||
|
-1, true, false, true, true,
|
||||||
|
null, 1f, 1f,
|
||||||
|
null, UpdateType.TICK, 1f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
activeIter.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void Collide(LivingEntity target, Block block, ProjectileUser data)
|
||||||
|
{
|
||||||
|
if (target != null)
|
||||||
|
{
|
||||||
|
//Damage Event
|
||||||
|
Manager.GetDamage().NewDamageEvent(target, data.GetThrower(), null,
|
||||||
|
DamageCause.PROJECTILE, 3, true, true, false,
|
||||||
|
UtilEnt.getName(data.GetThrower()), GetName());
|
||||||
|
|
||||||
|
UtilParticle.PlayParticle(ParticleType.EXPLODE, target.getLocation().add(0, 1, 0), 1f, 1f, 1f, 0, 12, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
|
||||||
|
data.GetThrown().remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void Idle(ProjectileUser data)
|
||||||
|
{
|
||||||
|
data.GetThrown().remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void Expire(ProjectileUser data)
|
||||||
|
{
|
||||||
|
data.GetThrown().remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void Knockback(CustomDamageEvent event)
|
||||||
|
{
|
||||||
|
if (event.GetReason() == null || !event.GetReason().contains(GetName()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.AddKnockback(GetName(), 1.5);
|
||||||
|
|
||||||
|
event.setKnockbackOrigin(event.GetDamageeEntity().getLocation().add(Math.random()-0.5, -0.1, Math.random()-0.5));
|
||||||
|
}
|
||||||
|
}
|
|
@ -153,7 +153,7 @@ public class SnowFight extends TeamGame
|
||||||
{
|
{
|
||||||
if(IsOnIce(player))
|
if(IsOnIce(player))
|
||||||
{
|
{
|
||||||
Bukkit.getPluginManager().callEvent(new CustomDamageEvent(player, null, null, DamageCause.CUSTOM, 2.0D, false, true, true, "Ice", "Ice", false));
|
Bukkit.getPluginManager().callEvent(new CustomDamageEvent(player, null, null, DamageCause.CUSTOM, 2.0D, false, true, true, "Ice", "Ice", false, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,7 +510,7 @@ public class SnowFight extends TeamGame
|
||||||
if(player instanceof Player)
|
if(player instanceof Player)
|
||||||
{
|
{
|
||||||
Player damagee = (Player) player;
|
Player damagee = (Player) player;
|
||||||
Bukkit.getPluginManager().callEvent(new CustomDamageEvent(damagee, null, null, DamageCause.CUSTOM, damage, false, true, true, "Ice Meteoroid", "Ice Meteoroid", false));
|
Bukkit.getPluginManager().callEvent(new CustomDamageEvent(damagee, null, null, DamageCause.CUSTOM, damage, false, true, true, "Ice Meteoroid", "Ice Meteoroid", false, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,10 @@ package nautilus.game.arcade.game.games.turfforts;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
@ -16,15 +20,19 @@ import org.bukkit.craftbukkit.v1_7_R4.entity.CraftArrow;
|
||||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.Arrow;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockEvent;
|
import org.bukkit.event.block.BlockEvent;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||||
|
import org.bukkit.event.entity.ItemSpawnEvent;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
import net.minecraft.server.v1_7_R4.EntityArrow;
|
import net.minecraft.server.v1_7_R4.EntityArrow;
|
||||||
import net.minecraft.server.v1_7_R4.Item;
|
import net.minecraft.server.v1_7_R4.Item;
|
||||||
|
@ -45,6 +53,8 @@ import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
import nautilus.game.arcade.GameType;
|
import nautilus.game.arcade.GameType;
|
||||||
|
import nautilus.game.arcade.events.PlayerGameRespawnEvent;
|
||||||
|
import nautilus.game.arcade.events.PlayerKitGiveEvent;
|
||||||
import nautilus.game.arcade.game.GameTeam;
|
import nautilus.game.arcade.game.GameTeam;
|
||||||
import nautilus.game.arcade.game.TeamGame;
|
import nautilus.game.arcade.game.TeamGame;
|
||||||
import nautilus.game.arcade.game.games.turfforts.kits.KitInfiltrator;
|
import nautilus.game.arcade.game.games.turfforts.kits.KitInfiltrator;
|
||||||
|
@ -106,6 +116,8 @@ public class TurfForts extends TeamGame
|
||||||
|
|
||||||
private HashMap<Player, Long> _enemyTurf = new HashMap<Player, Long>();
|
private HashMap<Player, Long> _enemyTurf = new HashMap<Player, Long>();
|
||||||
|
|
||||||
|
private Set<UUID> playersThatNeedBlocks = new HashSet<UUID>();
|
||||||
|
|
||||||
public TurfForts(ArcadeManager manager)
|
public TurfForts(ArcadeManager manager)
|
||||||
{
|
{
|
||||||
super(manager, GameType.TurfWars,
|
super(manager, GameType.TurfWars,
|
||||||
|
@ -285,6 +297,8 @@ public class TurfForts extends TeamGame
|
||||||
if (event.isCancelled()) // this statement might save just a small amount of time
|
if (event.isCancelled()) // this statement might save just a small amount of time
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!IsAlive(event.getPlayer()))
|
if (!IsAlive(event.getPlayer()))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -296,6 +310,18 @@ public class TurfForts extends TeamGame
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Block block = event.getBlock();
|
||||||
|
|
||||||
|
GameTeam team = GetTeam(event.getPlayer());
|
||||||
|
GameTeam otherTeam = GetOtherTeam(team);
|
||||||
|
|
||||||
|
if (block.getType().equals(Material.WOOL) && (block.getData() == 14 && team.GetColor() != ChatColor.RED) || (block.getData() == 3 && team.GetColor() != ChatColor.AQUA))
|
||||||
|
{
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot break the " + F.elem(otherTeam.GetColor() + otherTeam.GetName()) + " team's blocks!"));
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
@ -524,13 +550,44 @@ public class TurfForts extends TeamGame
|
||||||
for (GameTeam team : GetTeamList())
|
for (GameTeam team : GetTeamList())
|
||||||
{
|
{
|
||||||
for (Player player : team.GetPlayers(true))
|
for (Player player : team.GetPlayers(true))
|
||||||
|
{
|
||||||
|
if (UtilPlayer.isSpectator(player))
|
||||||
|
{
|
||||||
|
this.playersThatNeedBlocks.add(player.getUniqueId());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addBlocks(team, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addBlocks(GameTeam team, Player player)
|
||||||
{
|
{
|
||||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.WOOL, team.GetColorData(), 24));
|
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.WOOL, team.GetColorData(), 24));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
public void onQuit(PlayerQuitEvent event)
|
||||||
|
{
|
||||||
|
this.playersThatNeedBlocks.remove(event.getPlayer().getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
public void onSpawn(PlayerKitGiveEvent event)
|
||||||
|
{
|
||||||
|
Player player = event.GetPlayer();
|
||||||
|
if (this.playersThatNeedBlocks.contains(player.getUniqueId()))
|
||||||
|
{
|
||||||
|
this.playersThatNeedBlocks.remove(player.getUniqueId());
|
||||||
|
this.addBlocks(GetTeam(player), player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -707,23 +764,6 @@ public class TurfForts extends TeamGame
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//Added by TheMineBench.
|
|
||||||
@EventHandler
|
|
||||||
public void blockBreak(BlockBreakEvent event) {
|
|
||||||
|
|
||||||
Block block = event.getBlock();
|
|
||||||
|
|
||||||
GameTeam team = GetTeam(event.getPlayer());
|
|
||||||
GameTeam otherTeam = GetOtherTeam(team);
|
|
||||||
|
|
||||||
if (block.getType().equals(Material.WOOL) && (block.getData() == 14 && team.GetColor() != ChatColor.RED) || (block.getData() == 3 && team.GetColor() != ChatColor.AQUA))
|
|
||||||
{
|
|
||||||
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot break the " + F.elem(otherTeam.GetColor() + otherTeam.GetName()) + " team's blocks!"));
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameTeam GetOtherTeam(GameTeam team) {
|
public GameTeam GetOtherTeam(GameTeam team) {
|
||||||
return team.GetColor() == ChatColor.RED ? GetTeam(ChatColor.AQUA) : GetTeam(ChatColor.RED);
|
return team.GetColor() == ChatColor.RED ? GetTeam(ChatColor.AQUA) : GetTeam(ChatColor.RED);
|
||||||
|
|
|
@ -47,17 +47,6 @@ public class PerkArcticAura extends Perk
|
||||||
//Snow
|
//Snow
|
||||||
Manager.GetBlockRestore().Snow(block, (byte)1, (byte)1, (long)(duration * (1 + blocks.get(block))), 250, 0);
|
Manager.GetBlockRestore().Snow(block, (byte)1, (byte)1, (long)(duration * (1 + blocks.get(block))), 250, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Player other : Manager.GetGame().GetPlayers(true))
|
|
||||||
{
|
|
||||||
if (other.equals(player))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (UtilMath.offset(player, other) > range)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Manager.GetCondition().Factory().Slow("Aura Slow", other, player, 0.9, 0, false, false, false, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class PerkBaconBlast extends Perk implements IThrown
|
||||||
|
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false);
|
UtilAction.velocity(ent, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f,
|
null, 1f, 1f,
|
||||||
null, 1, UpdateType.SLOW,
|
null, 1, UpdateType.SLOW,
|
||||||
0.5f);
|
0.5f);
|
||||||
|
|
|
@ -166,7 +166,7 @@ public class PerkBatForm extends SmashPerk
|
||||||
}
|
}
|
||||||
|
|
||||||
//Move
|
//Move
|
||||||
data.Location.add(data.Direction.clone().multiply(0.75));
|
data.Location.add(data.Direction.clone().multiply(1));
|
||||||
|
|
||||||
//Effect
|
//Effect
|
||||||
UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, data.Location, 0, 0, 0, 0, 1,
|
UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, data.Location, 0, 0, 0, 0, 1,
|
||||||
|
@ -186,6 +186,9 @@ public class PerkBatForm extends SmashPerk
|
||||||
HashMap<LivingEntity, Double> targets = UtilEnt.getInRadius(data.Location, 10);
|
HashMap<LivingEntity, Double> targets = UtilEnt.getInRadius(data.Location, 10);
|
||||||
for (LivingEntity cur : targets.keySet())
|
for (LivingEntity cur : targets.keySet())
|
||||||
{
|
{
|
||||||
|
if (cur.equals(data.Shooter))
|
||||||
|
continue;
|
||||||
|
|
||||||
Manager.GetDamage().NewDamageEvent(cur, data.Shooter, null,
|
Manager.GetDamage().NewDamageEvent(cur, data.Shooter, null,
|
||||||
DamageCause.CUSTOM, 12 * targets.get(cur) + 0.5, true, false, false,
|
DamageCause.CUSTOM, 12 * targets.get(cur) + 0.5, true, false, false,
|
||||||
data.Shooter.getName(), GetName());
|
data.Shooter.getName(), GetName());
|
||||||
|
|
|
@ -3,6 +3,7 @@ package nautilus.game.arcade.kit.perks;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.FireworkEffect.Type;
|
import org.bukkit.FireworkEffect.Type;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
|
@ -104,7 +105,9 @@ public class PerkBlink extends SmashPerk
|
||||||
//Firework
|
//Firework
|
||||||
UtilFirework.playFirework(player.getEyeLocation(), Type.BALL, Color.BLACK, false, false);
|
UtilFirework.playFirework(player.getEyeLocation(), Type.BALL, Color.BLACK, false, false);
|
||||||
|
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1f, 1f);
|
||||||
player.teleport(loc);
|
player.teleport(loc);
|
||||||
|
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1f, 1f);
|
||||||
|
|
||||||
//Firework
|
//Firework
|
||||||
UtilFirework.playFirework(player.getEyeLocation(), Type.BALL, Color.BLACK, false, false);
|
UtilFirework.playFirework(player.getEyeLocation(), Type.BALL, Color.BLACK, false, false);
|
||||||
|
|
|
@ -15,6 +15,7 @@ import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||||
import mineplex.core.projectile.IThrown;
|
import mineplex.core.projectile.IThrown;
|
||||||
import mineplex.core.projectile.ProjectileUser;
|
import mineplex.core.projectile.ProjectileUser;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
@ -75,6 +76,9 @@ public class PerkBlockToss extends SmashPerk implements IThrown
|
||||||
if (UtilBlock.usable(grab))
|
if (UtilBlock.usable(grab))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!Recharge.Instance.usable(player, GetName()))
|
||||||
|
return;
|
||||||
|
|
||||||
if (!UtilBlock.airFoliage(grab.getRelative(BlockFace.UP)) || Manager.GetBlockRestore().Contains(grab.getRelative(BlockFace.UP)))
|
if (!UtilBlock.airFoliage(grab.getRelative(BlockFace.UP)) || Manager.GetBlockRestore().Contains(grab.getRelative(BlockFace.UP)))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Game", "You can only pick up blocks with Air above them."));
|
UtilPlayer.message(player, F.main("Game", "You can only pick up blocks with Air above them."));
|
||||||
|
@ -126,6 +130,9 @@ public class PerkBlockToss extends SmashPerk implements IThrown
|
||||||
|
|
||||||
for (Player cur : throwSet)
|
for (Player cur : throwSet)
|
||||||
{
|
{
|
||||||
|
Recharge.Instance.recharge(cur, GetName());
|
||||||
|
Recharge.Instance.use(cur, GetName(), 2000, false, true);
|
||||||
|
|
||||||
BlockTossData data = _hold.remove(cur);
|
BlockTossData data = _hold.remove(cur);
|
||||||
|
|
||||||
FallingBlock block = cur.getWorld().spawnFallingBlock(cur.getEyeLocation().add(cur.getLocation().getDirection()), data.Type, data.Data);
|
FallingBlock block = cur.getWorld().spawnFallingBlock(cur.getEyeLocation().add(cur.getLocation().getDirection()), data.Type, data.Data);
|
||||||
|
@ -143,7 +150,7 @@ public class PerkBlockToss extends SmashPerk implements IThrown
|
||||||
|
|
||||||
//Action
|
//Action
|
||||||
UtilAction.velocity(block, cur.getLocation().getDirection(), mult, false, 0.2, 0, 1, true);
|
UtilAction.velocity(block, cur.getLocation().getDirection(), mult, false, 0.2, 0, 1, true);
|
||||||
Manager.GetProjectile().AddThrow(block, cur, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(block, cur, this, -1, true, true, true, true,
|
||||||
null, 0, 0, null, 0, UpdateType.FASTEST, 1f);
|
null, 0, 0, null, 0, UpdateType.FASTEST, 1f);
|
||||||
|
|
||||||
//Event
|
//Event
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class PerkBoneExplosion extends SmashPerk
|
||||||
if (!Recharge.Instance.use(player, GetName(), 10000, true, true))
|
if (!Recharge.Instance.use(player, GetName(), 10000, true, true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HashMap<Player, Double> nearby = UtilPlayer.getInRadius(player.getLocation(), 10);
|
HashMap<Player, Double> nearby = UtilPlayer.getInRadius(player.getLocation(), 7);
|
||||||
for (Player other : nearby.keySet())
|
for (Player other : nearby.keySet())
|
||||||
{
|
{
|
||||||
if (player.equals(other))
|
if (player.equals(other))
|
||||||
|
|
|
@ -75,7 +75,7 @@ public class PerkCowBomb extends Perk implements IThrown
|
||||||
|
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection(), 1.4, false, 0, 0.3, 10, false);
|
UtilAction.velocity(ent, player.getLocation().getDirection(), 1.4, false, 0, 0.3, 10, false);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f,
|
null, 1f, 1f,
|
||||||
null, 1, UpdateType.SLOW,
|
null, 1, UpdateType.SLOW,
|
||||||
0.5f);
|
0.5f);
|
||||||
|
|
|
@ -55,6 +55,8 @@ public class PerkCreeperElectricity extends Perk
|
||||||
|
|
||||||
SetPowered(damagee, true);
|
SetPowered(damagee, true);
|
||||||
|
|
||||||
|
Manager.GetCondition().Factory().Speed(GetName(), damagee, damagee, 4, 1, false, false, false);
|
||||||
|
|
||||||
//Sound
|
//Sound
|
||||||
damagee.getWorld().playSound(damagee.getLocation(), Sound.CREEPER_HISS, 3f, 1.25f);
|
damagee.getWorld().playSound(damagee.getLocation(), Sound.CREEPER_HISS, 3f, 1.25f);
|
||||||
|
|
||||||
|
@ -117,8 +119,10 @@ public class PerkCreeperElectricity extends Perk
|
||||||
//Inform
|
//Inform
|
||||||
UtilPlayer.message(damagee, F.main("Skill", "You hit " + F.elem(UtilEnt.getName(event.GetDamagerPlayer(false))) + " with " + F.skill(GetName()) + "."));
|
UtilPlayer.message(damagee, F.main("Skill", "You hit " + F.elem(UtilEnt.getName(event.GetDamagerPlayer(false))) + " with " + F.skill(GetName()) + "."));
|
||||||
|
|
||||||
//Lightning
|
//Elec
|
||||||
damagee.getWorld().strikeLightningEffect(damagee.getLocation());
|
damagee.getWorld().strikeLightningEffect(damagee.getLocation());
|
||||||
|
Manager.GetCondition().Factory().Shock(GetName(), event.GetDamagerEntity(false), event.GetDamageeEntity(), 1, false, false);
|
||||||
|
|
||||||
SetPowered(damagee, false);
|
SetPowered(damagee, false);
|
||||||
|
|
||||||
//Damage Event
|
//Damage Event
|
||||||
|
|
|
@ -76,12 +76,12 @@ public class PerkCreeperSulphurBomb extends SmashPerk implements IThrown
|
||||||
|
|
||||||
org.bukkit.entity.Item ent = player.getWorld().dropItem(player.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.COAL, (byte)0));
|
org.bukkit.entity.Item ent = player.getWorld().dropItem(player.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.COAL, (byte)0));
|
||||||
|
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false);
|
UtilAction.velocity(ent, player.getLocation().getDirection(), 1.2, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f,
|
null, 1f, 1f,
|
||||||
null, 1, UpdateType.SLOW,
|
null, 1, UpdateType.SLOW,
|
||||||
0.5f);
|
0.65f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + "."));
|
UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + "."));
|
||||||
|
@ -130,6 +130,6 @@ public class PerkCreeperSulphurBomb extends SmashPerk implements IThrown
|
||||||
if (event.GetReason() == null || !event.GetReason().contains(GetName()))
|
if (event.GetReason() == null || !event.GetReason().contains(GetName()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
event.AddKnockback(GetName(), 1.5);
|
event.AddKnockback(GetName(), 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,6 +106,6 @@ public class PerkDeadlyBones extends SmashPerk
|
||||||
if (event.GetReason() == null || !event.GetReason().contains(GetName()))
|
if (event.GetReason() == null || !event.GetReason().contains(GetName()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
event.AddKnockback(GetName(), 3);
|
event.AddKnockback(GetName(), 2.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class PerkDeathsGrasp extends Perk
|
||||||
{
|
{
|
||||||
super("Deaths Grasp", new String[]
|
super("Deaths Grasp", new String[]
|
||||||
{
|
{
|
||||||
C.cYellow + "Right-Click" + C.cGray + " with Axe to use " + C.cGreen + "Deaths Grasp",
|
C.cYellow + "Left-Click" + C.cGray + " with Bow to use " + C.cGreen + "Deaths Grasp",
|
||||||
C.cGray + "+100% Arrow Damage to enemies thrown by Deaths Grasp"
|
C.cGray + "+100% Arrow Damage to enemies thrown by Deaths Grasp"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ public class PerkDeathsGrasp extends Perk
|
||||||
DamageCause.CUSTOM, 6, false, true, false,
|
DamageCause.CUSTOM, 6, false, true, false,
|
||||||
damager.getName(), GetName());
|
damager.getName(), GetName());
|
||||||
|
|
||||||
UtilAction.velocity(damagee, UtilAlg.getTrajectory(damagee, damager), 1.8, false, 0, 1, 1.8, true);
|
UtilAction.velocity(damagee, UtilAlg.getTrajectory2d(damagee, damager), 1.6, false, 0, 1.2, 1.8, true);
|
||||||
|
|
||||||
UtilAction.zeroVelocity(damager);
|
UtilAction.zeroVelocity(damager);
|
||||||
|
|
||||||
|
@ -156,6 +156,7 @@ public class PerkDeathsGrasp extends Perk
|
||||||
UtilPlayer.message(damagee, F.main("Game", F.name(damager.getName()) + " hit you with " + F.skill(GetName()) + "."));
|
UtilPlayer.message(damagee, F.main("Game", F.name(damager.getName()) + " hit you with " + F.skill(GetName()) + "."));
|
||||||
|
|
||||||
Recharge.Instance.recharge(damager, GetName());
|
Recharge.Instance.recharge(damager, GetName());
|
||||||
|
Recharge.Instance.use(damager, GetName(), 2000, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
|
|
@ -20,6 +20,10 @@ import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilAction;
|
import mineplex.core.common.util.UtilAction;
|
||||||
import mineplex.core.common.util.UtilBlock;
|
import mineplex.core.common.util.UtilBlock;
|
||||||
import mineplex.core.common.util.UtilFirework;
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
|
@ -89,7 +93,7 @@ public class PerkFirefly extends SmashPerk
|
||||||
if (event.getType() != UpdateType.TICK)
|
if (event.getType() != UpdateType.TICK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_tick = (_tick + 1)%3;
|
_tick = (_tick + 1)%1000;
|
||||||
|
|
||||||
Iterator<FireflyData> dataIterator = _data.iterator();
|
Iterator<FireflyData> dataIterator = _data.iterator();
|
||||||
|
|
||||||
|
@ -106,26 +110,35 @@ public class PerkFirefly extends SmashPerk
|
||||||
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.EXPLODE, 0.2f, 0.6f);
|
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.EXPLODE, 0.2f, 0.6f);
|
||||||
data.Location = data.Player.getLocation();
|
data.Location = data.Player.getLocation();
|
||||||
|
|
||||||
if (_tick == 0)
|
//Sound and Effect
|
||||||
{
|
UtilParticle.PlayParticle(ParticleType.FIREWORKS_SPARK, data.Player.getLocation().add(0, 1, 0), 0.6f, 0.6f, 0.6f, 0, 10, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
//Firework
|
|
||||||
UtilFirework.playFirework(data.Player.getLocation().add(0, 0.6, 0), Type.BURST, Color.ORANGE, false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
float progress = (float)(System.currentTimeMillis()-data.Time)/1500f;
|
||||||
|
|
||||||
|
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.BLAZE_BREATH, 0.5f, 1f + progress);
|
||||||
}
|
}
|
||||||
//Velocity
|
//Velocity
|
||||||
else if (!UtilTime.elapsed(data.Time, 2500) || superActive)
|
else if (!UtilTime.elapsed(data.Time, 2750) || superActive)
|
||||||
{
|
{
|
||||||
UtilAction.velocity(data.Player, data.Player.getLocation().getDirection().multiply(superActive ? 0.9 : 0.7).add(new Vector(0,0.15,0)));
|
UtilAction.velocity(data.Player, data.Player.getLocation().getDirection().multiply(superActive ? 0.9 : 0.7).add(new Vector(0,0.15,0)));
|
||||||
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.EXPLODE, 0.6f, 1.2f);
|
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.EXPLODE, 0.6f, 1.2f);
|
||||||
|
|
||||||
if (_tick == 0)
|
//Sound and Effect
|
||||||
|
if (!isSuperActive(data.Player))
|
||||||
{
|
{
|
||||||
//Firework
|
UtilParticle.PlayParticle(ParticleType.FLAME, data.Player.getLocation().add(0, 1, 0), 0.6f, 0.6f, 0.6f, 0, 40, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
UtilFirework.playFirework(data.Player.getLocation().add(0, 0.6, 0), isSuperActive(data.Player) ? Type.BALL : Type.BURST, Color.RED, false, superActive);
|
|
||||||
|
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.EXPLODE, 0.5f, 1.25f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(ParticleType.FLAME, data.Player.getLocation().add(0, 1, 0), 1f, 1f, 1f, 0, 60, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
UtilParticle.PlayParticle(ParticleType.LAVA, data.Player.getLocation().add(0, 1, 0), 1f, 1f, 1f, 0, 40, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
|
||||||
|
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.EXPLODE, 0.75f, 0.75f);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Player other : UtilPlayer.getNearby(data.Player.getLocation(), isSuperActive(data.Player) ? 6 : 4))
|
for (Player other : UtilPlayer.getNearby(data.Player.getLocation(), isSuperActive(data.Player) ? 7 : 4))
|
||||||
{
|
{
|
||||||
if (other.equals(data.Player))
|
if (other.equals(data.Player))
|
||||||
continue;
|
continue;
|
||||||
|
@ -136,10 +149,9 @@ public class PerkFirefly extends SmashPerk
|
||||||
other.playEffect(EntityEffect.HURT);
|
other.playEffect(EntityEffect.HURT);
|
||||||
|
|
||||||
if (_tick == 0)
|
if (_tick == 0)
|
||||||
if (!data.Targets.contains(other))
|
|
||||||
{
|
{
|
||||||
data.Targets.add(other);
|
if (Recharge.Instance.use(other, GetName() + " hit by " + data.Player.getName(), 2000, false, false))
|
||||||
|
{
|
||||||
//Damage Event
|
//Damage Event
|
||||||
Manager.GetDamage().NewDamageEvent(other, data.Player, null,
|
Manager.GetDamage().NewDamageEvent(other, data.Player, null,
|
||||||
DamageCause.CUSTOM, 10, true, true, false,
|
DamageCause.CUSTOM, 10, true, true, false,
|
||||||
|
@ -149,6 +161,7 @@ public class PerkFirefly extends SmashPerk
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dataIterator.remove();
|
dataIterator.remove();
|
||||||
|
|
|
@ -93,7 +93,7 @@ public class PerkFlap extends SmashPerk
|
||||||
|
|
||||||
if (UtilEnt.isGrounded(player) || UtilBlock.solid(player.getLocation().getBlock().getRelative(BlockFace.DOWN)))
|
if (UtilEnt.isGrounded(player) || UtilBlock.solid(player.getLocation().getBlock().getRelative(BlockFace.DOWN)))
|
||||||
{
|
{
|
||||||
player.setExp(0.999f);
|
player.setExp(Math.min(0.9999f, player.getExp() + 0.03f));
|
||||||
player.setAllowFlight(true);
|
player.setAllowFlight(true);
|
||||||
}
|
}
|
||||||
else if (Recharge.Instance.usable(player, GetName()) && player.getExp() > 0)
|
else if (Recharge.Instance.usable(player, GetName()) && player.getExp() > 0)
|
||||||
|
|
|
@ -60,8 +60,8 @@ public class PerkIcePath extends Perk
|
||||||
if (!Recharge.Instance.use(player, GetName(), 12000, true, true))
|
if (!Recharge.Instance.use(player, GetName(), 12000, true, true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
UtilAction.zeroVelocity(player);
|
player.teleport(player.getLocation().add(0, 1, 0));
|
||||||
player.teleport(player.getLocation().add(0, 0.75, 0));
|
UtilAction.velocity(player, new Vector(0,0.5,0));
|
||||||
|
|
||||||
_data.add(new IcePathData(player));
|
_data.add(new IcePathData(player));
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,8 @@ public class PerkInferno extends SmashPerk
|
||||||
if (!Kit.HasKit(player))
|
if (!Kit.HasKit(player))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
player.setExp((float) Math.min(0.999, player.getExp()+0.015));
|
if (!player.isBlocking())
|
||||||
|
player.setExp((float) Math.min(0.999, player.getExp()+0.025));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +106,7 @@ public class PerkInferno extends SmashPerk
|
||||||
|
|
||||||
//Fire
|
//Fire
|
||||||
Item fire = cur.getWorld().dropItem(cur.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.BLAZE_POWDER));
|
Item fire = cur.getWorld().dropItem(cur.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.BLAZE_POWDER));
|
||||||
Manager.GetFire().Add(fire, cur, 0.7, 0, 0.5, 1, "Inferno");
|
Manager.GetFire().Add(fire, cur, 0.7, 0, 0.5, 1.25, "Inferno");
|
||||||
|
|
||||||
fire.teleport(cur.getEyeLocation());
|
fire.teleport(cur.getEyeLocation());
|
||||||
double x = 0.07 - (UtilMath.r(14)/100d);
|
double x = 0.07 - (UtilMath.r(14)/100d);
|
||||||
|
|
|
@ -18,7 +18,11 @@ import mineplex.core.common.util.UtilAction;
|
||||||
import mineplex.core.common.util.UtilBlock;
|
import mineplex.core.common.util.UtilBlock;
|
||||||
import mineplex.core.common.util.UtilEnt;
|
import mineplex.core.common.util.UtilEnt;
|
||||||
import mineplex.core.common.util.UtilInv;
|
import mineplex.core.common.util.UtilInv;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
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;
|
||||||
|
@ -71,9 +75,10 @@ public class PerkInkBlast extends SmashPerk implements IThrown
|
||||||
|
|
||||||
UtilInv.Update(player);
|
UtilInv.Update(player);
|
||||||
|
|
||||||
for (int i=0 ; i<7 ; i++)
|
for (int i=0 ; i<8 ; i++)
|
||||||
{
|
{
|
||||||
org.bukkit.entity.Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(Material.INK_SACK));
|
org.bukkit.entity.Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()),
|
||||||
|
ItemStackFactory.Instance.CreateStack(Material.INK_SACK, (byte)0, 1, "Ink" + Math.random()));
|
||||||
|
|
||||||
Vector random = new Vector(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
|
Vector random = new Vector(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
|
||||||
random.normalize();
|
random.normalize();
|
||||||
|
@ -84,9 +89,9 @@ public class PerkInkBlast extends SmashPerk implements IThrown
|
||||||
|
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection().add(random), 1 + 0.4 * Math.random(), false, 0, 0.2, 10, false);
|
UtilAction.velocity(ent, player.getLocation().getDirection().add(random), 1 + 0.4 * Math.random(), false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f,
|
null, 1f, 1f,
|
||||||
Effect.SMOKE, 4, UpdateType.TICK,
|
ParticleType.EXPLODE, UpdateType.TICK,
|
||||||
0.5f);
|
0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +116,7 @@ public class PerkInkBlast extends SmashPerk implements IThrown
|
||||||
DamageCause.PROJECTILE, 3, true, true, false,
|
DamageCause.PROJECTILE, 3, true, true, false,
|
||||||
UtilEnt.getName(data.GetThrower()), GetName());
|
UtilEnt.getName(data.GetThrower()), GetName());
|
||||||
|
|
||||||
Manager.GetCondition().Factory().Blind(GetName(), target, data.GetThrower(), 1.5, 0, false, false, false);
|
UtilParticle.PlayParticle(ParticleType.EXPLODE, target.getLocation().add(0, 1, 0), 1f, 1f, 1f, 0, 12, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class PerkIronHook extends Perk implements IThrown
|
||||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||||
1.8, false, 0, 0.2, 10, false);
|
1.8, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(item, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(item, player, this, -1, true, true, true, true,
|
||||||
Sound.FIRE_IGNITE, 1.4f, 0.8f, ParticleType.CRIT, null, 0, UpdateType.TICK, 0.6f);
|
Sound.FIRE_IGNITE, 1.4f, 0.8f, ParticleType.CRIT, null, 0, UpdateType.TICK, 0.6f);
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
|
|
|
@ -151,7 +151,7 @@ public class PerkLazer extends Perk
|
||||||
if (other.equals(player))
|
if (other.equals(player))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (UtilMath.offset(newTarget, other.getLocation().add(0, 1, 0)) < 3)
|
if (UtilMath.offset(newTarget, other.getLocation().add(0, 1, 0)) < 2.5)
|
||||||
{
|
{
|
||||||
hitPlayer = true;
|
hitPlayer = true;
|
||||||
break;
|
break;
|
||||||
|
@ -189,7 +189,7 @@ public class PerkLazer extends Perk
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Do from center
|
//Do from center
|
||||||
if (UtilMath.offset(target, other.getLocation().add(0, 1, 0)) < 3.5)
|
if (UtilMath.offset(target, other.getLocation().add(0, 1, 0)) < 3)
|
||||||
{
|
{
|
||||||
//Damage Event
|
//Damage Event
|
||||||
Manager.GetDamage().NewDamageEvent(other, player, null,
|
Manager.GetDamage().NewDamageEvent(other, player, null,
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class PerkNeedler extends SmashPerk
|
||||||
if (!Kit.HasKit(player))
|
if (!Kit.HasKit(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Recharge.Instance.use(player, GetName(), isSuperActive(player) ? 600 : 1800, !isSuperActive(player), !isSuperActive(player)))
|
if (!Recharge.Instance.use(player, GetName(), isSuperActive(player) ? 600 : 2000, !isSuperActive(player), !isSuperActive(player)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_active.put(player, 8);
|
_active.put(player, 8);
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class PerkPigBaconBomb extends SmashPerk
|
||||||
if (!Kit.HasKit(player))
|
if (!Kit.HasKit(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float energy = 0.40f;
|
float energy = 0.30f;
|
||||||
|
|
||||||
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||||
if (disguise != null && disguise instanceof DisguisePigZombie)
|
if (disguise != null && disguise instanceof DisguisePigZombie)
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class PerkPigBaconBounce extends SmashPerk implements IThrown
|
||||||
player.setExp(Math.max(0f, player.getExp() - energy));
|
player.setExp(Math.max(0f, player.getExp() - energy));
|
||||||
|
|
||||||
//Launch
|
//Launch
|
||||||
Item ent = player.getWorld().dropItem(player.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.PORK));
|
Item ent = player.getWorld().dropItem(player.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.PORK, (byte) 0, 1, "Bacon"+System.currentTimeMillis()));
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection(), 1.2, false, 0, 0.2, 10, false);
|
UtilAction.velocity(ent, player.getLocation().getDirection(), 1.2, false, 0, 0.2, 10, false);
|
||||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, false, 0.4f);
|
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, false, 0.4f);
|
||||||
ent.setPickupDelay(9999);
|
ent.setPickupDelay(9999);
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class PerkSeismicSlam extends Perk
|
||||||
if (!Kit.HasKit(player))
|
if (!Kit.HasKit(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Recharge.Instance.use(player, GetName(), 6000, true, true))
|
if (!Recharge.Instance.use(player, GetName(), 7000, true, true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Action
|
//Action
|
||||||
|
@ -115,7 +115,7 @@ public class PerkSeismicSlam extends Perk
|
||||||
_live.remove(player);
|
_live.remove(player);
|
||||||
|
|
||||||
//Action
|
//Action
|
||||||
int damage = 11;
|
int damage = 10;
|
||||||
double range = 8;
|
double range = 8;
|
||||||
|
|
||||||
HashMap<LivingEntity, Double> targets = UtilEnt.getInRadius(player.getLocation(), range);
|
HashMap<LivingEntity, Double> targets = UtilEnt.getInRadius(player.getLocation(), range);
|
||||||
|
|
|
@ -195,7 +195,7 @@ public class PerkSlimeRocket extends SmashPerk implements IThrown
|
||||||
|
|
||||||
UtilAction.velocity(slime, player.getLocation().getDirection(), 1 + charge/2d, false, 0, 0.2, 10, true);
|
UtilAction.velocity(slime, player.getLocation().getDirection(), 1 + charge/2d, false, 0, 0.2, 10, true);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(slime, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(slime, player, this, -1, true, true, true, true,
|
||||||
null, 0, 0, null, 0, UpdateType.FASTEST, 1f);
|
null, 0, 0, null, 0, UpdateType.FASTEST, 1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ public class PerkStormSquid extends SmashPerk
|
||||||
|
|
||||||
//Damage Event
|
//Damage Event
|
||||||
Manager.GetDamage().NewDamageEvent(cur, player, null,
|
Manager.GetDamage().NewDamageEvent(cur, player, null,
|
||||||
DamageCause.CUSTOM, 20 * targets.get(cur), false, true, false,
|
DamageCause.CUSTOM, 16 * targets.get(cur), false, true, false,
|
||||||
player.getName(), GetName());
|
player.getName(), GetName());
|
||||||
|
|
||||||
//Velocity
|
//Velocity
|
||||||
|
|
|
@ -13,9 +13,12 @@ import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilAction;
|
import mineplex.core.common.util.UtilAction;
|
||||||
import mineplex.core.common.util.UtilBlock;
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
@ -93,8 +96,8 @@ public class PerkSuperSquid extends SmashPerk
|
||||||
|
|
||||||
UtilAction.velocity(cur, 0.6, 0.1, 1, true);
|
UtilAction.velocity(cur, 0.6, 0.1, 1, true);
|
||||||
|
|
||||||
cur.getWorld().playSound(cur.getLocation(), Sound.SPLASH2, 0.2f, 1f);
|
cur.getWorld().playSound(cur.getLocation(), Sound.SPLASH2, 0.5f, 1f);
|
||||||
cur.getWorld().playEffect(cur.getLocation(), Effect.STEP_SOUND, 8);
|
UtilParticle.PlayParticle(ParticleType.SPLASH, cur.getLocation().add(0, 0.5, 0), 0.3f, 0.3f, 0.3f, 0, 60, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,8 @@ public class PerkWitherImage extends SmashPerk
|
||||||
{
|
{
|
||||||
super("Wither Image", new String[]
|
super("Wither Image", new String[]
|
||||||
{
|
{
|
||||||
C.cYellow + "Right-Click" + C.cGray + " with Axe to " + C.cGreen + "Wither Image"
|
C.cYellow + "Right-Click" + C.cGray + " with Axe to " + C.cGreen + "Wither Image",
|
||||||
|
C.cYellow + "Double Right-Click" + C.cGray + " with Axe to " + C.cGreen + "Wither Swap"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +106,7 @@ public class PerkWitherImage extends SmashPerk
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!Recharge.Instance.use(player, "Wither Swap", 1000, true, false))
|
if (!Recharge.Instance.use(player, "Wither Swap", 2000, true, false))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Skeleton skel = _images.get(player);
|
Skeleton skel = _images.get(player);
|
||||||
|
|
|
@ -191,7 +191,7 @@ public class PerkWitherSkull extends SmashPerk
|
||||||
double scale = 0.4 + 0.6 * Math.min(1, skull.getTicksLived()/20d);
|
double scale = 0.4 + 0.6 * Math.min(1, skull.getTicksLived()/20d);
|
||||||
|
|
||||||
//Players
|
//Players
|
||||||
HashMap<Player, Double> players = UtilPlayer.getInRadius(skull.getLocation(), 7);
|
HashMap<Player, Double> players = UtilPlayer.getInRadius(skull.getLocation(), 6);
|
||||||
for (Player player : players.keySet())
|
for (Player player : players.keySet())
|
||||||
{
|
{
|
||||||
if (!Manager.GetGame().IsAlive(player))
|
if (!Manager.GetGame().IsAlive(player))
|
||||||
|
@ -199,7 +199,7 @@ public class PerkWitherSkull extends SmashPerk
|
||||||
|
|
||||||
//Damage Event
|
//Damage Event
|
||||||
Manager.GetDamage().NewDamageEvent(player, (LivingEntity)skull.getShooter(), null,
|
Manager.GetDamage().NewDamageEvent(player, (LivingEntity)skull.getShooter(), null,
|
||||||
DamageCause.CUSTOM, 2 + 10 * players.get(player) * scale, true, true, false,
|
DamageCause.CUSTOM, 12 * players.get(player) * scale, true, true, false,
|
||||||
UtilEnt.getName((LivingEntity)skull.getShooter()), GetName());
|
UtilEnt.getName((LivingEntity)skull.getShooter()), GetName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,7 +82,7 @@ public class PerkWolf extends SmashPerk
|
||||||
if (!Kit.HasKit(player))
|
if (!Kit.HasKit(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Recharge.Instance.use(player, "Cub Tackle", isSuperActive(player) ? 800 : 8000, !isSuperActive(player), !isSuperActive(player)))
|
if (!Recharge.Instance.use(player, "Cub Tackle", isSuperActive(player) ? 1600 : 8000, !isSuperActive(player), !isSuperActive(player)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Get Nearest Wolf
|
//Get Nearest Wolf
|
||||||
|
@ -255,7 +255,7 @@ public class PerkWolf extends SmashPerk
|
||||||
if (!Kit.HasKit(player))
|
if (!Kit.HasKit(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Recharge.Instance.use(player, "Wolf Strike", isSuperActive(player) ? 800 : 8000, !isSuperActive(player), !isSuperActive(player)))
|
if (!Recharge.Instance.use(player, "Wolf Strike", isSuperActive(player) ? 1600 : 8000, !isSuperActive(player), !isSuperActive(player)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Velocity
|
//Velocity
|
||||||
|
|
|
@ -107,7 +107,7 @@ public class PerkWoolBomb extends Perk implements IThrown
|
||||||
|
|
||||||
UtilAction.velocity(ent, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false);
|
UtilAction.velocity(ent, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false);
|
||||||
|
|
||||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||||
null, 1f, 1f,
|
null, 1f, 1f,
|
||||||
null, 1, UpdateType.SLOW,
|
null, 1, UpdateType.SLOW,
|
||||||
0.5f);
|
0.5f);
|
||||||
|
|
|
@ -9,7 +9,6 @@ public class FireflyData
|
||||||
public org.bukkit.entity.Player Player;
|
public org.bukkit.entity.Player Player;
|
||||||
public org.bukkit.Location Location;
|
public org.bukkit.Location Location;
|
||||||
public long Time;
|
public long Time;
|
||||||
public HashSet<Entity> Targets = new HashSet<Entity>();
|
|
||||||
|
|
||||||
public FireflyData(org.bukkit.entity.Player player)
|
public FireflyData(org.bukkit.entity.Player player)
|
||||||
{
|
{
|
||||||
|
|
|
@ -523,23 +523,16 @@ public class GameLobbyManager implements Listener, IPacketHandler
|
||||||
// WriteKitLine("Free", 0, 159, (byte)15);
|
// WriteKitLine("Free", 0, 159, (byte)15);
|
||||||
// WriteKitLine("Kits", 1, 159, (byte)4);
|
// WriteKitLine("Kits", 1, 159, (byte)4);
|
||||||
|
|
||||||
ArrayList<Kit> kitsA = new ArrayList<Kit>();
|
int divide = kits.size()/2;
|
||||||
ArrayList<Kit> kitsB = new ArrayList<Kit>();
|
|
||||||
|
|
||||||
for (int i=0 ; i<kits.size() ; i++)
|
|
||||||
{
|
|
||||||
if (kits.get(i).GetCost() < 5000) kitsA.add(kits.get(i));
|
|
||||||
else kitsB.add(kits.get(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
//Positions
|
//Positions
|
||||||
double space = 4;
|
double space = 4;
|
||||||
double offset = (kitsA.size()-1)*space/2d;
|
double offset = (divide)*space/2d;
|
||||||
|
|
||||||
for (int i=0 ; i<kitsA.size() ; i++)
|
for (int i=0 ; i<=divide ; i++)
|
||||||
{
|
{
|
||||||
Kit kit = kitsA.get(i);
|
Kit kit = kits.get(i);
|
||||||
|
|
||||||
if (kit.GetAvailability() == KitAvailability.Null)
|
if (kit.GetAvailability() == KitAvailability.Null)
|
||||||
continue;
|
continue;
|
||||||
|
@ -566,11 +559,11 @@ public class GameLobbyManager implements Listener, IPacketHandler
|
||||||
{
|
{
|
||||||
//Positions
|
//Positions
|
||||||
double space = 4;
|
double space = 4;
|
||||||
double offset = (kitsB.size()-1)*space/2d;
|
double offset = (divide-1)*space/2d;
|
||||||
|
|
||||||
for (int i=0 ; i<kitsB.size() ; i++)
|
for (int i=0 ; i<divide ; i++)
|
||||||
{
|
{
|
||||||
Kit kit = kitsB.get(i);
|
Kit kit = kits.get(i + divide);
|
||||||
|
|
||||||
if (kit.GetAvailability() == KitAvailability.Null)
|
if (kit.GetAvailability() == KitAvailability.Null)
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in New Issue