From 67bb44d3f5a2bc97a978ae2821968fbc8a492469 Mon Sep 17 00:00:00 2001 From: Soper Date: Sun, 9 May 2021 16:28:44 -0400 Subject: [PATCH] debugged state now shoots default shell properly at 1,1,0 vector --- src/xyz/soper/arty/debug/DebugCommand.java | 5 ++++- .../arty/event/Listener/MortarInteract.java | 4 +++- src/xyz/soper/arty/util/MortarHandler.java | 17 ++++++++++++++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/xyz/soper/arty/debug/DebugCommand.java b/src/xyz/soper/arty/debug/DebugCommand.java index 40cfc98..225c8b3 100644 --- a/src/xyz/soper/arty/debug/DebugCommand.java +++ b/src/xyz/soper/arty/debug/DebugCommand.java @@ -25,6 +25,7 @@ public class DebugCommand implements TabExecutor, Listener { double multiplier = (double)Integer.parseInt(args[1])/10; Arrow arrow = player.getWorld().spawn(player.getLocation().add(0,1,0), Arrow.class); arrow.setShooter(player); + arrow.setCustomName("shell"); arrow.setVelocity(player.getLocation().getDirection().multiply(multiplier)); player.sendMessage(ChatColor.GOLD + "You just fired an arrow with a velocity " + multiplier); return true; @@ -49,7 +50,9 @@ public class DebugCommand implements TabExecutor, Listener { @EventHandler public void onArrowHit(ProjectileHitEvent event){ - if(event.getEntity().getShooter() instanceof Player && event.getEntity() instanceof Arrow){ + if(event.getEntity() instanceof Arrow + && event.getEntity().getCustomName() != null + && event.getEntity().getCustomName().equals("shell")){ int x = event.getHitBlock().getLocation().getBlockX(); int y = event.getHitBlock().getLocation().getBlockY(); int z = event.getHitBlock().getLocation().getBlockZ(); diff --git a/src/xyz/soper/arty/event/Listener/MortarInteract.java b/src/xyz/soper/arty/event/Listener/MortarInteract.java index f451753..87af679 100644 --- a/src/xyz/soper/arty/event/Listener/MortarInteract.java +++ b/src/xyz/soper/arty/event/Listener/MortarInteract.java @@ -38,7 +38,9 @@ public class MortarInteract implements Listener { if(Shell.isShell(item)){ player.sendMessage("DEBUG: Player has a shell in hand."); MortarHandler mortarHandler = new MortarHandler(new Mortar(block)); - mortarHandler.fireShell(new Shell(item)); + mortarHandler.fireShell(/*new Shell(item)*/ + //THIS IS FOR DEBUGGING. PLEASE FIX AFTER. + new Shell(), player); if(item.getAmount() > 1) item.setAmount(item.getAmount()-1); else player.getInventory().setItemInMainHand(null); } diff --git a/src/xyz/soper/arty/util/MortarHandler.java b/src/xyz/soper/arty/util/MortarHandler.java index b192d73..318cb84 100644 --- a/src/xyz/soper/arty/util/MortarHandler.java +++ b/src/xyz/soper/arty/util/MortarHandler.java @@ -1,5 +1,10 @@ package xyz.soper.arty.util; +import org.bukkit.Particle; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Player; +import org.bukkit.projectiles.ProjectileSource; +import org.bukkit.util.Vector; import xyz.soper.arty.item.Mortar; import xyz.soper.arty.item.Shell; @@ -11,8 +16,14 @@ public class MortarHandler { this.mortar = mortar; } - public void fireShell(Shell shell){ - mortar.block.getWorld().playSound(mortar.location, "entity.generic.explode", 1, 1.5F); + public void fireShell(Shell shell, ProjectileSource shooter){ + Vector debugVector = new Vector(1, 1, 0).normalize(); + mortar.getBlock().getWorld().playSound(mortar.location, "entity.generic.explode", 1, 1.5F); + Arrow shellProjectile = mortar.getBlock().getWorld().spawn(mortar.getBlock().getLocation(), Arrow.class); + shellProjectile.setVelocity(debugVector.multiply(shell.baseVelocity)); + shellProjectile.setShooter(shooter); + shellProjectile.setCustomName("shell"); + mortar.getBlock().getWorld().spawnParticle(Particle.SMOKE_NORMAL, mortar.location, 500, 0, 0, 0, .5); + if(shooter instanceof Player) ((Player) shooter).sendMessage("Shell fired with a velocity " + shell.baseVelocity); } - } \ No newline at end of file