mirror of
https://github.com/kaboomserver/weapons.git
synced 2024-06-02 18:31:22 +00:00
Make laser range longer. FPrevent bullets from hitting shooter.
This commit is contained in:
parent
3b62022f1b
commit
81240a1763
|
@ -13,8 +13,6 @@ class PlayerReceiveWeapon implements Listener {
|
||||||
void onInventoryClick(InventoryClickEvent event) {
|
void onInventoryClick(InventoryClickEvent event) {
|
||||||
if ("Weapons".equals(event.getView().getTitle())) {
|
if ("Weapons".equals(event.getView().getTitle())) {
|
||||||
final ItemStack item = event.getCurrentItem();
|
final ItemStack item = event.getCurrentItem();
|
||||||
|
|
||||||
if (item.getItemMeta().hasDisplayName() == true) {
|
|
||||||
final Player player = (Player) event.getWhoClicked();
|
final Player player = (Player) event.getWhoClicked();
|
||||||
|
|
||||||
player.getInventory().addItem(item);
|
player.getInventory().addItem(item);
|
||||||
|
@ -23,4 +21,3 @@ class PlayerReceiveWeapon implements Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
class PlayerUseWeapon implements Listener {
|
class PlayerUseWeapon implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
void onPlayerInteract(PlayerInteractEvent event) {
|
void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
if (event.hasItem() == true &&
|
if (event.hasItem() &&
|
||||||
event.getItem().getItemMeta().hasDisplayName() == true) {
|
event.getItem().getItemMeta().hasDisplayName()) {
|
||||||
final Action action = event.getAction();
|
final Action action = event.getAction();
|
||||||
final Material item = event.getMaterial();
|
final Material item = event.getMaterial();
|
||||||
final String name = event.getItem().getItemMeta().getDisplayName();
|
final String name = event.getItem().getItemMeta().getDisplayName();
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package pw.kaboom.weapons;
|
package pw.kaboom.weapons;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
|
@ -13,6 +14,7 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
|
||||||
|
import org.bukkit.util.BlockIterator;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
class WeaponLaser {
|
class WeaponLaser {
|
||||||
|
@ -22,25 +24,24 @@ class WeaponLaser {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
final Location eyeLocation = player.getEyeLocation();
|
final Location eyeLocation = player.getEyeLocation();
|
||||||
final Vector direction = eyeLocation.getDirection();
|
final Vector direction = eyeLocation.getDirection();
|
||||||
final Location lookLocation = player.getTargetBlock(
|
final int distance = 100;
|
||||||
(Set<Material>) null,
|
|
||||||
100).getLocation();
|
|
||||||
double distance = eyeLocation.distance(lookLocation);
|
|
||||||
final Location particleLocation = player.getEyeLocation();
|
final Location particleLocation = player.getEyeLocation();
|
||||||
final World world = player.getWorld();
|
final World world = player.getWorld();
|
||||||
|
|
||||||
if (lookLocation == null) {
|
for (int i = 0; i <= distance; i++) {
|
||||||
distance = 50;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (double i = 0; i <= distance; i++) {
|
|
||||||
particleLocation.add(direction);
|
particleLocation.add(direction);
|
||||||
|
|
||||||
final int count = 1;
|
final int count = 1;
|
||||||
final double offsetX = 0;
|
final double offsetX = 0;
|
||||||
final double offsetY = 0;
|
final double offsetY = 0;
|
||||||
final double offsetZ = 0;
|
final double offsetZ = 0;
|
||||||
final Particle.DustOptions dustOptions = new Particle.DustOptions(Color.RED, 1);
|
|
||||||
|
final Random random = new Random();
|
||||||
|
final int size = 1;
|
||||||
|
final Particle.DustOptions dustOptions = new Particle.DustOptions(
|
||||||
|
random.nextBoolean() ? Color.TEAL : Color.RED,
|
||||||
|
size
|
||||||
|
);
|
||||||
|
|
||||||
world.spawnParticle(
|
world.spawnParticle(
|
||||||
Particle.REDSTONE,
|
Particle.REDSTONE,
|
||||||
|
@ -53,24 +54,39 @@ class WeaponLaser {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
world.getBlockAt(lookLocation).breakNaturally();
|
final Vector start = eyeLocation.toVector();
|
||||||
|
final int yOffset = 0;
|
||||||
|
|
||||||
final float volume1 = 0.8F;
|
final BlockIterator blockIterator = new BlockIterator(
|
||||||
final float pitch1 = 63.0F;
|
world,
|
||||||
final float volume2 = 1.0F;
|
start,
|
||||||
final float pitch2 = 20.0F;
|
direction,
|
||||||
|
yOffset,
|
||||||
|
distance
|
||||||
|
);
|
||||||
|
|
||||||
|
while (blockIterator.hasNext()) {
|
||||||
|
blockIterator.next().breakNaturally();
|
||||||
|
}
|
||||||
|
|
||||||
|
float volume = 0.8F;
|
||||||
|
float pitch = 63.0F;
|
||||||
|
|
||||||
world.playSound(
|
world.playSound(
|
||||||
eyeLocation,
|
eyeLocation,
|
||||||
Sound.ENTITY_FIREWORK_ROCKET_BLAST_FAR,
|
Sound.ENTITY_FIREWORK_ROCKET_BLAST_FAR,
|
||||||
volume1,
|
volume,
|
||||||
pitch1
|
pitch
|
||||||
);
|
);
|
||||||
|
|
||||||
|
volume = 1.0F;
|
||||||
|
pitch = 20.0F;
|
||||||
|
|
||||||
world.playSound(
|
world.playSound(
|
||||||
eyeLocation,
|
eyeLocation,
|
||||||
Sound.ENTITY_FIREWORK_ROCKET_BLAST,
|
Sound.ENTITY_FIREWORK_ROCKET_BLAST,
|
||||||
volume2,
|
volume,
|
||||||
pitch2
|
pitch
|
||||||
);
|
);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,14 @@ package pw.kaboom.weapons;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
|
@ -24,6 +27,8 @@ import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import com.destroystokyo.paper.event.entity.ProjectileCollideEvent;
|
||||||
|
|
||||||
class WeaponMachineGun implements Listener {
|
class WeaponMachineGun implements Listener {
|
||||||
static Main main;
|
static Main main;
|
||||||
WeaponMachineGun(Main main) {
|
WeaponMachineGun(Main main) {
|
||||||
|
@ -90,6 +95,24 @@ class WeaponMachineGun implements Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Make shooter invulnerable to weapon projectiles */
|
||||||
|
@EventHandler
|
||||||
|
void onProjectileCollide(ProjectileCollideEvent event) {
|
||||||
|
if (event.getEntityType() == EntityType.TIPPED_ARROW) {
|
||||||
|
final Projectile projectile = event.getEntity();
|
||||||
|
|
||||||
|
if ("WeaponMachineGunBullet".equals(projectile.getCustomName())) {
|
||||||
|
final Entity collidedWith = event.getCollidedWith();
|
||||||
|
|
||||||
|
if (collidedWith.getType() == EntityType.PLAYER &&
|
||||||
|
projectile.getShooter() instanceof Player &&
|
||||||
|
((Player) projectile.getShooter()).getUniqueId().equals(collidedWith.getUniqueId())) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
void onProjectileHit(ProjectileHitEvent event) {
|
void onProjectileHit(ProjectileHitEvent event) {
|
||||||
if (event.getEntityType() == EntityType.TIPPED_ARROW) {
|
if (event.getEntityType() == EntityType.TIPPED_ARROW) {
|
||||||
|
|
Loading…
Reference in a new issue