adding tuner interaction handling
This commit is contained in:
parent
73c72cbe41
commit
dc4871bd3b
@ -1,8 +1,9 @@
|
|||||||
package xyz.soper.arty.event.Listener;
|
package xyz.soper.arty.event.Listener;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Arrow;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@ -11,6 +12,7 @@ import org.bukkit.event.entity.ProjectileHitEvent;
|
|||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.inventory.EquipmentSlot;
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
import xyz.soper.arty.item.Mortar;
|
import xyz.soper.arty.item.Mortar;
|
||||||
import xyz.soper.arty.item.MortarTuner;
|
import xyz.soper.arty.item.MortarTuner;
|
||||||
import xyz.soper.arty.item.Shell;
|
import xyz.soper.arty.item.Shell;
|
||||||
@ -33,41 +35,69 @@ public class MortarInteract implements Listener {
|
|||||||
if(Shell.isShell(item)){
|
if(Shell.isShell(item)){
|
||||||
player.sendMessage("DEBUG: Player has a shell in hand.");
|
player.sendMessage("DEBUG: Player has a shell in hand.");
|
||||||
MortarHandler.fireShell(new Mortar(block), new Shell(item), player);
|
MortarHandler.fireShell(new Mortar(block), new Shell(item), player);
|
||||||
if(item.getAmount() > 1) item.setAmount(item.getAmount()-1);
|
if(player.getGameMode() != GameMode.CREATIVE){
|
||||||
else player.getInventory().setItemInMainHand(null);
|
if(item.getAmount() > 1) item.setAmount(item.getAmount()-1);
|
||||||
|
else player.getInventory().setItemInMainHand(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(MortarTuner.isTuner(item)){
|
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.");
|
player.sendMessage("DEBUG: Player has a tuner in hand.");
|
||||||
if(player.isSneaking()){
|
if(player.isSneaking()){
|
||||||
if(event.getAction() == Action.RIGHT_CLICK_BLOCK){
|
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.updateInventory();
|
||||||
player.sendMessage(ChatColor.GOLD + "Linked Tuner with to Mortar at "
|
}
|
||||||
+ block.getLocation().getBlockX() + ", "
|
else if(event.getAction() == Action.RIGHT_CLICK_AIR
|
||||||
+ block.getLocation().getBlockY() + ", "
|
|| event.getAction() == Action.LEFT_CLICK_AIR){
|
||||||
+ block.getLocation().getBlockZ());
|
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{
|
else{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onShellLand(ProjectileHitEvent event){
|
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())){
|
if(Shell.isShell(event.getEntity())){
|
||||||
Shell shell = new Shell(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){
|
if(event.getHitBlock() != null){
|
||||||
/*DEBUG*/System.out.println("Projectile hit a block, exploding shell in front of block.");
|
|
||||||
shell.explodeShell(
|
shell.explodeShell(
|
||||||
event.getHitBlock()
|
event.getHitBlock()
|
||||||
.getLocation()
|
.getLocation()
|
||||||
@ -79,12 +109,9 @@ public class MortarInteract implements Listener {
|
|||||||
event.getEntity().remove();
|
event.getEntity().remove();
|
||||||
}
|
}
|
||||||
else if(event.getHitEntity() != null){
|
else if(event.getHitEntity() != null){
|
||||||
/*DEBUG*/System.out.println("Projectile hit an entity, exploding shell on entity.");
|
|
||||||
shell.explodeShell(event.getHitEntity().getLocation());
|
shell.explodeShell(event.getHitEntity().getLocation());
|
||||||
event.getEntity().remove();
|
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
Block a user