Source code for miney.node

from miney import Point
from typing import Union, TYPE_CHECKING
from math import floor
from .inventory import Inventory
from .point import Point
if TYPE_CHECKING:
    from .luanti import Luanti


[docs] class Node(Point): def __init__(self, x: Union[int, float] = 0, y: Union[int, float] = 0, z: Union[int, float] = 0, name: str = "default:dirt", param1: int = None, param2: int = None, luanti: 'Luanti' = None): super().__init__(floor(x), floor(y), floor(z)) self.name = name self.param1 = param1 self.param2 = param2 self._luanti = luanti self._inventory = None @property def inventory(self) -> Inventory: """ Get the inventory of this node, if it has one. >>> chest_inventory = lt.nodes.get(Point(0, 0, 0)).inventory.add(lt.tool.default.dirt, 100) :return: The inventory object for this node. :raises: AttributeError if the node is not bound to a Luanti instance. """ if self._luanti is None: raise AttributeError("Node is not bound to a Luanti instance and cannot access inventory.") if self._inventory is None: self._inventory = Inventory(self._luanti, self) return self._inventory @property def position(self) -> Point: """ Returns the position of the node as a Point object. Since a Node is a subclass of Point, it returns itself. :return: A Point object representing the node's coordinates. """ return self def __repr__(self): return f"<Luanti Node(x={self.x}, y={self.y}, z={self.z}, name={self.name})>"