@Test public void testCartesianToEuler() { Vector3d cartesian = new Vector3d(1.0, 0.0, 0.0); Vector3d euler = LocationUtil.cartesianToEuler(cartesian); assertEquals(euler, new Vector3d(-0.0, 270.0, 0.0)); cartesian = new Vector3d(1.0, 0.0, 1.0); euler = LocationUtil.cartesianToEuler(cartesian); assertEquals(euler, new Vector3d(-0.0, 315.0, 0.0)); cartesian = new Vector3d(1.0, 0.0, -1.0); euler = LocationUtil.cartesianToEuler(cartesian); assertEquals(euler, new Vector3d(-0.0, 225.0, 0.0)); cartesian = new Vector3d(1.0, -1.0, 0.0); euler = LocationUtil.cartesianToEuler(cartesian); assertEquals(euler, new Vector3d(45.0, 270.0, 0.0)); } }
private void addChair(Player player, Location<World> location) { Entity entity = location.getExtent().createEntity(EntityTypes.ARMOR_STAND, location.getBlockPosition().toDouble().sub(-0.5, 1.2, -0.5)); entity.offer(Keys.INVISIBLE, true); entity.offer(Keys.HAS_GRAVITY, false); if (faceCorrectDirection.getValue() && location.supports(Keys.DIRECTION)) { Vector3d euler = LocationUtil.cartesianToEuler(location.get(Keys.DIRECTION).orElse(Direction.NONE).getOpposite().asOffset()); entity.setRotation(euler); player.setRotation(euler); } Sponge.getCauseStackManager().pushCause(player); location.getExtent().spawnEntity(entity); Sponge.getCauseStackManager().popCause(); Chair<?> chair = new Chair<>((ArmorStand) entity, location, player.getLocation()); entity.addPassenger(player); player.sendMessage(Text.of(TextColors.YELLOW, "You sit down!")); chairs.put(player.getUniqueId(), chair); }