CANNONZ!
This commit is contained in:
parent
1faeb43b73
commit
1042edb134
|
@ -108,6 +108,11 @@ public class UtilMath
|
|||
return num < min ? min : (num > max ? max : num);
|
||||
}
|
||||
|
||||
public static float clamp(float num, float min, float max)
|
||||
{
|
||||
return num < min ? min : (num > max ? max : num);
|
||||
}
|
||||
|
||||
public static long clamp(long num, long min, long max)
|
||||
{
|
||||
return num < min ? min : (num > max ? max : num);
|
||||
|
|
|
@ -14,7 +14,7 @@ public class cemde extends CommandBase<StatsManager>
|
|||
PvpTimer _timer;
|
||||
public cemde(StatsManager plugin, PvpTimer timer)
|
||||
{
|
||||
super(plugin, Rank.ALL, "rstime");
|
||||
super(plugin, Rank.SNR_MODERATOR, "rstime");
|
||||
_timer = timer;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,15 +4,25 @@ import org.bukkit.Location;
|
|||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Slime;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.util.EulerAngle;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilEnt;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.siege.outpost.Outpost;
|
||||
|
||||
public class Cannon implements Listener
|
||||
|
@ -24,8 +34,12 @@ public class Cannon implements Listener
|
|||
|
||||
private Outpost _outpost;
|
||||
|
||||
private Player _rider;
|
||||
|
||||
// Entity Information
|
||||
private ArmorStand _armorStand;
|
||||
private Slime _filler;
|
||||
private Slime _filler2;
|
||||
|
||||
public Cannon(Outpost outpost, Location location)
|
||||
{
|
||||
|
@ -39,6 +53,8 @@ public class Cannon implements Listener
|
|||
public void cleanup()
|
||||
{
|
||||
_armorStand.remove();
|
||||
_filler.remove();
|
||||
_filler2.remove();
|
||||
HandlerList.unregisterAll(this);
|
||||
}
|
||||
|
||||
|
@ -48,7 +64,30 @@ public class Cannon implements Listener
|
|||
{
|
||||
_armorStand = _location.getWorld().spawn(getArmorStandLocation(), ArmorStand.class);
|
||||
}
|
||||
|
||||
|
||||
if (_filler == null)
|
||||
{
|
||||
_filler = _location.getWorld().spawn(getArmorStandLocation(), Slime.class);
|
||||
}
|
||||
|
||||
if (_filler2 == null)
|
||||
{
|
||||
_filler2 = _location.getWorld().spawn(getArmorStandLocation(), Slime.class);
|
||||
}
|
||||
|
||||
_filler.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 99999999, 1, true, false));
|
||||
_filler.setSize(-1);
|
||||
_armorStand.setPassenger(_filler);
|
||||
UtilEnt.Vegetate(_filler);
|
||||
UtilEnt.silence(_filler, true);
|
||||
|
||||
_filler2.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 99999999, 1, true, false));
|
||||
_filler2.setSize(-1);
|
||||
_filler.setPassenger(_filler2);
|
||||
UtilEnt.Vegetate(_filler2);
|
||||
UtilEnt.silence(_filler2, true);
|
||||
|
||||
UtilEnt.setFakeHead(_armorStand, true);
|
||||
_armorStand.teleport(getArmorStandLocation());
|
||||
_armorStand.setVisible(false);
|
||||
_armorStand.setGravity(false);
|
||||
|
@ -57,7 +96,7 @@ public class Cannon implements Listener
|
|||
|
||||
private Location getArmorStandLocation()
|
||||
{
|
||||
return _location.clone().add(.5, -1.3, .5);
|
||||
return _location.clone().add(.5, .15, .5);
|
||||
}
|
||||
|
||||
private void setState(CannonState state)
|
||||
|
@ -75,26 +114,87 @@ public class Cannon implements Listener
|
|||
{
|
||||
setState(CannonState.EMPTY);
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void onInteract(PlayerArmorStandManipulateEvent event)
|
||||
{
|
||||
if (_armorStand != null && _armorStand.equals(event.getRightClicked()))
|
||||
public void onInteract(PlayerInteractAtEntityEvent event)
|
||||
{
|
||||
if (event.getRightClicked().equals(_filler) || event.getRightClicked().equals(_filler2))
|
||||
{
|
||||
Entity passenger = _armorStand.getPassenger();
|
||||
Entity passenger = _filler2.getPassenger();
|
||||
if (passenger == null)
|
||||
{
|
||||
_armorStand.setPassenger(event.getPlayer());
|
||||
_filler2.setPassenger(event.getPlayer());
|
||||
|
||||
_rider = event.getPlayer();
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInteract(PlayerInteractEntityEvent event)
|
||||
{
|
||||
if (event.getRightClicked().equals(_filler) || event.getRightClicked().equals(_filler2))
|
||||
{
|
||||
Entity passenger = _filler2.getPassenger();
|
||||
if (passenger == null)
|
||||
{
|
||||
_filler2.setPassenger(event.getPlayer());
|
||||
|
||||
_rider = event.getPlayer();
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInteract(PlayerArmorStandManipulateEvent event)
|
||||
{
|
||||
if (event.getRightClicked().equals(_armorStand))
|
||||
{
|
||||
Entity passenger = _filler2.getPassenger();
|
||||
if (passenger == null)
|
||||
{
|
||||
_filler2.setPassenger(event.getPlayer());
|
||||
|
||||
_rider = event.getPlayer();
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void update(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.TICK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_rider != null && !_rider.equals(_filler2.getPassenger()))
|
||||
{
|
||||
_rider = null;
|
||||
}
|
||||
|
||||
if (_rider != null)
|
||||
{
|
||||
double standYaw = Math.toDegrees(_armorStand.getHeadPose().getY()) % 360;
|
||||
double riderYaw = _rider.getLocation().getYaw() % 360;
|
||||
|
||||
double dif = riderYaw - standYaw;
|
||||
double yaw = standYaw + (dif / 20.f);
|
||||
|
||||
_armorStand.setHeadPose(new EulerAngle(0, Math.toRadians(yaw), 0));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDamage(EntityDamageEvent event)
|
||||
{
|
||||
if (_armorStand != null && _armorStand.equals(event.getEntity()))
|
||||
if (_armorStand != null && _armorStand.equals(event.getEntity()) || _filler != null && _filler.equals(event.getEntity()) || _filler2 != null && _filler2.equals(event.getEntity()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@ import org.bukkit.inventory.ItemStack;
|
|||
|
||||
public enum CannonState
|
||||
{
|
||||
EMPTY(Material.SPONGE, (byte) 0),
|
||||
LOADED(Material.SPONGE, (byte) 1);
|
||||
EMPTY(Material.SPONGE, (byte) 1),
|
||||
LOADED(Material.SPONGE, (byte) 0);
|
||||
|
||||
private Material _material;
|
||||
private byte _data;
|
||||
|
|
Loading…
Reference in New Issue