adding tuner interaction handling
parent
73c72cbe41
commit
dc4871bd3b
|
@ -1,8 +1,9 @@
|
|||
package xyz.soper.arty.event.Listener;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
@ -11,6 +12,7 @@ import org.bukkit.event.entity.ProjectileHitEvent;
|
|||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
import xyz.soper.arty.item.Mortar;
|
||||
import xyz.soper.arty.item.MortarTuner;
|
||||
import xyz.soper.arty.item.Shell;
|
||||
|
@ -33,41 +35,69 @@ public class MortarInteract implements Listener {
|
|||
if(Shell.isShell(item)){
|
||||
player.sendMessage("DEBUG: Player has a shell in hand.");
|
||||
MortarHandler.fireShell(new Mortar(block), new Shell(item), player);
|
||||
if(item.getAmount() > 1) item.setAmount(item.getAmount()-1);
|
||||
else player.getInventory().setItemInMainHand(null);
|
||||
if(player.getGameMode() != GameMode.CREATIVE){
|
||||
if(item.getAmount() > 1) item.setAmount(item.getAmount()-1);
|
||||
else player.getInventory().setItemInMainHand(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(MortarTuner.isTuner(item)){
|
||||
MortarTuner tuner = new MortarTuner(item);
|
||||
Location linkedLocation = tuner.getLinkedLocation();
|
||||
if(linkedLocation != null) linkedLocation.setWorld(player.getWorld());
|
||||
|
||||
player.sendMessage("DEBUG: Player has a tuner in hand.");
|
||||
if(player.isSneaking()){
|
||||
if(event.getAction() == Action.RIGHT_CLICK_BLOCK){
|
||||
MortarHandler.linkTuner(block, item);
|
||||
if(Mortar.isMortar(event.getClickedBlock())){
|
||||
MortarHandler.linkTuner(block, item);
|
||||
player.sendMessage(ChatColor.GOLD + "Linked Tuner with Mortar at "
|
||||
+ block.getLocation().getBlockX() + ", "
|
||||
+ block.getLocation().getBlockY() + ", "
|
||||
+ block.getLocation().getBlockZ());
|
||||
}
|
||||
else{
|
||||
MortarHandler.linkTuner(null, item);
|
||||
player.sendMessage(ChatColor.GOLD + "Unlinked tuner.");
|
||||
}
|
||||
player.updateInventory();
|
||||
player.sendMessage(ChatColor.GOLD + "Linked Tuner with to Mortar at "
|
||||
+ block.getLocation().getBlockX() + ", "
|
||||
+ block.getLocation().getBlockY() + ", "
|
||||
+ block.getLocation().getBlockZ());
|
||||
}
|
||||
else if(event.getAction() == Action.RIGHT_CLICK_AIR
|
||||
|| event.getAction() == Action.LEFT_CLICK_AIR){
|
||||
if(linkedLocation == null){
|
||||
player.sendMessage(ChatColor.GOLD + "Tuner is not linked to anything.");
|
||||
}
|
||||
else if(linkedLocation.distance(player.getLocation()) < 2){
|
||||
if(Mortar.isMortar(linkedLocation.getBlock())){
|
||||
Block linkedMortar = linkedLocation.getBlock();
|
||||
Vector playerDirection = player.getLocation().getDirection();
|
||||
if(event.getAction() == Action.RIGHT_CLICK_AIR){
|
||||
Vector horizonVector = new Vector(playerDirection.getX(), 0, playerDirection.getZ());
|
||||
Mortar.setMortarDirection(linkedMortar, horizonVector);
|
||||
player.sendMessage(ChatColor.GOLD + "Mortar is now pointing towards " + horizonVector.getX() + ", " + horizonVector.getZ());
|
||||
}
|
||||
else if(event.getAction() == Action.LEFT_CLICK_AIR){
|
||||
Vector verticalVector = new Vector(0, playerDirection.getY(), 0);
|
||||
Mortar.setMortarDirection(linkedMortar, verticalVector);
|
||||
player.sendMessage(ChatColor.GOLD + "Mortar is now pointing up with a vector " + verticalVector.getY());
|
||||
}
|
||||
}
|
||||
else player.sendMessage(ChatColor.GOLD + "Linked position has no mortar.");
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onShellLand(ProjectileHitEvent event){
|
||||
//START DEBUG
|
||||
System.out.println(ChatColor.GOLD + "------ARTY-DEBUG:------");
|
||||
System.out.println(event.getEntity().getCustomName());
|
||||
System.out.println(event.getEntity().getShooter());
|
||||
System.out.println(Shell.isShell(event.getEntity()));
|
||||
//END DEBUG
|
||||
if(Shell.isShell(event.getEntity())){
|
||||
Shell shell = new Shell(event.getEntity());
|
||||
/*DEBUG*/System.out.println("Projectile is an arrow, not null, and a shell");
|
||||
if(event.getHitBlock() != null){
|
||||
/*DEBUG*/System.out.println("Projectile hit a block, exploding shell in front of block.");
|
||||
shell.explodeShell(
|
||||
event.getHitBlock()
|
||||
.getLocation()
|
||||
|
@ -79,12 +109,9 @@ public class MortarInteract implements Listener {
|
|||
event.getEntity().remove();
|
||||
}
|
||||
else if(event.getHitEntity() != null){
|
||||
/*DEBUG*/System.out.println("Projectile hit an entity, exploding shell on entity.");
|
||||
shell.explodeShell(event.getHitEntity().getLocation());
|
||||
event.getEntity().remove();
|
||||
}
|
||||
}
|
||||
/*DEBUG*/System.out.println("Ending onShellLand event");
|
||||
/*DEBUG*/System.out.println(ChatColor.GOLD + "---END OF ARTY-DEBUG---");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue