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): EnhancedTraceResult | null

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​

EnhancedTraceResult | null

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): EnhancedTraceResult | null

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

Parameters​

entity​

number | Entity

target​

Entity | number[]

options​

TraceOptions = {}

Returns​

EnhancedTraceResult | null

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): EnhancedTraceResult | null

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

Parameters​

origin​

number[]

distance​

number = 4096

Returns​

EnhancedTraceResult | null

sphere()​

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

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

Parameters​

start​

number[]

end​

number[]

radius​

number

options​

TraceOptions = {}

Returns​

EnhancedTraceResult | null

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): EnhancedTraceResult | null

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

Parameters​

entity​

Entity

ignore​

Entity | null

Returns​

EnhancedTraceResult | null

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): EnhancedTraceResult | null

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

Parameters​

result​

TraceResult | null

start​

number[] | null

end​

number[] | null

Returns​

EnhancedTraceResult | null

multiLine()​

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

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

Parameters​

traces​

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

Returns​

(EnhancedTraceResult | null)[]

findClosestSurface()​

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

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

Parameters​

origin​

number[]

direction​

number[]

maxDistance​

number = 4096

Returns​

EnhancedTraceResult | null

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