Skip to main content

[NodeMod Core]

/ .. / default

Class: default

Defined in: src/enhanced/trace.ts:82

Advanced tracing and physics utilities for line-of-sight, collision detection, and spatial analysis. Provides enhanced trace operations with convenient result parsing and batch processing capabilities.

Example

// Basic line tracing
const trace = nodemodCore.trace.line([0, 0, 100], [100, 100, 100]);
if (trace?.didHit) {
console.log(`Hit something at distance\: ${trace.distance}`);
}

// Line of sight check
const canSee = nodemodCore.trace.canSee(player1, player2);
console.log(`Players can see each other\: ${canSee}`);

// Find ground below position
const ground = nodemodCore.trace.findGround([100, 100, 500]);
if (ground?.didHit) {
console.log(`Ground is at\: ${ground.hitPoint}`);
}

// Check point contents
const contents = nodemodCore.trace.pointContents([50, 50, 50]);
if (contents.isWater) {
console.log('Point is underwater');
}

Constructors

Constructor

new default(): NodemodTrace

Returns

NodemodTrace

Methods

line()

line(start, end, options): null | EnhancedTraceResult

Defined in: src/enhanced/trace.ts:109

Performs a line trace between two points with enhanced options and result parsing.

Parameters

start

number[]

Starting point [x, y, z]

end

number[]

Ending point [x, y, z]

options

TraceOptions = {}

Trace configuration options

Returns

null | EnhancedTraceResult

Enhanced trace result with additional computed properties

Example

// Basic line trace
const trace = nodemodCore.trace.line([0, 0, 0], [100, 0, 0]);

// Trace ignoring monsters
const trace2 = nodemodCore.trace.line([0, 0, 0], [100, 0, 0], {
flags\: nodemod.IGNORE.MONSTERS
});

// Hull-based trace
const trace3 = nodemodCore.trace.line([0, 0, 0], [100, 0, 0], {
hullSize\: nodemod.HULL.HUMAN,
ignore\: player
});

fromEntity()

fromEntity(entity, target, options): null | EnhancedTraceResult

Defined in: src/enhanced/trace.ts:130

Parameters

entity

number | Entity

target

Entity | number[]

options

TraceOptions = {}

Returns

null | EnhancedTraceResult

canSee()

canSee(entity1, entity2, options): boolean

Defined in: src/enhanced/trace.ts:174

Checks if one entity has line of sight to another entity. Automatically adjusts for entity view offset and target positioning.

Parameters

entity1

Source entity or entity index

number | Entity

entity2

Target entity or entity index

number | Entity

options

TraceOptions = {}

Trace configuration options

Returns

boolean

True if entity1 can see entity2, false otherwise

Example

// Check if player can see another player
const canSee = nodemodCore.trace.canSee(player1, player2);
if (canSee) {
console.log('Player 1 can see Player 2');
}

// Check line of sight ignoring other players
const canSeeIgnoringPlayers = nodemodCore.trace.canSee(sniper, target, {
flags\: nodemod.IGNORE.MONSTERS
});

findGround()

findGround(origin, distance): null | EnhancedTraceResult

Defined in: src/enhanced/trace.ts:182

Parameters

origin

number[]

distance

number = 4096

Returns

null | EnhancedTraceResult

sphere()

sphere(start, end, radius, options): null | EnhancedTraceResult

Defined in: src/enhanced/trace.ts:190

Parameters

start

number[]

end

number[]

radius

number

options

TraceOptions = {}

Returns

null | EnhancedTraceResult

monsterHull()

monsterHull(entity, start, end, options): TraceMonsterHullResult

Defined in: src/enhanced/trace.ts:205

Parameters

entity

Entity

start

number[]

end

number[]

options

TraceOptions = {}

Returns

TraceMonsterHullResult

texture()

texture(entity, start, end): string

Defined in: src/enhanced/trace.ts:218

Parameters

entity

Entity

start

number[]

end

number[]

Returns

string

projectile()

projectile(entity, ignore): null | EnhancedTraceResult

Defined in: src/enhanced/trace.ts:223

Parameters

entity

Entity

ignore

null | Entity

Returns

null | EnhancedTraceResult

pointContents()

pointContents(point): PointContentsResult

Defined in: src/enhanced/trace.ts:255

Analyzes the contents of a specific point in 3D space. Useful for checking if a position is in water, solid matter, or empty space.

Parameters

point

number[]

3D coordinates [x, y, z] to check

Returns

PointContentsResult

Detailed information about what exists at that point

Example

// Check if a position is safe for teleporting
const contents = nodemodCore.trace.pointContents([100, 200, 300]);
if (contents.isEmpty) {
console.log('Safe to teleport');
} else if (contents.isWater) {
console.log('Position is underwater');
} else if (contents.isSolid) {
console.log('Position is inside a wall');
}

// Check multiple points
const positions = [[0,0,0], [100,100,100], [200,200,200]];
positions.forEach((pos, i) => {
const result = nodemodCore.trace.pointContents(pos);
console.log(`Point ${i}\: ${result.isEmpty ? 'empty' \: 'occupied'}`);
});

enhanceTraceResult()

enhanceTraceResult(result, start, end): null | EnhancedTraceResult

Defined in: src/enhanced/trace.ts:270

Parameters

result

null | TraceResult

start

null | number[]

end

null | number[]

Returns

null | EnhancedTraceResult

multiLine()

multiLine(traces): (null | EnhancedTraceResult)[]

Defined in: src/enhanced/trace.ts:302

Parameters

traces

({ start: number[]; end: number[]; options?: TraceOptions; } | [number[], number[], TraceOptions?])[]

Returns

(null | EnhancedTraceResult)[]

findClosestSurface()

findClosestSurface(origin, direction, maxDistance): null | EnhancedTraceResult

Defined in: src/enhanced/trace.ts:312

Parameters

origin

number[]

direction

number[]

maxDistance

number = 4096

Returns

null | EnhancedTraceResult

traceCardinal()

traceCardinal(origin, distance): Record<string, EnhancedTraceResult | null>

Defined in: src/enhanced/trace.ts:324

Parameters

origin

number[]

distance

number = 512

Returns

Record<string, EnhancedTraceResult | null>

isAreaClear()

isAreaClear(center, size): boolean

Defined in: src/enhanced/trace.ts:370

Checks if a rectangular area is clear of obstacles by testing all corners. Useful for verifying if there's enough space to place objects or teleport players.

Parameters

center

number[]

Center point of the area [x, y, z]

size

number[] = ...

Dimensions of the area [width, length, height] (default: [64, 64, 64])

Returns

boolean

True if the entire area is clear, false if any part is blocked

Example

// Check if there's space for a player
const playerSize = [32, 32, 72]; // Typical player dimensions
const isClear = nodemodCore.trace.isAreaClear([100, 200, 300], playerSize);
if (isClear) {
console.log('Safe to spawn player here');
}

// Check default 64x64x64 area
const canPlaceItem = nodemodCore.trace.isAreaClear([50, 50, 50]);

normalizeVector()

normalizeVector(vector): number[]

Defined in: src/enhanced/trace.ts:390

Parameters

vector

number[]

Returns

number[]

vectorLength()

vectorLength(vector): number

Defined in: src/enhanced/trace.ts:396

Parameters

vector

number[]

Returns

number

vectorDistance()

vectorDistance(v1, v2): number

Defined in: src/enhanced/trace.ts:400

Parameters

v1

number[]

v2

number[]

Returns

number