Make laser range longer. FPrevent bullets from hitting shooter.
This commit is contained in:
parent
3b62022f1b
commit
81240a1763
|
@ -13,14 +13,11 @@ class PlayerReceiveWeapon implements Listener {
|
|||
void onInventoryClick(InventoryClickEvent event) {
|
||||
if ("Weapons".equals(event.getView().getTitle())) {
|
||||
final ItemStack item = event.getCurrentItem();
|
||||
final Player player = (Player) event.getWhoClicked();
|
||||
|
||||
if (item.getItemMeta().hasDisplayName() == true) {
|
||||
final Player player = (Player) event.getWhoClicked();
|
||||
|
||||
player.getInventory().addItem(item);
|
||||
player.closeInventory();
|
||||
player.sendMessage("You have received the " + item.getItemMeta().getDisplayName().toLowerCase() + "!");
|
||||
}
|
||||
player.getInventory().addItem(item);
|
||||
player.closeInventory();
|
||||
player.sendMessage("You have received the " + item.getItemMeta().getDisplayName().toLowerCase() + "!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||
class PlayerUseWeapon implements Listener {
|
||||
@EventHandler
|
||||
void onPlayerInteract(PlayerInteractEvent event) {
|
||||
if (event.hasItem() == true &&
|
||||
event.getItem().getItemMeta().hasDisplayName() == true) {
|
||||
if (event.hasItem() &&
|
||||
event.getItem().getItemMeta().hasDisplayName()) {
|
||||
final Action action = event.getAction();
|
||||
final Material item = event.getMaterial();
|
||||
final String name = event.getItem().getItemMeta().getDisplayName();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package pw.kaboom.weapons;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.Color;
|
||||
|
@ -13,6 +14,7 @@ import org.bukkit.entity.Player;
|
|||
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
import org.bukkit.util.BlockIterator;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
class WeaponLaser {
|
||||
|
@ -22,25 +24,24 @@ class WeaponLaser {
|
|||
final Player player = event.getPlayer();
|
||||
final Location eyeLocation = player.getEyeLocation();
|
||||
final Vector direction = eyeLocation.getDirection();
|
||||
final Location lookLocation = player.getTargetBlock(
|
||||
(Set<Material>) null,
|
||||
100).getLocation();
|
||||
double distance = eyeLocation.distance(lookLocation);
|
||||
final int distance = 100;
|
||||
final Location particleLocation = player.getEyeLocation();
|
||||
final World world = player.getWorld();
|
||||
|
||||
if (lookLocation == null) {
|
||||
distance = 50;
|
||||
}
|
||||
|
||||
for (double i = 0; i <= distance; i++) {
|
||||
for (int i = 0; i <= distance; i++) {
|
||||
particleLocation.add(direction);
|
||||
|
||||
final int count = 1;
|
||||
final double offsetX = 0;
|
||||
final double offsetY = 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(
|
||||
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 float pitch1 = 63.0F;
|
||||
final float volume2 = 1.0F;
|
||||
final float pitch2 = 20.0F;
|
||||
final BlockIterator blockIterator = new BlockIterator(
|
||||
world,
|
||||
start,
|
||||
direction,
|
||||
yOffset,
|
||||
distance
|
||||
);
|
||||
|
||||
while (blockIterator.hasNext()) {
|
||||
blockIterator.next().breakNaturally();
|
||||
}
|
||||
|
||||
float volume = 0.8F;
|
||||
float pitch = 63.0F;
|
||||
|
||||
world.playSound(
|
||||
eyeLocation,
|
||||
Sound.ENTITY_FIREWORK_ROCKET_BLAST_FAR,
|
||||
volume1,
|
||||
pitch1
|
||||
volume,
|
||||
pitch
|
||||
);
|
||||
|
||||
volume = 1.0F;
|
||||
pitch = 20.0F;
|
||||
|
||||
world.playSound(
|
||||
eyeLocation,
|
||||
Sound.ENTITY_FIREWORK_ROCKET_BLAST,
|
||||
volume2,
|
||||
pitch2
|
||||
volume,
|
||||
pitch
|
||||
);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
|
|
@ -2,11 +2,14 @@ package pw.kaboom.weapons;
|
|||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
|
@ -24,6 +27,8 @@ import org.bukkit.scheduler.BukkitRunnable;
|
|||
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.destroystokyo.paper.event.entity.ProjectileCollideEvent;
|
||||
|
||||
class WeaponMachineGun implements Listener {
|
||||
static 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
|
||||
void onProjectileHit(ProjectileHitEvent event) {
|
||||
if (event.getEntityType() == EntityType.TIPPED_ARROW) {
|
||||
|
|
Loading…
Reference in New Issue