Skip to content

Player API

js
import { Player } from 'yeow-api';

Type relationship: Player extends LivingEntity extends Entity — Entity common capabilities (velocity (setVelocity), fireTicks, getBoundingBox, getPassengers, teleport etc.) and living capabilities (health, maxHealth, damage, setTarget etc.) are directly available on Player, see Entity API for details. Player-specific health/world/location/teleport etc. override base class same-name members (go through player-side tasks).

Static Methods

Default is async (Promise), synchronous version adds Sync suffix.

MethodReturnDescription
Player.get(identifier)Promise<Player | null>UUID or name, returns null if offline
Player.getSync(identifier)Player | nullSynchronous version
Player.getAll()Promise<Player[]>All online players
Player.getAllSync()Player[]Synchronous version

Properties

PropertyTypeRead/WriteDescription
uuidstringRead-onlyUUID
namestringRead-onlyPlayer name
pingnumberRead-onlyLatency (ms)
worldstringRead-onlyCurrent world name
locationLocation | nullRead-onlyCurrent location
displayNamestringRead/WriteDisplay name
saturationnumberRead-onlySaturation 0.0-?
totalExperiencenumberRead-onlyTotal experience
gamemodestringRead/WriteSURVIVAL / CREATIVE / ADVENTURE / SPECTATOR
healthnumberRead/WriteHealth (half hearts)
foodLevelnumberRead/WriteFood level 0-20
expnumberRead/WriteLevel progress 0.0-1.0
levelnumberRead/WriteExperience level

Game mode values (gamemode) see Value Domain Appendix · Directly Maintained Enumeration List.

| allowFlight | boolean | Read/Write | Allow flight | | isFlying | boolean | Read/Write | Currently flying | | isSneaking | boolean | Read-only | Currently sneaking | | isSprinting | boolean | Read-only | Currently sprinting | | bedLocation | Location \| null | Read-only | Bed respawn point | | walkSpeed | number | Read/Write | Walk speed 0-1 | | flySpeed | number | Read/Write | Fly speed 0-1 | | isOp | boolean | Read-only | Is OP | | online | boolean | Read-only | Is online |

Methods

Default is async (Promise), synchronous version adds Sync suffix.

Messages

js
player.sendMessage(msg)             // Promise — msg is plain text or Message object (translatable component)
player.sendMessageSync(msg)
player.kick(reason?)                 // Promise
player.kickSync(reason?)

msg accepts Message object or plain string:

js
await p.sendMessage('Welcome back!');                                   // Plain text (MiniMessage)
await p.sendMessage({ text: '<red>You died!</red>' });                // Plain text (equivalent)
await p.sendMessage({ key: 'death.attack.player', args: ['Steve'] }); // Translatable component (client localization)

Title & Sound

js
player.sendTitle(title?, subtitle?, fadeIn?, stay?, fadeOut?)   // Promise
player.sendTitleSync(...)
player.playSound(sound, volume?, pitch?)                        // Promise
player.playSoundSync(...)
js
// World-level sound see World API
import { playSound } from 'yeow-api';
await playSound('world', 'entity.creeper.primed', 0, 65, 0, 1.0, 1.0);
js
// Stop sound (Player instance method, symmetric with playSound)
await p.stopSound('block.note_block.pling');
await p.stopSoundSync('block.note_block.pling');
await p.stopAllSounds();
await p.stopAllSoundsSync();

Advancement (Achievement)

js
player.grantAdvancement(key)                  // Promise<boolean> — Grant all advancement criteria
player.grantAdvancementSync(key)
player.revokeAdvancement(key)                 // Promise<boolean> — Revoke advancement
player.awardCriteria(key, criteria)           // Promise<boolean> — Grant single criterion
player.awardCriteriaSync(key, criteria)
player.revokeCriteria(key, criteria)          // Promise<boolean> — Revoke single criterion
player.getAdvancementProgress(key)            // Promise<AdvancementProgress | null>
player.getAdvancementProgressSync(key)

key is advancement namespace key (e.g., minecraft:story/mine_stone). See Advancement for details.

Experience

js
player.giveExp(amount)              // Promise
player.giveExpSync(amount)

Permissions, Commands & Teleport

