-
Notifications
You must be signed in to change notification settings - Fork 0
5. Vec3i
zawarka03 edited this page Jul 28, 2026
·
1 revision
Monolith API introduces Vec3i, a robust class for representing integer-based 3D coordinates within a specific world. It serves as a more precise and feature-rich alternative to Bukkit's Location for block-level operations.
Vec3i instances can be created directly or converted from Bukkit Location or Block objects.
// Kotlin Example
import io.github.zawarka03.monolithAPI.vec3i.Vec3i
import io.github.zawarka03.monolithAPI.vec3i.utils.toVec3i
import org.bukkit.Bukkit
import org.bukkit.Location
val world = Bukkit.getWorld("world")!!
// Direct instantiation
val vec1 = Vec3i(10, 64, -20, world)
// Conversion from Location
val loc = Location(world, 15.5, 65.0, -18.2)
val vec2 = loc.toVec3i() // Truncates to integer coordinates
// Conversion to Location
val newLoc = vec1.toLocation()
// Conversion to Block
val block = vec1.toBlock()Vec3i provides optimized methods for distance calculations and entity proximity checks, which are essential for creating interactive blocks like sensors or area-of-effect machines.
// Java Example
import io.github.zawarka03.monolithAPI.vec3i.Vec3i;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.util.List;
Vec3i sensorPos = new Vec3i(0, 70, 0, world);
Location targetLoc = new Location(world, 5, 70, 5);
// Distance calculation
double distance = sensorPos.distance(targetLoc);
double distanceSq = sensorPos.distanceSquared(targetLoc); // More performant for comparisons
// Radius check
boolean isWithinRange = sensorPos.isInRadius(targetLoc, 10.0);
// Entity proximity
List<Player> nearbyPlayers = sensorPos.getNearbyPlayers(15.0);
for (Player p : nearbyPlayers) {
p.sendMessage("You are near a sensor!");
}