package net.rustnotmc.api.client; /** * The client the mod is running in. * * This is the whole surface a client mod gets, and it is deliberately small: it * describes what the client shows, what the keyboard and mouse are doing, and * where to add commands. There is no path from here to a block, an item, a * player or a packet, because the server owns those and a client mod is not * allowed to decide them. * * A mod that needs something genuinely outside this boundary is expected to say * so, and reach for the reflective escape hatch deliberately, with the operator's * consent, rather than finding a back door. */ public interface ClientServices { /** The display state, never null. */ Screen screen(); /** Keyboard and mouse state, never null. */ Input input(); /** The mod command table, never null. */ Commands commands(); /** Ticks since the client started, driven by the game loop. */ long tick(); /** Frames drawn, which at a steady frame rate is a better clock than tick. */ long frame(); /** How fast the frames are going, never null. */ FrameStats frameStats(); }