Make laser range longer. FPrevent bullets from hitting shooter.

This commit is contained in:
mathiascode 2019-12-16 02:06:23 +02:00
parent 3b62022f1b
commit 81240a1763
4 changed files with 64 additions and 28 deletions

View File

@ -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() + "!");
}
}
}

View File

@ -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();

View File

@ -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);
}

View File

@ -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) {