implemented new setElevation and setDirection methods
parent
2b2a1b878e
commit
a3c7044620
|
@ -73,25 +73,15 @@ public class MortarInteract implements Listener {
|
|||
if(Mortar.isMortar(linkedLocation.getBlock())){
|
||||
Block linkedMortar = linkedLocation.getBlock();
|
||||
Vector playerDirection = player.getLocation().getDirection();
|
||||
/*TODO: convert to angles and get unit vector from angles
|
||||
*right now, this does not properly get a direction vector
|
||||
it is NOT a unit vector.*/
|
||||
if(event.getAction() == Action.LEFT_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());
|
||||
|
||||
player.sendMessage("DEBUG: Angle is " + (180*horizonVector.angle(new Vector(1,0,0))/Math.PI));
|
||||
//Using new methods to test:
|
||||
player.sendMessage("DEBUG: Angle with new basic trig method is " + ArtyMath.calculateDirectionBASICTRIG(playerDirection));
|
||||
|
||||
player.sendMessage("DEBUG: Angle with new dot product method is " + ArtyMath.calculateDirectionDOTPRODUCT(playerDirection));
|
||||
double angle = ArtyMath.calculateDirection(playerDirection);
|
||||
Mortar.setDirectionAngle(linkedMortar, angle);
|
||||
player.sendMessage("DEBUG: Angle is " + (180*angle/Math.PI));
|
||||
}
|
||||
else if(event.getAction() == Action.RIGHT_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());
|
||||
player.sendMessage("DEBUG: Angle is " + (180*verticalVector.angle(new Vector(1,0,0))/Math.PI));
|
||||
double angle = ArtyMath.calculateElevation(playerDirection);
|
||||
Mortar.setElevationAngle(linkedMortar, angle);
|
||||
player.sendMessage("DEBUG: Angle is " + (180*angle/Math.PI));
|
||||
}
|
||||
}
|
||||
else player.sendMessage(ChatColor.GOLD + "Linked position has no mortar.");
|
||||
|
|
|
@ -219,15 +219,27 @@ public class Mortar {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param angle
|
||||
* Adjust a block's elevation angle metadata.
|
||||
* @param block Block that represents a mortar.
|
||||
* @param angle Elevation angle in radians.
|
||||
*/
|
||||
public static void setElevationAngle(double angle){
|
||||
//TODO: setElevationAngle method
|
||||
public static void setElevationAngle(Block block, double angle){
|
||||
if(isMortar(block)){
|
||||
block.setMetadata("elevation_angle", new FixedMetadataValue(Artillery.getPlugin(Artillery.class), angle));
|
||||
}
|
||||
else throw new IllegalArgumentException("Cannot set non-mortar block's elevation MetaData");
|
||||
}
|
||||
|
||||
public static void setDirectionAngle(double angle){
|
||||
//TODO: setDirectionAngle method
|
||||
/**
|
||||
* Adjust a block's directional angle metadata.
|
||||
* @param block Blocks that represents a mortar.
|
||||
* @param angle Directional angle from the east in radians, corresponding to the Minecraft coordinate system.
|
||||
*/
|
||||
public static void setDirectionAngle(Block block, double angle){
|
||||
if(isMortar(block)){
|
||||
block.setMetadata("direction_angle", new FixedMetadataValue(Artillery.getPlugin(Artillery.class), angle));
|
||||
}
|
||||
else throw new IllegalArgumentException("Cannot set non-mortar block's directional MetaData");
|
||||
}
|
||||
|
||||
private static boolean isStringMortar(String string){
|
||||
|
|
Loading…
Reference in New Issue