Skip to main content

usePlayer

Access the current player who is viewing the UI.

Import​

import { usePlayer } from '@bedrock-core/ui';

Signature​

function usePlayer(): Player

Parameters​

None

Returns​

Player — The Minecraft player object from @minecraft/server who is currently viewing the UI.

Usage​

import { usePlayer } from '@bedrock-core/ui';

function PlayerInfo() {
const player = usePlayer();

return (
<Panel padding={10} gap={4}>
<Text>{`Name: ${player.name}`}</Text>
<Text>{`Health: ${player.getComponent('health')?.currentValue}`}</Text>
<Text>{`Level: ${player.level}`}</Text>
</Panel>
);
}

Examples​

Check Player permissions​

import { CommandPermissionLevel } from '@minecraft/server';

function AdminPanel() {
const player = usePlayer();
const isAdmin = player.commandPermissionLevel === CommandPermissionLevel.Admin;

if (!isAdmin) {
return (
<Panel padding={10}>
<Text>{'§cAccess Denied'}</Text>
</Panel>
);
}

return (
<Panel padding={10} gap={8}>
<Text>{'§lAdmin Panel'}</Text>
<Button>
<Text>{'Manage Players'}</Text>
</Button>
<Button>
<Text>{'Server Settings'}</Text>
</Button>
</Panel>
);
}

Notes​

Handle missing components​

// ✅ Good - check for null/undefined
function HealthDisplay() {
const player = usePlayer();
const health = player.getComponent('health');

if (!health) {
return (
<Panel padding={10}>
<Text>{'Health unavailable'}</Text>
</Panel>
);
}

return (
<Panel padding={10}>
<Text>{`Health: ${health.currentValue}/${health.effectiveMax}`}</Text>
</Panel>
);
}

Don't store Player in state​

// ❌ Bad - storing player in state
const [playerState, setPlayerState] = useState(usePlayer());

// ✅ Good - use player directly
const player = usePlayer();