earthmc
Version:
An unofficial EarthMC library providing handy methods and extensive info.
77 lines (62 loc) • 1.75 kB
text/typescript
import type { Prettify } from "./util.js"
const createRoute = (
avoidPvp: boolean,
avoidPrivate: boolean
) => ({ avoidPvp, avoidPrivate }) as const
export const Routes = {
SAFEST: createRoute(true, true),
FASTEST: createRoute(false, false),
AVOID_PRIVATE: createRoute(false, true),
AVOID_PVP: createRoute(true, false)
} as const
export type RouteType = typeof Routes
export type RouteKey = keyof RouteType
export type Route = RouteType[RouteKey]
export type Location = Prettify<Point2D & {
y?: number | string
}>
export type SquaremapLocation = Prettify<Point2D & {
y?: number | string
yaw?: number | string
}>
export type Point2D = {
x: number | string
z: number | string
}
export type StrictPoint2D = {
x: number
z: number
}
//#region Direction
export type CardinalDirectionShort = "N" | "E" | "W" | "S" | "NE" | "NW" | "SE" | "SW"
// Order of arrays matter, do not change.
export const BASE_DIRECTIONS = [
'North', 'East', 'South', 'West'
] as const
export const DIRECTIONS = [
'North', 'North-East', 'East', 'South-East',
'South', 'South-West', 'West', 'North-West'
] as const
export type BaseCardinalDirection = typeof BASE_DIRECTIONS[number]
export type CardinalDirection = typeof DIRECTIONS[number]
//#endregion
export type TravelTimes = {
sneaking: number
walking: number
sprinting: number
boat: number
}
export type RouteInfoNation = {
name: string
capital: {
name: string
x: number
z: number
}
}
export type RouteInfo = {
distance: number
direction: CardinalDirection
travelTimes: TravelTimes
nation?: RouteInfoNation
}