From 847314d50fd69655cf45f5b14a45490c19fcf732 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 15 Mar 2025 02:18:51 +0300 Subject: [PATCH] hide hand in spectator --- renderer/viewer/lib/basePlayerState.ts | 1 + renderer/viewer/lib/worldrendererThree.ts | 2 +- src/mineflayer/playerState.ts | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/renderer/viewer/lib/basePlayerState.ts b/renderer/viewer/lib/basePlayerState.ts index 1bbb690f..e69d4556 100644 --- a/renderer/viewer/lib/basePlayerState.ts +++ b/renderer/viewer/lib/basePlayerState.ts @@ -24,6 +24,7 @@ export interface IPlayerState { getItemUsageTicks?(): number // isUsingItem?(): boolean getHeldItem?(isLeftHand: boolean): HandItemBlock | undefined + gameMode?: string username?: string onlineMode?: boolean diff --git a/renderer/viewer/lib/worldrendererThree.ts b/renderer/viewer/lib/worldrendererThree.ts index 697717c9..9d241171 100644 --- a/renderer/viewer/lib/worldrendererThree.ts +++ b/renderer/viewer/lib/worldrendererThree.ts @@ -241,7 +241,7 @@ export class WorldRendererThree extends WorldRendererCommon { // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style const cam = this.camera instanceof THREE.Group ? this.camera.children.find(child => child instanceof THREE.PerspectiveCamera) as THREE.PerspectiveCamera : this.camera this.renderer.render(this.scene, cam) - if (this.config.showHand && !this.freeFlyMode) { + if (this.config.showHand && !this.freeFlyMode && this.playerState.gameMode !== 'spectator') { this.holdingBlock.render(this.camera, this.renderer, viewer.ambientLight, viewer.directionalLight) this.holdingBlockLeft.render(this.camera, this.renderer, viewer.ambientLight, viewer.directionalLight) } diff --git a/src/mineflayer/playerState.ts b/src/mineflayer/playerState.ts index 260f8e53..a44ee5ec 100644 --- a/src/mineflayer/playerState.ts +++ b/src/mineflayer/playerState.ts @@ -29,6 +29,10 @@ export class PlayerStateManager implements IPlayerState { return bot.player?.username ?? '' } + get gameMode () { + return bot.game?.gameMode + } + reactive = proxy({ playerSkin: undefined as string | undefined, })