Client Queries
Query a player’s client-side settings asynchronously. Results arrive in a callback.
Queries are read-only. Changing client settings from the server is not supported.
Usage Pattern
All query methods take a Consumer<CompoundTag> callback:
var Consumer = Java.type("java.util.function.Consumer")
var bridge = cnpcext.getClientBridge(player.getMCEntity())
bridge.queryVideoSettings(Java.extend(Consumer, {
accept: function(tag) {
player.message("Your FOV: " + tag.getInt("fov"))
}
}))
Available Queries
queryVideoSettings(callback)
| Key | Type | Description |
|---|---|---|
fov |
int | Field of view (70–110) |
renderDistance |
int | Render distance (2–32) |
guiScale |
int | GUI scale (0 = auto, 1–4) |
graphicsMode |
String | FAST, FANCY, or FABULOUS |
maxFps |
int | Frame rate limit (10–260) |
fullscreen |
boolean | Fullscreen mode |
vsync |
boolean | VSync enabled |
queryKeybinds(callback)
| Key Pattern | Type | Description |
|---|---|---|
key.<binding> |
String | Bound key name (e.g. key.mouse.left) |
down.<binding> |
boolean | Whether the key is currently held |
Example bindings: key.attack, key.use, key.forward, key.jump, key.inventory
querySoundSettings(callback)
| Key | Type | Description |
|---|---|---|
master |
double | Master volume (0.0–1.0) |
music |
double | Music volume |
weather |
double | Weather volume |
blocks |
double | Blocks volume |
hostile |
double | Hostile creatures volume |
neutral |
double | Friendly creatures volume |
players |
double | Players volume |
ambient |
double | Ambient volume |
voice |
double | Voice/speech volume |
queryPlayerState(callback)
| Key | Type | Description |
|---|---|---|
xRot |
float | Camera pitch |
yRot |
float | Camera yaw |
x, y, z |
double | Player position |
screenWidth |
int | GUI-scaled screen width |
screenHeight |
int | GUI-scaled screen height |
currentScreen |
String | Current open screen class name, or "none" |
queryResourcePacks(callback)
| Key | Type | Description |
|---|---|---|
packCount |
int | Number of active resource packs |
pack.0, pack.1, … |
String | Pack IDs |
Full Example
function interact(e) {
var Consumer = Java.type("java.util.function.Consumer")
var bridge = cnpcext.getClientBridge(e.player.getMCEntity())
bridge.queryVideoSettings(Java.extend(Consumer, {
accept: function(tag) {
e.player.message("§eYour Settings:")
e.player.message("§7 FOV: §f" + tag.getInt("fov"))
e.player.message("§7 Render Distance: §f" + tag.getInt("renderDistance"))
e.player.message("§7 Graphics: §f" + tag.getString("graphicsMode"))
e.player.message("§7 GUI Scale: §f" + tag.getInt("guiScale"))
}
}))
}
Queries are asynchronous — the callback fires when the client responds. Don't rely on the result being available immediately after calling the query method.