Merge branch 'master' of ssh://184.154.0.242:7999/min/Mineplex into alex-bugfixes
Conflicts: Plugins/Mineplex.StaffServer/.classpath
This commit is contained in:
commit
c41d01e213
BIN
Art/Treasure/4Qq2m6x.png
Normal file
BIN
Art/Treasure/4Qq2m6x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 169 KiB |
BIN
Art/Treasure/canc.jpg
Normal file
BIN
Art/Treasure/canc.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 119 KiB |
BIN
Art/Treasure/xxiJkbb.png
Normal file
BIN
Art/Treasure/xxiJkbb.png
Normal file
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();
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
//Feet
|
||||
double offset = UtilMath.offset(loc, ent.getLocation());
|
||||
|
||||
if (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;
|
||||
|
@ -12,8 +12,8 @@
|
||||
<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/craftbukkit.jar"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Core.Common"/>
|
||||
<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.Core.Common"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
@ -107,6 +107,11 @@ public abstract class MiniPlugin implements Listener
|
||||
{
|
||||
_plugin.getServer().getScheduler().runTaskAsynchronously(_plugin, runnable);
|
||||
}
|
||||
|
||||
public void runAsync(Runnable runnable, long time)
|
||||
{
|
||||
_plugin.getServer().getScheduler().runTaskLaterAsynchronously(_plugin, runnable, time);
|
||||
}
|
||||
|
||||
public void runSync(Runnable runnable)
|
||||
{
|
||||
|
@ -755,9 +755,6 @@ public enum Achievement
|
||||
|
||||
;
|
||||
|
||||
private static String[] _colors = { C.cAqua, C.cGreen, C.cDGray, C.cPurple, C.cYellow, C.cGray };
|
||||
private static int _negativeCount = 0;
|
||||
|
||||
private String _name;
|
||||
private String[] _desc;
|
||||
private String[] _stats;
|
||||
@ -823,10 +820,7 @@ public enum Achievement
|
||||
public static String getExperienceString(int level)
|
||||
{
|
||||
if (level < 0)
|
||||
{
|
||||
_negativeCount++;
|
||||
return _colors[_negativeCount % _colors.length] + level;
|
||||
}
|
||||
return C.cPurple + level;
|
||||
|
||||
if (level < 20)
|
||||
return C.cGray + level;
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@ import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
|
||||
public class AddFriendPage implements Listener
|
||||
@ -91,6 +92,15 @@ public class AddFriendPage implements Listener
|
||||
_currentInventory.clear();
|
||||
HandlerList.unregisterAll(this);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event)
|
||||
{
|
||||
if (event.getPlayer() == _player)
|
||||
{
|
||||
unregisterListener();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent event)
|
||||
|
@ -18,6 +18,7 @@ import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import net.minecraft.server.v1_7_R4.EntityPlayer;
|
||||
@ -130,7 +131,7 @@ public class FriendsGUI implements Listener
|
||||
ItemBuilder builder = new ItemBuilder(Material.SKULL_ITEM, 1, (short) (friend.Online ? 3 : 0));
|
||||
|
||||
builder.setTitle(C.cWhite + C.Bold + friend.Name);
|
||||
builder.setPlayerHead(friend.Name);
|
||||
// builder.setPlayerHead(friend.Name);
|
||||
|
||||
builder.addLore(C.cGray + C.Bold + "Status: " + (friend.Online ? C.cDGreen + "Online" : C.cRed + "Offline"));
|
||||
|
||||
@ -275,7 +276,7 @@ public class FriendsGUI implements Listener
|
||||
ItemBuilder builder = new ItemBuilder(Material.SKULL_ITEM, 1, (short) (friend.Online ? 3 : 0));
|
||||
|
||||
builder.setTitle(C.cWhite + C.Bold + friend.Name);
|
||||
builder.setPlayerHead(friend.Name);
|
||||
// builder.setPlayerHead(friend.Name);
|
||||
|
||||
builder.addLore(C.cGray + C.Bold + "Status: " + (friend.Online ? C.cDGreen + "Online" : C.cRed + "Offline"));
|
||||
|
||||
@ -573,6 +574,15 @@ public class FriendsGUI implements Listener
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event)
|
||||
{
|
||||
if (event.getPlayer() == _player)
|
||||
{
|
||||
unregisterListener();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void OnInventoryClose(InventoryCloseEvent event)
|
||||
{
|
||||
|
@ -45,7 +45,7 @@ public class ItemFleshHook extends ItemGadget implements IThrown
|
||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||
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);
|
||||
|
||||
//Inform
|
||||
|
@ -57,7 +57,7 @@ public class ItemMelonLauncher extends ItemGadget implements IThrown
|
||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||
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);
|
||||
|
||||
//Inform
|
||||
|
@ -114,7 +114,7 @@ public class MorphBat extends MorphGadget implements IThrown
|
||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||
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);
|
||||
|
||||
//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);
|
||||
|
||||
//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);
|
||||
|
||||
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,
|
||||
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,
|
||||
expireTime, hitPlayer, hitBlock, idle, false,
|
||||
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, false,
|
||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
||||
}
|
||||
|
||||
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,
|
||||
expireTime, hitPlayer, hitBlock, idle, pickup,
|
||||
expireTime, hitPlayer, hitNonPlayerEntity, hitBlock, idle, pickup,
|
||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
// WITH CAN HIT PLAYERS LIST:
|
||||
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,
|
||||
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));
|
||||
}
|
||||
|
||||
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,
|
||||
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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_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));
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@ import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
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.MovingObjectPosition;
|
||||
import net.minecraft.server.v1_7_R4.Vec3D;
|
||||
@ -36,7 +37,10 @@ public class ProjectileUser
|
||||
private IThrown _callback;
|
||||
|
||||
private long _expireTime;
|
||||
private long _startTime;
|
||||
|
||||
private boolean _hitPlayer = false;
|
||||
private boolean _hitNonPlayerEntity = false;
|
||||
private boolean _hitBlock = false;
|
||||
private boolean _idle = false;
|
||||
private boolean _pickup = false;
|
||||
@ -61,7 +65,7 @@ public class ProjectileUser
|
||||
private List<Player> _canHit;
|
||||
|
||||
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,
|
||||
Effect effect, int effectData, UpdateType effectRate,
|
||||
ParticleType particle, float particleX, float particleY,
|
||||
@ -74,7 +78,10 @@ public class ProjectileUser
|
||||
_callback = callback;
|
||||
|
||||
_expireTime = expireTime;
|
||||
_startTime = System.currentTimeMillis();
|
||||
|
||||
_hitPlayer = hitPlayer;
|
||||
_hitNonPlayerEntity = hitNonPlayerEntity;
|
||||
_hitBlock = hitBlock;
|
||||
_idle = idle;
|
||||
_pickup = pickup;
|
||||
@ -97,7 +104,7 @@ public class ProjectileUser
|
||||
}
|
||||
|
||||
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,
|
||||
Effect effect, int effectData, UpdateType effectRate,
|
||||
ParticleType particle, float particleX, float particleY,
|
||||
@ -110,7 +117,10 @@ public class ProjectileUser
|
||||
_callback = callback;
|
||||
|
||||
_expireTime = expireTime;
|
||||
_startTime = System.currentTimeMillis();
|
||||
|
||||
_hitPlayer = hitPlayer;
|
||||
_hitNonPlayerEntity = hitNonPlayerEntity;
|
||||
_hitBlock = hitBlock;
|
||||
_idle = idle;
|
||||
_pickup = pickup;
|
||||
@ -151,13 +161,13 @@ public class ProjectileUser
|
||||
|
||||
public boolean Collision()
|
||||
{
|
||||
if (_expireTime != -1 && System.currentTimeMillis() > _expireTime)
|
||||
if (_expireTime != -1 && System.currentTimeMillis() > (_startTime + _expireTime))
|
||||
{
|
||||
_callback.Expire(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_hitPlayer)
|
||||
if (_hitPlayer || _hitNonPlayerEntity)
|
||||
{
|
||||
double distanceToEntity = 0.0D;
|
||||
LivingEntity victim = null;
|
||||
@ -181,6 +191,12 @@ public class ProjectileUser
|
||||
((CraftEntity)_thrown).getHandle().motY,
|
||||
((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)
|
||||
{
|
||||
Entity bukkitEntity = ((net.minecraft.server.v1_7_R4.Entity) entity).getBukkitEntity();
|
||||
@ -264,8 +280,8 @@ public class ProjectileUser
|
||||
//Idle
|
||||
if (_idle)
|
||||
{
|
||||
if (_thrown.getVelocity().length() < 0.2 &&
|
||||
!UtilBlock.airFoliage(_thrown.getLocation().getBlock().getRelative(BlockFace.DOWN)))
|
||||
if (_thrown.getVelocity().length() < 0.2 && (_thrown.isOnGround() ||
|
||||
!UtilBlock.airFoliage(_thrown.getLocation().getBlock().getRelative(BlockFace.DOWN))))
|
||||
{
|
||||
_callback.Idle(this);
|
||||
return true;
|
||||
|
@ -5,10 +5,6 @@ import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
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.account.CoreClientManager;
|
||||
import mineplex.core.common.util.Callback;
|
||||
@ -16,6 +12,10 @@ import mineplex.core.common.util.NautHashMap;
|
||||
import mineplex.core.task.repository.TaskRepository;
|
||||
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>
|
||||
{
|
||||
private static Object _taskLock = new Object();
|
||||
@ -56,31 +56,32 @@ public class TaskManager extends MiniDbClientPlugin<TaskClient>
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
boolean taskExists = false;
|
||||
|
||||
synchronized (_taskLock)
|
||||
{
|
||||
if (!_tasks.containsKey(task))
|
||||
{
|
||||
_repository.addTask(task);
|
||||
System.out.println("TaskManager Adding Task : " + task);
|
||||
}
|
||||
taskExists = _tasks.containsKey(task);
|
||||
}
|
||||
|
||||
updateTasks();
|
||||
|
||||
synchronized (_taskLock)
|
||||
if (!taskExists)
|
||||
{
|
||||
final boolean success = _repository.addAccountTask(PlayerCache.getInstance().getPlayer(uuid).getAccountId(), _tasks.get(task));
|
||||
_repository.addTask(task);
|
||||
System.out.println("TaskManager Adding Task : " + task);
|
||||
|
||||
if (callback != null)
|
||||
updateTasks();
|
||||
}
|
||||
|
||||
final boolean success = _repository.addAccountTask(PlayerCache.getInstance().getPlayer(uuid).getAccountId(), getTaskId(task));
|
||||
|
||||
if (callback != null)
|
||||
{
|
||||
Bukkit.getServer().getScheduler().runTask(getPlugin(), new Runnable()
|
||||
{
|
||||
Bukkit.getServer().getScheduler().runTask(getPlugin(), new Runnable()
|
||||
public void run()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
callback.run(success);
|
||||
}
|
||||
});
|
||||
}
|
||||
callback.run(success);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -66,6 +66,7 @@ import mineplex.hub.modules.NewsManager;
|
||||
import mineplex.hub.modules.ParkourManager;
|
||||
import mineplex.hub.modules.SoccerManager;
|
||||
import mineplex.hub.modules.TextManager;
|
||||
import mineplex.hub.modules.TrickOrTreatManager;
|
||||
import mineplex.hub.modules.WorldManager;
|
||||
import mineplex.hub.profile.gui.GUIProfile;
|
||||
import mineplex.hub.tutorial.TutorialManager;
|
||||
@ -75,6 +76,8 @@ import mineplex.minecraft.game.core.combat.DeathMessageType;
|
||||
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import mineplex.minecraft.game.core.condition.ConditionManager;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import net.minecraft.server.v1_7_R4.EntityMonster;
|
||||
import net.minecraft.server.v1_7_R4.EntityPlayer;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -142,6 +145,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||
private PacketHandler _packetHandler;
|
||||
private PersonalServerManager _personalServerManager;
|
||||
// private HalloweenSpookinessManager _halloweenManager;
|
||||
// private TrickOrTreatManager _trickOrTreatManager;
|
||||
|
||||
private Location _spawn;
|
||||
private int _scoreboardTick = 0;
|
||||
@ -197,6 +201,8 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||
|
||||
new SoccerManager(this, _gadgetManager);
|
||||
new KothManager(this, _gadgetManager);
|
||||
|
||||
new TrickOrTreatManager(_plugin, this, taskManager, donationManager, clientManager);
|
||||
|
||||
_petManager = petManager;
|
||||
_partyManager = partyManager;
|
||||
@ -969,6 +975,27 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void clearEntityTargets(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC)
|
||||
return;
|
||||
|
||||
for (Entity entity : Bukkit.getWorlds().get(0).getEntities())
|
||||
{
|
||||
if (entity instanceof EntityMonster)
|
||||
{
|
||||
EntityMonster entityMonster = (EntityMonster)entity;
|
||||
|
||||
if (entityMonster.target != null && entityMonster.target instanceof EntityPlayer)
|
||||
{
|
||||
if (((EntityPlayer)entityMonster.target).playerConnection.isDisconnected())
|
||||
entityMonster.target = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void clearGameMode(PlayerQuitEvent event)
|
||||
{
|
||||
|
@ -11,6 +11,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.UtilEvent;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
@ -65,14 +66,17 @@ public class HubVisibilityManager extends MiniPlugin
|
||||
{
|
||||
boolean hideMe = Manager.GetTutorial().InTutorial(player) ||
|
||||
UtilMath.offset2d(player.getLocation(), Manager.GetSpawn()) == 0 ||
|
||||
Manager.getPreferences().Get(player).Invisibility ||
|
||||
Manager.getPreferences().Get(player).Invisibility ||
|
||||
_hiddenPlayers.contains(player);
|
||||
|
||||
for (Player other : UtilServer.getPlayers())
|
||||
{
|
||||
if (player.equals(other))
|
||||
continue;
|
||||
|
||||
|
||||
if(Manager.GetClients().Get(other).GetRank().has(Rank.MODERATOR))
|
||||
hideMe = false;
|
||||
|
||||
if (hideMe ||
|
||||
!Manager.getPreferences().Get(other).ShowPlayers ||
|
||||
Manager.GetTutorial().InTutorial(other))
|
||||
|
@ -0,0 +1,193 @@
|
||||
package mineplex.hub.modules;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
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 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.Blindness;
|
||||
import mineplex.hub.modules.trickortreat.Nausea;
|
||||
import mineplex.hub.modules.trickortreat.RandomTeleport;
|
||||
import mineplex.hub.modules.trickortreat.ShockingStrikes;
|
||||
import mineplex.hub.modules.trickortreat.Trick;
|
||||
import mineplex.hub.modules.trickortreat.TrickDialogue;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
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.PlayerInteractEntityEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class TrickOrTreatManager extends MiniPlugin
|
||||
{
|
||||
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 HashSet<TrickDialogue> _tricking = new HashSet<TrickDialogue>();
|
||||
private HashSet<Trick> _tricks = new HashSet<Trick>();
|
||||
|
||||
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;
|
||||
|
||||
_tricks.add(new Blindness(plugin));
|
||||
_tricks.add(new Nausea(plugin));
|
||||
_tricks.add(new RandomTeleport(plugin));
|
||||
_tricks.add(new ShockingStrikes(plugin));
|
||||
}
|
||||
|
||||
public void trick(Player player, String villager)
|
||||
{
|
||||
UtilPlayer.message(player, C.cGoldB + villager + ": " + C.cYellowB + UtilAlg.Random(_tricks).onTrick(player));
|
||||
}
|
||||
|
||||
@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 || !new String(ChatColor.stripColor(en.getCustomName())).toLowerCase().trim().startsWith(_identifier))
|
||||
return;
|
||||
|
||||
System.out.println("Interact with Villager.");
|
||||
|
||||
if (_interacting.contains(event.getPlayer().getName()))
|
||||
return;
|
||||
|
||||
System.out.println("Not interacting.");
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
final String villagerName = ChatColor.stripColor(en.getCustomName()).substring(_identifier.length()).trim();
|
||||
|
||||
if (!Recharge.Instance.use(event.getPlayer(), "ToT with " + villagerName, 2000, false, false))
|
||||
return;
|
||||
|
||||
System.out.println("Not Recharging.");
|
||||
|
||||
_interacting.add(event.getPlayer().getName());
|
||||
|
||||
final String task = "ToT " + _cal.get(Calendar.YEAR) + " " + villagerName;
|
||||
|
||||
if (_taskManager.hasCompletedTask(event.getPlayer(), task))
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), C.cGoldB + villagerName + ": " + C.cYellowB + UtilMath.randomElement(_nextYear));
|
||||
_interacting.remove(event.getPlayer().getName());
|
||||
System.out.println("Has completed Task.");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("Hasn't completed Task.");
|
||||
|
||||
UtilPlayer.message(event.getPlayer(), C.cDGreenB + "You: " + C.cGreenB + "Trick or Treat!");
|
||||
event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.NOTE_PIANO, 1F, 1F);
|
||||
|
||||
final boolean trick = UtilMath.r(10) > 5;
|
||||
|
||||
_tricking.add(new TrickDialogue(this, task, event.getPlayer(), villagerName, trick));
|
||||
|
||||
System.out.println("Added ne TrickDialogue.");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void updateDialogues(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FASTER)
|
||||
return;
|
||||
|
||||
for (Iterator<TrickDialogue> dialogueIterator = _tricking.iterator(); dialogueIterator.hasNext();)
|
||||
{
|
||||
TrickDialogue dialogue = dialogueIterator.next();
|
||||
|
||||
if (dialogue.originalUpdateDialogue())
|
||||
{
|
||||
_interacting.remove(dialogue.getPlayer().getName());
|
||||
dialogueIterator.remove();
|
||||
dialogue.shutdown();
|
||||
System.out.println("Removed trick dialogue.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public TaskManager getTaskManager()
|
||||
{
|
||||
return _taskManager;
|
||||
}
|
||||
|
||||
public DonationManager getDonationManager()
|
||||
{
|
||||
return _donationManager;
|
||||
}
|
||||
|
||||
public CoreClientManager getClientManager()
|
||||
{
|
||||
return _coreClientManager;
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package mineplex.hub.modules.trickortreat;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
|
||||
public class Blindness extends Trick
|
||||
{
|
||||
public Blindness(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTrick(Player player)
|
||||
{
|
||||
System.out.println("Tricking " + player.getName() + " with Blindness");
|
||||
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...";
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package mineplex.hub.modules.trickortreat;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityLook;
|
||||
|
||||
public class HeadSpasms extends Trick
|
||||
{
|
||||
public HeadSpasms(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTrick(final Player player)
|
||||
{
|
||||
System.out.println("Tricking " + player.getName() + " with HeadSpasms");
|
||||
|
||||
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()
|
||||
{
|
||||
if (player.isOnline())
|
||||
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?";
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package mineplex.hub.modules.trickortreat;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
|
||||
public class Nausea extends Trick
|
||||
{
|
||||
public Nausea(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTrick(Player player)
|
||||
{
|
||||
System.out.println("Tricking " + player.getName() + " with Nausea");
|
||||
|
||||
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?";
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package mineplex.hub.modules.trickortreat;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
|
||||
public class RandomTeleport extends Trick
|
||||
{
|
||||
public RandomTeleport(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTrick(Player player)
|
||||
{
|
||||
System.out.println("Tricking " + player.getName() + " with RandomTeleport");
|
||||
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...";
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package mineplex.hub.modules.trickortreat;
|
||||
|
||||
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 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.PacketPlayOutEntityStatus;
|
||||
import net.minecraft.server.v1_7_R4.PacketPlayOutSpawnEntityWeather;
|
||||
|
||||
public class ShockingStrikes extends Trick
|
||||
{
|
||||
public ShockingStrikes(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTrick(final Player player)
|
||||
{
|
||||
System.out.println("Tricking " + player.getName() + " with Shocking Strikes");
|
||||
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()
|
||||
{
|
||||
if (player.isOnline())
|
||||
UtilPlayer.sendPacket(player, new PacketPlayOutEntityStatus(((CraftPlayer) player).getHandle(), (byte) 2));
|
||||
}
|
||||
}, 2 * i);
|
||||
}
|
||||
|
||||
return "I hope you're not too shocked...";
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package mineplex.hub.modules.trickortreat;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public abstract class Trick
|
||||
{
|
||||
protected JavaPlugin Plugin;
|
||||
|
||||
protected Trick(JavaPlugin plugin)
|
||||
{
|
||||
Plugin = plugin;
|
||||
}
|
||||
|
||||
public abstract String onTrick(Player player);
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,196 @@
|
||||
package mineplex.hub.modules.trickortreat;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Instrument;
|
||||
import org.bukkit.Note;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.Note.Tone;
|
||||
|
||||
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.task.TaskManager;
|
||||
import mineplex.hub.modules.TrickOrTreatManager;
|
||||
|
||||
public class TrickDialogue
|
||||
{
|
||||
private TrickOrTreatManager _plugin;
|
||||
private TaskManager _taskManager;
|
||||
|
||||
private String _task;
|
||||
private Player _player;
|
||||
private long _time;
|
||||
private String _villagerName;
|
||||
private boolean _trick;
|
||||
|
||||
private boolean _delayOne;
|
||||
private boolean _delayTwo;
|
||||
private boolean _delayThree;
|
||||
|
||||
public TrickDialogue(TrickOrTreatManager plugin, String task, Player player, String villagerName, boolean trick)
|
||||
{
|
||||
_plugin = plugin;
|
||||
_taskManager = plugin.getTaskManager();
|
||||
_task = task;
|
||||
_player = player;
|
||||
_villagerName = villagerName;
|
||||
_time = System.currentTimeMillis();
|
||||
_trick = trick;
|
||||
}
|
||||
|
||||
public long getTime()
|
||||
{
|
||||
return _time;
|
||||
}
|
||||
|
||||
public boolean originalUpdateDialogue()
|
||||
{
|
||||
if (!_player.isOnline())
|
||||
return true;
|
||||
|
||||
if (!_delayOne && System.currentTimeMillis() - _time > 250)
|
||||
{
|
||||
_delayOne = true;
|
||||
|
||||
_player.playNote(_player.getLocation(), Instrument.PIANO, Note.natural(1, Tone.D));
|
||||
_player.playNote(_player.getLocation(), Instrument.PIANO, Note.natural(1, Tone.A));
|
||||
_time = System.currentTimeMillis();
|
||||
}
|
||||
else if (_delayOne && !_delayTwo && System.currentTimeMillis() - _time > 1000)
|
||||
{
|
||||
_delayTwo = true;
|
||||
|
||||
if (_trick) //Trick
|
||||
UtilPlayer.message(_player, C.cGoldB + _villagerName + ": " + C.cYellowB + "I choose... TRICK!");
|
||||
else
|
||||
UtilPlayer.message(_player, C.cGoldB + _villagerName + ": " + C.cYellowB + "I choose... TREAT!");
|
||||
|
||||
_time = System.currentTimeMillis();
|
||||
}
|
||||
else if (_delayTwo && !_delayThree && System.currentTimeMillis() - _time > 750)
|
||||
{
|
||||
_delayThree = true;
|
||||
|
||||
if (_trick)
|
||||
{
|
||||
_plugin.runAsync(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
_taskManager.completedTask(null, _player, _task);
|
||||
|
||||
_plugin.runSync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
_plugin.trick(_player, _villagerName);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(_player, C.cGoldB + _villagerName + ": " + C.cYellowB + "Have a Happy Halloween!");
|
||||
|
||||
_plugin.runAsync(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
_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));
|
||||
_plugin.getDonationManager().RewardCoins(new Callback<Boolean>()
|
||||
{
|
||||
public void run(final Boolean completed)
|
||||
{
|
||||
_plugin.runSync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (completed)
|
||||
{
|
||||
UtilPlayer.message(_player, F.main("Treat", "You received " + F.elem(C.cYellow + amount + " Coins") + " from " + F.name(_villagerName) + "."));
|
||||
|
||||
//Sound
|
||||
_player.playSound(_player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(_player, F.main("Treat", "There was an error giving " + F.elem(C.cYellow + amount + " Coins") + " to you. Please visit that villager again.") + ".");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}, "Treat " + _villagerName, _player.getName(), _plugin.getClientManager().getAccountId(_player), amount);
|
||||
}
|
||||
else //Gems
|
||||
{
|
||||
final int amount = Math.max(new Random().nextInt(100) + 100, (int) Math.floor(new Random().nextDouble() * 600));
|
||||
_plugin.getDonationManager().RewardGems(new Callback<Boolean>()
|
||||
{
|
||||
public void run(final Boolean completed)
|
||||
{
|
||||
_plugin.runSync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (completed)
|
||||
{
|
||||
UtilPlayer.message(_player, F.main("Treat", "You received " + F.elem(C.cGreen + amount + " Gems") + " from " + F.name(_villagerName) + "."));
|
||||
|
||||
//Sound
|
||||
_player.playSound(_player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(_player, F.main("Treat", "There was an error giving " + F.elem(C.cGreen + amount + " Gems") + " to you. Please visit that villager again.") + ".");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}, "Treat " + _villagerName, _player.getName(), _player.getUniqueId(), amount);
|
||||
}
|
||||
}
|
||||
}, _player, _task);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
_time = System.currentTimeMillis();
|
||||
}
|
||||
else if (_delayOne && _delayTwo && _delayThree)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public void shutdown()
|
||||
{
|
||||
_plugin = null;
|
||||
_taskManager = null;
|
||||
_task = null;
|
||||
_player = null;
|
||||
_villagerName = null;
|
||||
}
|
||||
}
|
@ -901,34 +901,84 @@ public class MapParser extends JavaPlugin implements Listener
|
||||
event.getPlayer().setVelocity(vel);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void signChangeLog(SignChangeEvent event)
|
||||
{
|
||||
if (GetData(event.getPlayer().getWorld().getName()).HasAccess(event.getPlayer()))
|
||||
{
|
||||
try
|
||||
{
|
||||
File file = new File(event.getPlayer().getWorld().getName() + "/" + "sign_log.txt");
|
||||
ArrayList<String> text = new ArrayList<String>();
|
||||
|
||||
text.add("Date: " + UtilTime.now());
|
||||
text.add("Player: " + event.getPlayer().getName());
|
||||
text.add("Location: " + UtilWorld.locToStrClean(event.getBlock().getLocation()));
|
||||
for (int i=0 ; i<event.getLines().length ; i++)
|
||||
text.add("Line " + i + ": " + event.getLines()[i]);
|
||||
|
||||
writeSignLog(text, event.getPlayer().getWorld());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void signCommand(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
if (event.getMessage().toLowerCase().contains("set"))
|
||||
{
|
||||
ArrayList<String> text = new ArrayList<String>();
|
||||
|
||||
text.add("Date: " + UtilTime.now());
|
||||
text.add("Player: " + event.getPlayer().getName());
|
||||
text.add("Location: " + UtilWorld.locToStrClean(event.getPlayer().getLocation()));
|
||||
text.add("Message: " + event.getMessage());
|
||||
|
||||
writeSignCommandLog(text, event.getPlayer().getWorld());
|
||||
}
|
||||
}
|
||||
|
||||
public void writeSignCommandLog(ArrayList<String> text, World world)
|
||||
{
|
||||
try
|
||||
{
|
||||
File file = new File(world.getName() + "/" + "command_sign_log.txt");
|
||||
|
||||
if (!file.exists())
|
||||
file.createNewFile();
|
||||
|
||||
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
|
||||
BufferedWriter bw = new BufferedWriter(fw);
|
||||
|
||||
bw.write("\n\n");
|
||||
bw.write("\n" + "Date: " + UtilTime.now());
|
||||
bw.write("\n" + "Player: " + event.getPlayer().getName());
|
||||
bw.write("\n" + "Location: " + UtilWorld.locToStrClean(event.getBlock().getLocation()));
|
||||
for (int i=0 ; i<event.getLines().length ; i++)
|
||||
bw.write("\n" + "Line " + i + ": " + event.getLines()[i]);
|
||||
|
||||
bw.close();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!file.exists())
|
||||
file.createNewFile();
|
||||
|
||||
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
|
||||
BufferedWriter bw = new BufferedWriter(fw);
|
||||
|
||||
bw.write("\n\n");
|
||||
for (String line : text)
|
||||
bw.write("\n" + line);
|
||||
|
||||
bw.close();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void writeSignLog(ArrayList<String> text, World world)
|
||||
{
|
||||
try
|
||||
{
|
||||
File file = new File(world.getName() + "/" + "sign_log.txt");
|
||||
|
||||
if (!file.exists())
|
||||
file.createNewFile();
|
||||
|
||||
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
|
||||
BufferedWriter bw = new BufferedWriter(fw);
|
||||
|
||||
bw.write("\n\n");
|
||||
for (String line : text)
|
||||
bw.write("\n" + line);
|
||||
|
||||
bw.close();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ public class BlockToss extends SkillCharge implements IThrown
|
||||
|
||||
//Action
|
||||
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);
|
||||
|
||||
//Event
|
||||
|
@ -107,7 +107,7 @@ public class FleshHook extends SkillActiveCharge implements IThrown
|
||||
UtilAction.velocity(item, cur.getLocation().getDirection(),
|
||||
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);
|
||||
|
||||
//Inform
|
||||
|
@ -69,7 +69,7 @@ public class FreezingBlast extends SkillActive implements IThrown
|
||||
//Action
|
||||
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(79));
|
||||
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);
|
||||
|
||||
//Inform
|
||||
|
@ -72,7 +72,7 @@ public class GlacialBlade extends SkillActive implements IThrown
|
||||
//Action
|
||||
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);
|
||||
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);
|
||||
|
||||
//Effect
|
||||
|
@ -70,7 +70,7 @@ public class IcePrison extends SkillActive implements IThrown
|
||||
//Action
|
||||
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(79));
|
||||
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);
|
||||
|
||||
//Inform
|
||||
|
@ -101,7 +101,7 @@ public class LightningOrb extends SkillActive implements IThrown
|
||||
//Action
|
||||
Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(57));
|
||||
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);
|
||||
|
||||
//Inform
|
||||
|
@ -36,7 +36,7 @@ public class StaticLazer extends SkillChargeSword
|
||||
{
|
||||
super(skills, name, classType, skillType, cost, maxLevel,
|
||||
0.012f, 0.004f,
|
||||
12000, -1000, true, true,
|
||||
16000, -1000, true, true,
|
||||
false, true);
|
||||
|
||||
SetDesc(new String[]
|
||||
@ -48,24 +48,25 @@ public class StaticLazer extends SkillChargeSword
|
||||
"Taking damage cancels charge.",
|
||||
"",
|
||||
"Deals #6#1 damage and travels up to",
|
||||
"#20#10 blocks.",
|
||||
"#20#10 blocks, but loses 1 damage",
|
||||
"per 20 blocks travelled.",
|
||||
});
|
||||
|
||||
_fireOnFull = false;
|
||||
_energyPerCharge = 1.2f;
|
||||
_energyPerCharge = 2.4f;
|
||||
setAchievementSkill(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String GetRechargeString()
|
||||
{
|
||||
return "Recharge: " + "#12#-1 Seconds";
|
||||
return "Recharge: " + "#16#-1 Seconds";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String GetEnergyString()
|
||||
{
|
||||
return "Energy: " + "24 per Second";
|
||||
return "Energy: " + "48 per Second";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -82,7 +83,7 @@ public class StaticLazer extends SkillChargeSword
|
||||
Location newTarget = player.getEyeLocation().add(player.getLocation().getDirection().multiply(curRange));
|
||||
|
||||
//Hit Player
|
||||
HashMap<LivingEntity, Double> hits = UtilEnt.getInRadius(newTarget, 2);
|
||||
HashMap<LivingEntity, Double> hits = UtilEnt.getInRadius(newTarget, 1.25);
|
||||
hits.remove(player);
|
||||
if (!hits.isEmpty())
|
||||
break;
|
||||
@ -116,7 +117,7 @@ public class StaticLazer extends SkillChargeSword
|
||||
|
||||
//Damage Event
|
||||
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());
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import mineplex.core.common.util.C;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
@ -36,6 +37,7 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||
private Player _damagerPlayer;
|
||||
private Projectile _projectile;
|
||||
private Location _knockbackOrigin = null;
|
||||
private Entity _knockbackSource = null;
|
||||
|
||||
//Flags
|
||||
private boolean _ignoreArmor = false;
|
||||
@ -46,7 +48,7 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||
|
||||
public CustomDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile projectile,
|
||||
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;
|
||||
|
||||
@ -64,6 +66,8 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||
_knockback = knockback;
|
||||
_ignoreRate = ignoreRate;
|
||||
_ignoreArmor = ignoreArmor;
|
||||
|
||||
_knockbackSource = knockbackSource;
|
||||
|
||||
if (initialSource != null && initialReason != null)
|
||||
AddMod(initialSource, initialReason, 0, true);
|
||||
@ -266,6 +270,9 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||
|
||||
public Location getKnockbackOrigin()
|
||||
{
|
||||
if (_knockbackSource != null)
|
||||
return _knockbackSource.getLocation();
|
||||
|
||||
return _knockbackOrigin;
|
||||
}
|
||||
|
||||
|
@ -32,6 +32,7 @@ import org.bukkit.Sound;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Fish;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -167,17 +168,35 @@ public class DamageManager extends MiniPlugin
|
||||
{
|
||||
NewDamageEvent(damagee, damager, proj,
|
||||
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,
|
||||
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor,
|
||||
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(
|
||||
new CustomDamageEvent(damagee, damager, proj, cause, damage,
|
||||
knockback, ignoreRate, ignoreArmor,
|
||||
source, reason, cancelled));
|
||||
source, reason, cancelled, knockbackSource));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
|
@ -42,9 +42,9 @@ public class Fire extends MiniPlugin
|
||||
_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);
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,10 @@
|
||||
<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/gson-2.2.1.jar"/>
|
||||
<<<<<<< HEAD
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
=======
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre1.8.0_65"/>
|
||||
>>>>>>> 8838ea75e400c6114ef8ba81071411842c12652e
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
@ -79,16 +79,14 @@ public class StaffServer extends JavaPlugin
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("cf1b629c-cc55-4eb4-be9e-3ca86dfc7b9d"), "mannalou"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("04a484d0-93e0-4777-a70c-808046917e3a"), "EvilEsther"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("adaa7613-6683-400f-baf8-7272c04b2cb4"), "Timmy48081_"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("2d5fd31b-0aa5-41db-a62d-a4611a24349a"), "ishh"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("57791647-93b1-4980-8835-7fddadd20eb8"), "xTheOnlyOreOx"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("efaf9a17-2304-4f42-8433-421523c308dc"), "B2_mp"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("492ff708-fe76-4c5a-b9ed-a747b5fa20a0"), "Cherdy8s"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("80f40f29-4d66-4355-a32f-01a65af2a14c"), "rl6"));
|
||||
((CraftServer)getServer()).getHandle().addWhitelist(new GameProfile(UUID.fromString("cf85f470-5248-4978-8208-435736fa136e"), "RustyRoo"));
|
||||
|
||||
|
||||
((CraftServer)getServer()).getHandle().addOp(new GameProfile(UUID.fromString("377bdea3-badc-448d-81c1-65db43b17ea4"), "Strutt20"));
|
||||
((CraftServer)getServer()).getHandle().addOp(new GameProfile(UUID.fromString("efaf9a17-2304-4f42-8433-421523c308dc"), "B2_mp"));
|
||||
((CraftServer)getServer()).getHandle().addOp(new GameProfile(UUID.fromString("2d5fd31b-0aa5-41db-a62d-a4611a24349a"), "ishh"));
|
||||
((CraftServer)getServer()).getHandle().addOp(new GameProfile(UUID.fromString("cf85f470-5248-4978-8208-435736fa136e"), "RustyRoo"));
|
||||
}
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ public class PerkBlockTossEVO extends Perk implements IThrown
|
||||
|
||||
//Action
|
||||
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);
|
||||
|
||||
//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);
|
||||
|
||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||
null, 1f, 1f,
|
||||
Effect.SMOKE, 1, UpdateType.SLOW,
|
||||
1f);
|
||||
|
@ -229,7 +229,7 @@ public class BombLobbers extends TeamGame implements IThrown
|
||||
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));
|
||||
|
||||
@ -343,7 +343,7 @@ public class BombLobbers extends TeamGame implements IThrown
|
||||
newTNT.setVelocity(tnt.getKey().getVelocity());
|
||||
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();
|
||||
|
||||
|
@ -68,7 +68,7 @@ public class PerkMortar extends Perk
|
||||
tnt.setFuseTicks(40);
|
||||
|
||||
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);
|
||||
|
||||
@ -107,7 +107,7 @@ public class PerkMortar extends Perk
|
||||
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);
|
||||
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);
|
||||
_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.games.smash.kits.KitBlaze;
|
||||
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.KitEnderman;
|
||||
import nautilus.game.arcade.game.games.smash.kits.KitGolem;
|
||||
@ -109,6 +110,7 @@ public abstract class SuperSmash extends Game
|
||||
new KitWitherSkeleton(manager),
|
||||
new KitMagmaCube(manager),
|
||||
new KitZombie(manager),
|
||||
new KitCow(manager),
|
||||
|
||||
new KitSheep(manager)
|
||||
|
||||
|
@ -33,7 +33,7 @@ public class KitChicken extends SmashKit
|
||||
|
||||
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 PerkEggGun(),
|
||||
new PerkChickenRocket()
|
||||
@ -89,7 +89,7 @@ public class KitChicken extends SmashKit
|
||||
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
|
||||
|
@ -2,15 +2,24 @@ package nautilus.game.arcade.game.games.smash.kits;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.disguise.disguises.DisguiseCow;
|
||||
import mineplex.core.disguise.disguises.DisguiseMooshroom;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
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.Perk;
|
||||
import nautilus.game.arcade.kit.SmashKit;
|
||||
@ -20,7 +29,7 @@ public class KitCow extends SmashKit
|
||||
{
|
||||
public KitCow(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Mad Cow", KitAvailability.Gem, 5000,
|
||||
super(manager, "Cow", KitAvailability.Gem, 6000,
|
||||
|
||||
new String[]
|
||||
{
|
||||
@ -28,14 +37,16 @@ public class KitCow extends SmashKit
|
||||
|
||||
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 PerkCowStampede(),
|
||||
new PerkCowAngryHerd(),
|
||||
new PerkCowMilkSpiral(),
|
||||
new PerkCowMooshroomMadness(),
|
||||
},
|
||||
EntityType.COW,
|
||||
new ItemStack(Material.MILK_BUCKET),
|
||||
"", 0, null);
|
||||
"Mooshroom Madness", 0, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -44,24 +55,56 @@ public class KitCow extends SmashKit
|
||||
UtilInv.Clear(player);
|
||||
|
||||
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[]
|
||||
{
|
||||
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,
|
||||
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[]
|
||||
{
|
||||
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 + "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().setChestplate(ItemStackFactory.Instance.CreateStack(Material.IRON_CHESTPLATE));
|
||||
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
|
||||
|
@ -21,6 +21,7 @@ import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
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.Perk;
|
||||
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 PerkBlink("Blink", 16, 6000),
|
||||
new PerkBlockToss(),
|
||||
new PerkEndermanTeleport(),
|
||||
new PerkEndermanDragon()
|
||||
},
|
||||
EntityType.ENDERMAN,
|
||||
|
@ -30,7 +30,7 @@ public class KitGolem extends SmashKit
|
||||
|
||||
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 PerkSlow(0),
|
||||
new PerkFissure(),
|
||||
|
@ -214,13 +214,13 @@ public class KitKnight extends SmashKit
|
||||
Horse horse = (Horse)damagee.getVehicle();
|
||||
|
||||
//Damage Event
|
||||
CustomDamageEvent newEvent = new CustomDamageEvent(horse, event.GetDamagerEntity(true), event.GetProjectile(),
|
||||
event.GetCause(), event.GetDamageInitial(), true, false, false,
|
||||
UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
||||
// CustomDamageEvent newEvent = new CustomDamageEvent(horse, event.GetDamagerEntity(true), event.GetProjectile(),
|
||||
// event.GetCause(), event.GetDamageInitial(), true, false, false,
|
||||
// UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
||||
|
||||
_calledEvents.add(newEvent);
|
||||
Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
||||
_calledEvents.remove(newEvent);
|
||||
// _calledEvents.add(newEvent);
|
||||
// Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
||||
// _calledEvents.remove(newEvent);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
@ -246,13 +246,13 @@ public class KitKnight extends SmashKit
|
||||
Player player = (Player)horse.getPassenger();
|
||||
|
||||
//Damage Event
|
||||
final CustomDamageEvent newEvent = new CustomDamageEvent(player, event.GetDamagerEntity(true), event.GetProjectile(),
|
||||
event.GetCause(), event.GetDamageInitial(), true, false, false,
|
||||
UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
||||
|
||||
_calledEvents.add(newEvent);
|
||||
Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
||||
_calledEvents.remove(newEvent);
|
||||
// final CustomDamageEvent newEvent = new CustomDamageEvent(player, event.GetDamagerEntity(true), event.GetProjectile(),
|
||||
// event.GetCause(), event.GetDamageInitial(), true, false, false,
|
||||
// UtilEnt.getName(event.GetDamagerPlayer(true)), event.GetReason(), false);
|
||||
//
|
||||
// _calledEvents.add(newEvent);
|
||||
// Manager.getPlugin().getServer().getPluginManager().callEvent(newEvent);
|
||||
// _calledEvents.remove(newEvent);
|
||||
//Add Knockback
|
||||
event.AddKnockback("Knockback Multiplier", 1.2);
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public class KitMagmaCube extends SmashKit
|
||||
|
||||
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 PerkMagmaBoost(),
|
||||
new PerkMagmaBlast(),
|
||||
|
@ -37,7 +37,7 @@ public class KitPig extends SmashKit
|
||||
|
||||
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 PerkPigBaconBounce(),
|
||||
new PerkPigBaconBomb(),
|
||||
|
@ -36,7 +36,7 @@ public class KitSkeletalHorse extends SmashKit
|
||||
|
||||
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 PerkHorseKick(),
|
||||
new PerkBoneRush(),
|
||||
@ -45,7 +45,7 @@ public class KitSkeletalHorse extends SmashKit
|
||||
},
|
||||
EntityType.HORSE,
|
||||
new ItemStack(Material.BONE),
|
||||
"Bone Storm", 24000, Sound.HORSE_SKELETON_DEATH);
|
||||
"Bone Storm", 20000, Sound.HORSE_SKELETON_DEATH);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,10 +37,10 @@ public class KitSkeleton extends SmashKit
|
||||
|
||||
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 PerkFletcher(2, 4, false),
|
||||
new PerkKnockbackArrow(1.75),
|
||||
new PerkFletcher(3, 3, false),
|
||||
new PerkKnockbackArrow(1.5),
|
||||
new PerkBoneExplosion(),
|
||||
new PerkRopedArrow("Roped Arrow", 1, 5000),
|
||||
new PerkBarrage(5, 300, true, false, true),
|
||||
|
@ -13,6 +13,7 @@ import mineplex.core.disguise.disguises.DisguiseSquid;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
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.Perk;
|
||||
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 PerkSuperSquid(),
|
||||
new PerkInkBlast(),
|
||||
new PerkFishFlurry(),
|
||||
new PerkStormSquid()
|
||||
},
|
||||
EntityType.SQUID,
|
||||
@ -67,6 +69,16 @@ public class KitSkySquid extends SmashKit
|
||||
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)
|
||||
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",
|
||||
|
@ -46,7 +46,7 @@ public class KitSlime extends SmashKit
|
||||
|
||||
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 PerkSlimeSlam(),
|
||||
new PerkSlimeRocket(),
|
||||
@ -142,7 +142,7 @@ public class KitSlime extends SmashKit
|
||||
|
||||
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
|
||||
|
@ -92,8 +92,8 @@ public class KitSnowman extends SmashKit
|
||||
new String[]
|
||||
{
|
||||
ChatColor.RESET + "Creates a field of snow around you",
|
||||
ChatColor.RESET + "granting 150% damage to opponents",
|
||||
ChatColor.RESET + "who are standing on it.",
|
||||
ChatColor.RESET + "granting +1 damage and 60% knockback",
|
||||
ChatColor.RESET + "to opponents standing on it.",
|
||||
ChatColor.RESET + "",
|
||||
ChatColor.RESET + "Your aura shrinks on low energy.",
|
||||
}));
|
||||
|
@ -34,7 +34,7 @@ public class KitSpider extends SmashKit
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkSmashStats(7, 1.5, 0.3, 6),
|
||||
new PerkSmashStats(6, 1.5, 0.25, 6),
|
||||
new PerkSpiderLeap(),
|
||||
new PerkNeedler(),
|
||||
new PerkWebShot(),
|
||||
|
@ -34,7 +34,7 @@ public class KitWolf extends SmashKit
|
||||
|
||||
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 PerkWolf(),
|
||||
},
|
||||
|
@ -37,7 +37,7 @@ public class KitZombie extends SmashKit
|
||||
|
||||
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 PerkFletcher(2, 2, false),
|
||||
new PerkKnockbackArrow(1.5),
|
||||
@ -66,7 +66,7 @@ public class KitZombie extends SmashKit
|
||||
}));
|
||||
|
||||
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[]
|
||||
{
|
||||
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().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS));
|
||||
player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS));
|
||||
}
|
||||
|
||||
@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();
|
||||
|
||||
//particles
|
||||
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))
|
||||
{
|
||||
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)
|
||||
{
|
||||
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,7 +3,39 @@ package nautilus.game.arcade.game.games.turfforts;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
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.ChatColor;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftArrow;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.entity.ItemSpawnEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
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.Item;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.MapUtil;
|
||||
@ -21,6 +53,8 @@ import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
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.TeamGame;
|
||||
import nautilus.game.arcade.game.games.turfforts.kits.KitInfiltrator;
|
||||
@ -30,31 +64,6 @@ import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.stats.BehindEnemyLinesStatTracker;
|
||||
import nautilus.game.arcade.stats.BlockShreadStatTracker;
|
||||
import nautilus.game.arcade.stats.TheComebackStatTracker;
|
||||
import net.minecraft.server.v1_7_R4.EntityArrow;
|
||||
import net.minecraft.server.v1_7_R4.Item;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftArrow;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
|
||||
public class TurfForts extends TeamGame
|
||||
{
|
||||
@ -104,16 +113,17 @@ public class TurfForts extends TeamGame
|
||||
private long _fightTime = 90000;
|
||||
private boolean _fight = false;
|
||||
private int _lines = 0;
|
||||
|
||||
|
||||
private HashMap<Player, Long> _enemyTurf = new HashMap<Player, Long>();
|
||||
|
||||
|
||||
private Set<UUID> playersThatNeedBlocks = new HashSet<UUID>();
|
||||
|
||||
public TurfForts(ArcadeManager manager)
|
||||
{
|
||||
super(manager, GameType.TurfWars,
|
||||
|
||||
new Kit[]
|
||||
{
|
||||
|
||||
new KitMarksman(manager),
|
||||
new KitInfiltrator(manager),
|
||||
new KitShredder(manager),
|
||||
@ -125,7 +135,6 @@ public class TurfForts extends TeamGame
|
||||
"",
|
||||
"Each kill advances your turf forwards.",
|
||||
"Take over all the turf to win!"
|
||||
|
||||
});
|
||||
|
||||
this.StrictAntiHack = true;
|
||||
@ -269,7 +278,7 @@ public class TurfForts extends TeamGame
|
||||
EndCheck();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void BowCancel(EntityShootBowEvent event)
|
||||
{
|
||||
@ -287,7 +296,9 @@ public class TurfForts extends TeamGame
|
||||
{
|
||||
if (event.isCancelled()) // this statement might save just a small amount of time
|
||||
return;
|
||||
|
||||
|
||||
|
||||
|
||||
if (!IsAlive(event.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
@ -299,13 +310,26 @@ public class TurfForts extends TeamGame
|
||||
event.setCancelled(true);
|
||||
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
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void BlockPlace(BlockPlaceEvent event)
|
||||
{
|
||||
if (event.isCancelled())
|
||||
return;
|
||||
//Remoeved and replaced by ignoreCancelled = true
|
||||
//if (event.isCancelled())
|
||||
// return;
|
||||
|
||||
GameTeam team = GetTeam(event.getPlayer());
|
||||
if (team == null)
|
||||
@ -397,21 +421,22 @@ public class TurfForts extends TeamGame
|
||||
int z = fieldZ.getInt(entityArrow);
|
||||
|
||||
Block block = arrow.getWorld().getBlockAt(x, y, z);
|
||||
|
||||
|
||||
if (block.getTypeId() == 35)
|
||||
{
|
||||
if (block.getData() == 14 && team.GetColor() != ChatColor.RED)
|
||||
if (block.getData() == 14 /* && team.GetColor() != ChatColor.RED */)
|
||||
{
|
||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, Material.REDSTONE_BLOCK.getId());
|
||||
}
|
||||
else if (block.getData() == 3 && team.GetColor() != ChatColor.AQUA)
|
||||
else if (block.getData() == 3 /* && team.GetColor() != ChatColor.AQUA */)
|
||||
{
|
||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, Material.LAPIS_BLOCK.getId());
|
||||
}
|
||||
|
||||
|
||||
Bukkit.getPluginManager().callEvent(new ShredBlockEvent(block, arrow));
|
||||
|
||||
block.breakNaturally();
|
||||
|
||||
|
||||
block.setType(Material.AIR);
|
||||
}
|
||||
|
||||
arrow.remove();
|
||||
@ -526,13 +551,44 @@ public class TurfForts extends TeamGame
|
||||
{
|
||||
for (Player player : team.GetPlayers(true))
|
||||
{
|
||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.WOOL, team.GetColorData(), 24));
|
||||
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));
|
||||
}
|
||||
|
||||
@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
|
||||
@EventHandler
|
||||
public void ScoreboardUpdate(UpdateEvent event)
|
||||
@ -686,7 +742,8 @@ public class TurfForts extends TeamGame
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@EventHandler
|
||||
public void ItemRemoval(UpdateEvent event)
|
||||
{
|
||||
@ -705,7 +762,20 @@ public class TurfForts extends TeamGame
|
||||
ent.remove();
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
public GameTeam GetOtherTeam(GameTeam team) {
|
||||
return team.GetColor() == ChatColor.RED ? GetTeam(ChatColor.AQUA) : GetTeam(ChatColor.RED);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onItem(ItemSpawnEvent e) {
|
||||
if (e.getEntityType().equals(EntityType.DROPPED_ITEM)) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void EndCheck()
|
||||
{
|
||||
@ -735,7 +805,7 @@ public class TurfForts extends TeamGame
|
||||
if (player.isOnline())
|
||||
AddGems(player, 10, "Participation", false, false);
|
||||
}
|
||||
|
||||
|
||||
//End
|
||||
SetState(GameState.End);
|
||||
}
|
||||
@ -744,4 +814,4 @@ public class TurfForts extends TeamGame
|
||||
{
|
||||
return _enemyTurf.get(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -47,17 +47,6 @@ public class PerkArcticAura extends Perk
|
||||
//Snow
|
||||
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);
|
||||
|
||||
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, 1, UpdateType.SLOW,
|
||||
0.5f);
|
||||
|
@ -166,7 +166,7 @@ public class PerkBatForm extends SmashPerk
|
||||
}
|
||||
|
||||
//Move
|
||||
data.Location.add(data.Direction.clone().multiply(0.75));
|
||||
data.Location.add(data.Direction.clone().multiply(1));
|
||||
|
||||
//Effect
|
||||
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);
|
||||
for (LivingEntity cur : targets.keySet())
|
||||
{
|
||||
if (cur.equals(data.Shooter))
|
||||
continue;
|
||||
|
||||
Manager.GetDamage().NewDamageEvent(cur, data.Shooter, null,
|
||||
DamageCause.CUSTOM, 12 * targets.get(cur) + 0.5, true, false, false,
|
||||
data.Shooter.getName(), GetName());
|
||||
|
@ -3,6 +3,7 @@ package nautilus.game.arcade.kit.perks;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.FireworkEffect.Type;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
@ -104,7 +105,9 @@ public class PerkBlink extends SmashPerk
|
||||
//Firework
|
||||
UtilFirework.playFirework(player.getEyeLocation(), Type.BALL, Color.BLACK, false, false);
|
||||
|
||||
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1f, 1f);
|
||||
player.teleport(loc);
|
||||
player.playSound(player.getLocation(), Sound.ENDERMAN_TELEPORT, 1f, 1f);
|
||||
|
||||
//Firework
|
||||
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.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;
|
||||
@ -74,6 +75,9 @@ public class PerkBlockToss extends SmashPerk implements IThrown
|
||||
|
||||
if (UtilBlock.usable(grab))
|
||||
return;
|
||||
|
||||
if (!Recharge.Instance.usable(player, GetName()))
|
||||
return;
|
||||
|
||||
if (!UtilBlock.airFoliage(grab.getRelative(BlockFace.UP)) || Manager.GetBlockRestore().Contains(grab.getRelative(BlockFace.UP)))
|
||||
{
|
||||
@ -126,6 +130,9 @@ public class PerkBlockToss extends SmashPerk implements IThrown
|
||||
|
||||
for (Player cur : throwSet)
|
||||
{
|
||||
Recharge.Instance.recharge(cur, GetName());
|
||||
Recharge.Instance.use(cur, GetName(), 2000, false, true);
|
||||
|
||||
BlockTossData data = _hold.remove(cur);
|
||||
|
||||
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
|
||||
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);
|
||||
|
||||
//Event
|
||||
|
@ -57,7 +57,7 @@ public class PerkBoneExplosion extends SmashPerk
|
||||
if (!Recharge.Instance.use(player, GetName(), 10000, true, true))
|
||||
return;
|
||||
|
||||
HashMap<Player, Double> nearby = UtilPlayer.getInRadius(player.getLocation(), 10);
|
||||
HashMap<Player, Double> nearby = UtilPlayer.getInRadius(player.getLocation(), 7);
|
||||
for (Player other : nearby.keySet())
|
||||
{
|
||||
if (player.equals(other))
|
||||
|
@ -123,7 +123,7 @@ public class PerkBoneRush extends SmashPerk implements IThrown
|
||||
{
|
||||
Item bone = player.getWorld().dropItem(player.getLocation().add(Math.random()*5 - 2.5, Math.random()*3, Math.random()*5 - 2.5), new ItemStack(Material.BONE));
|
||||
UtilAction.velocity(bone, dir, 0.6 + 0.3 * Math.random(), false, 0, 0.1 + Math.random() * 0.05, 0.3, false);
|
||||
Manager.GetProjectile().AddThrow(bone, player, this, -1, true, true, true, false, 0.5f);
|
||||
Manager.GetProjectile().AddThrow(bone, player, this, 2000, true, true, true, true, 0.5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
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, 1, UpdateType.SLOW,
|
||||
0.5f);
|
||||
|
@ -55,6 +55,8 @@ public class PerkCreeperElectricity extends Perk
|
||||
|
||||
SetPowered(damagee, true);
|
||||
|
||||
Manager.GetCondition().Factory().Speed(GetName(), damagee, damagee, 4, 1, false, false, false);
|
||||
|
||||
//Sound
|
||||
damagee.getWorld().playSound(damagee.getLocation(), Sound.CREEPER_HISS, 3f, 1.25f);
|
||||
|
||||
@ -117,8 +119,10 @@ public class PerkCreeperElectricity extends Perk
|
||||
//Inform
|
||||
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());
|
||||
Manager.GetCondition().Factory().Shock(GetName(), event.GetDamagerEntity(false), event.GetDamageeEntity(), 1, false, false);
|
||||
|
||||
SetPowered(damagee, false);
|
||||
|
||||
//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));
|
||||
|
||||
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, 1, UpdateType.SLOW,
|
||||
0.5f);
|
||||
0.65f);
|
||||
|
||||
//Inform
|
||||
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()))
|
||||
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()))
|
||||
return;
|
||||
|
||||
event.AddKnockback(GetName(), 3);
|
||||
event.AddKnockback(GetName(), 2.5);
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ public class PerkDeathsGrasp extends Perk
|
||||
{
|
||||
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"
|
||||
});
|
||||
}
|
||||
@ -143,7 +143,7 @@ public class PerkDeathsGrasp extends Perk
|
||||
DamageCause.CUSTOM, 6, false, true, false,
|
||||
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);
|
||||
|
||||
@ -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()) + "."));
|
||||
|
||||
Recharge.Instance.recharge(damager, GetName());
|
||||
Recharge.Instance.use(damager, GetName(), 2000, true, true);
|
||||
}
|
||||
|
||||
@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.UtilBlock;
|
||||
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.UtilTime;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
@ -89,7 +93,7 @@ public class PerkFirefly extends SmashPerk
|
||||
if (event.getType() != UpdateType.TICK)
|
||||
return;
|
||||
|
||||
_tick = (_tick + 1)%3;
|
||||
_tick = (_tick + 1)%1000;
|
||||
|
||||
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.Location = data.Player.getLocation();
|
||||
|
||||
if (_tick == 0)
|
||||
{
|
||||
//Firework
|
||||
UtilFirework.playFirework(data.Player.getLocation().add(0, 0.6, 0), Type.BURST, Color.ORANGE, false, false);
|
||||
}
|
||||
//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());
|
||||
|
||||
float progress = (float)(System.currentTimeMillis()-data.Time)/1500f;
|
||||
|
||||
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.BLAZE_BREATH, 0.5f, 1f + progress);
|
||||
}
|
||||
//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)));
|
||||
data.Player.getWorld().playSound(data.Player.getLocation(), Sound.EXPLODE, 0.6f, 1.2f);
|
||||
|
||||
if (_tick == 0)
|
||||
//Sound and Effect
|
||||
if (!isSuperActive(data.Player))
|
||||
{
|
||||
//Firework
|
||||
UtilFirework.playFirework(data.Player.getLocation().add(0, 0.6, 0), isSuperActive(data.Player) ? Type.BALL : Type.BURST, Color.RED, false, superActive);
|
||||
}
|
||||
|
||||
for (Player other : UtilPlayer.getNearby(data.Player.getLocation(), isSuperActive(data.Player) ? 6 : 4))
|
||||
UtilParticle.PlayParticle(ParticleType.FLAME, data.Player.getLocation().add(0, 1, 0), 0.6f, 0.6f, 0.6f, 0, 40, ViewDist.LONG, UtilServer.getPlayers());
|
||||
|
||||
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) ? 7 : 4))
|
||||
{
|
||||
if (other.equals(data.Player))
|
||||
continue;
|
||||
@ -136,10 +149,9 @@ public class PerkFirefly extends SmashPerk
|
||||
other.playEffect(EntityEffect.HURT);
|
||||
|
||||
if (_tick == 0)
|
||||
if (!data.Targets.contains(other))
|
||||
{
|
||||
if (Recharge.Instance.use(other, GetName() + " hit by " + data.Player.getName(), 2000, false, false))
|
||||
{
|
||||
data.Targets.add(other);
|
||||
|
||||
//Damage Event
|
||||
Manager.GetDamage().NewDamageEvent(other, data.Player, null,
|
||||
DamageCause.CUSTOM, 10, true, true, false,
|
||||
@ -147,6 +159,7 @@ public class PerkFirefly extends SmashPerk
|
||||
|
||||
UtilPlayer.message(other, F.main("Game", F.elem(Manager.GetColor(data.Player) + data.Player.getName()) + " hit you with " + F.elem(GetName()) + "."));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -93,7 +93,7 @@ public class PerkFlap extends SmashPerk
|
||||
|
||||
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);
|
||||
}
|
||||
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))
|
||||
return;
|
||||
|
||||
UtilAction.zeroVelocity(player);
|
||||
player.teleport(player.getLocation().add(0, 0.75, 0));
|
||||
player.teleport(player.getLocation().add(0, 1, 0));
|
||||
UtilAction.velocity(player, new Vector(0,0.5,0));
|
||||
|
||||
_data.add(new IcePathData(player));
|
||||
|
||||
|
@ -46,7 +46,8 @@ public class PerkInferno extends SmashPerk
|
||||
if (!Kit.HasKit(player))
|
||||
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
|
||||
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());
|
||||
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.UtilEnt;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
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.itemstack.ItemStackFactory;
|
||||
import mineplex.core.projectile.IThrown;
|
||||
import mineplex.core.projectile.ProjectileUser;
|
||||
@ -71,9 +75,10 @@ public class PerkInkBlast extends SmashPerk implements IThrown
|
||||
|
||||
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);
|
||||
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);
|
||||
|
||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true,
|
||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true,
|
||||
null, 1f, 1f,
|
||||
Effect.SMOKE, 4, UpdateType.TICK,
|
||||
ParticleType.EXPLODE, UpdateType.TICK,
|
||||
0.5f);
|
||||
}
|
||||
|
||||
@ -110,8 +115,8 @@ public class PerkInkBlast extends SmashPerk implements IThrown
|
||||
Manager.GetDamage().NewDamageEvent(target, data.GetThrower(), null,
|
||||
DamageCause.PROJECTILE, 3, true, true, false,
|
||||
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
|
||||
|
@ -63,7 +63,7 @@ public class PerkIronHook extends Perk implements IThrown
|
||||
UtilAction.velocity(item, player.getLocation().getDirection(),
|
||||
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);
|
||||
|
||||
//Inform
|
||||
|
@ -151,7 +151,7 @@ public class PerkLazer extends Perk
|
||||
if (other.equals(player))
|
||||
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;
|
||||
break;
|
||||
@ -189,7 +189,7 @@ public class PerkLazer extends Perk
|
||||
continue;
|
||||
|
||||
//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
|
||||
Manager.GetDamage().NewDamageEvent(other, player, null,
|
||||
|
@ -57,7 +57,7 @@ public class PerkNeedler extends SmashPerk
|
||||
if (!Kit.HasKit(player))
|
||||
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;
|
||||
|
||||
_active.put(player, 8);
|
||||
|
@ -69,7 +69,7 @@ public class PerkPigBaconBomb extends SmashPerk
|
||||
if (!Kit.HasKit(player))
|
||||
return;
|
||||
|
||||
float energy = 0.40f;
|
||||
float energy = 0.30f;
|
||||
|
||||
DisguiseBase disguise = Manager.GetDisguise().getDisguise(player);
|
||||
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));
|
||||
|
||||
//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);
|
||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, false, 0.4f);
|
||||
ent.setPickupDelay(9999);
|
||||
|
@ -78,7 +78,7 @@ public class PerkSeismicSlam extends Perk
|
||||
if (!Kit.HasKit(player))
|
||||
return;
|
||||
|
||||
if (!Recharge.Instance.use(player, GetName(), 6000, true, true))
|
||||
if (!Recharge.Instance.use(player, GetName(), 7000, true, true))
|
||||
return;
|
||||
|
||||
//Action
|
||||
@ -115,7 +115,7 @@ public class PerkSeismicSlam extends Perk
|
||||
_live.remove(player);
|
||||
|
||||
//Action
|
||||
int damage = 11;
|
||||
int damage = 10;
|
||||
double range = 8;
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ public class PerkStormSquid extends SmashPerk
|
||||
|
||||
//Damage Event
|
||||
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());
|
||||
|
||||
//Velocity
|
||||
|
@ -13,9 +13,12 @@ import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilAction;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
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.recharge.Recharge;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
@ -93,8 +96,8 @@ public class PerkSuperSquid extends SmashPerk
|
||||
|
||||
UtilAction.velocity(cur, 0.6, 0.1, 1, true);
|
||||
|
||||
cur.getWorld().playSound(cur.getLocation(), Sound.SPLASH2, 0.2f, 1f);
|
||||
cur.getWorld().playEffect(cur.getLocation(), Effect.STEP_SOUND, 8);
|
||||
cur.getWorld().playSound(cur.getLocation(), Sound.SPLASH2, 0.5f, 1f);
|
||||
UtilParticle.PlayParticle(ParticleType.SPLASH, cur.getLocation().add(0, 0.5, 0), 0.3f, 0.3f, 0.3f, 0, 60, ViewDist.LONG, UtilServer.getPlayers());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ public class PerkWebShot extends SmashPerk implements IThrown
|
||||
random.multiply(0.2);
|
||||
|
||||
UtilAction.velocity(ent, player.getLocation().getDirection().multiply(-1).add(random), 1 + Math.random() * 0.4, false, 0, 0.2, 10, false);
|
||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, false, 0.5f);
|
||||
Manager.GetProjectile().AddThrow(ent, player, this, -1, true, true, true, true, 0.5f);
|
||||
}
|
||||
|
||||
//Inform
|
||||
|
@ -36,7 +36,8 @@ public class PerkWitherImage extends SmashPerk
|
||||
{
|
||||
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
|
||||
{
|
||||
if (!Recharge.Instance.use(player, "Wither Swap", 1000, true, false))
|
||||
if (!Recharge.Instance.use(player, "Wither Swap", 2000, true, false))
|
||||
return;
|
||||
|
||||
Skeleton skel = _images.get(player);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user