js
player.hasPermission(node)          // Promise<boolean> — Via Yeow permission check (permissionCheck event priority, falls back to Paper system if no handler)
player.hasPermissionSync(node)      // boolean
player.performCommand(cmd)          // Promise<boolean> — Execute command as player (without / prefix, e.g., 'say hi')
player.performCommandSync(cmd)      // boolean
player.teleport(loc)                // Promise
player.teleportSync(loc)

Fake Block (Client Visual)

js
player.sendBlockChange(loc, block)      // Promise — Client visual only, doesn't change real world
player.sendBlockChangeSync(loc, block)

block is Block object or string (same as world.setBlock, string has no state):

js
await p.sendBlockChange(new Location(0, 80, 0), 'minecraft:stone');
await p.sendBlockChange(new Location(0, 80, 1), Block.of('minecraft:chest', { facing: 'north' }));

Held Items

js
player.getItemInMainHand()          // Promise<ItemStack | null>
player.getItemInMainHandSync()      // ItemStack | null
player.getItemInOffHand()           // Promise<ItemStack | null>
player.getItemInOffHandSync()       // ItemStack | null

player.setItemInMainHand(item)      // Promise — Set main hand (complete ItemStack including meta; null clears)
player.setItemInMainHandSync(item)
player.setItemInOffHand(item)       // Promise — Set off hand (same as above)
player.setItemInOffHandSync(item)

Returns complete ItemStack (including meta), returns null when hand is empty. ItemStack is pure data (snapshot), see ItemStack for details.

Tab List

js
player.sendTabHeader(header, footer)    // Promise — Tab list header/footer (MiniMessage; null clears corresponding field)
player.sendTabHeaderSync(header, footer)
player.setPlayerListName(name)          // Promise — Tab list display name (null restores default)
player.setPlayerListNameSync(name)

ActionBar & Resource Pack

js
player.sendActionBar(message)       // Promise — message is plain text or Message object
player.sendActionBarSync(message)
player.sendResourcePack(url, hash?, prompt?, force?)  // Promise — prompt is plain text or Message object

Async Property Access

The following properties provide both synchronous getter (property access) and async methods:

Sync GetterAsync MethodReturn
player.pingplayer.getPing()Promise<number>
player.gamemodeplayer.getGamemode()Promise<string>
player.healthplayer.getHealth()Promise<number>
player.foodplayer.getFood()Promise<number>
player.expplayer.getExp()Promise<number>
player.levelplayer.getLevel()Promise<number>
player.worldplayer.getWorld()Promise<string>
player.locationplayer.getLocation()Promise<Location | null>
player.displayNameplayer.getDisplayName()Promise<string>
player.saturationplayer.getSaturation()Promise<number>
player.totalExperienceplayer.getTotalExperience()Promise<number>
player.isOpplayer.isOpAsync()Promise<boolean>
player.onlineplayer.isOnlineAsync()Promise<boolean>
player.isFlyingplayer.isFlyingAsync()Promise<boolean>
player.allowFlightplayer.getAllowFlight()Promise<boolean>
player.isSneakingplayer.isSneakingAsync()Promise<boolean>
player.isSprintingplayer.isSprintingAsync()Promise<boolean>
player.bedLocationplayer.getBedLocation()Promise<Location | null>
player.walkSpeedplayer.getWalkSpeed()Promise<number>
player.flySpeedplayer.getFlySpeed()Promise<number>

Async setter:

js
player.setGamemode(mode)            // Promise
player.setHealth(value)             // Promise
player.setFood(value)               // Promise
player.setExp(value)                // Promise
player.setLevel(value)              // Promise
player.setDisplayName(name)         // Promise
player.setFlying(flag)              // Promise
player.setAllowFlight(flag)         // Promise
player.setWalkSpeed(speed)          // Promise
player.setFlySpeed(speed)           // Promise

Example

js
const p = await Player.get('Notch');
if (p) {
    p.gamemode = 'CREATIVE';
    p.health = 20;
    p.foodLevel = 20;
    p.exp = 0.5;
    p.level = 30;
    p.allowFlight = true;
    p.isFlying = true;
    await p.sendMessage('<green>Welcome!</green>');
    await p.sendTitle('Hello', 'Welcome to the server');
    await p.playSound('entity.experience_orb.pickup');
    await p.teleport(new Location(0, 80, 0));
}