[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
start
number
[]
end
number
[]
options
TraceOptions
= {}
Returns
texture()
texture(
entity
,start
,end
):string
Defined in: src/enhanced/trace.ts:218
Parameters
entity
start
number
[]
end
number
[]
Returns
string
projectile()
projectile(
entity
,ignore
):null
|EnhancedTraceResult
Defined in: src/enhanced/trace.ts:223
Parameters
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
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