MCPcopy
hub / github.com/PrismarineJS/mineflayer / parseBedMetadata

Function parseBedMetadata

lib/plugins/bed.js:17–65  ·  view source on GitHub ↗
(bedBlock)

Source from the content-addressed store, hash-verified

15 }
16
17 function parseBedMetadata (bedBlock) {
18 const metadata = {
19 part: false, // true: head, false: foot
20 occupied: 0,
21 facing: 0, // 0: south, 1: west, 2: north, 3 east
22 headOffset: new Vec3(0, 0, 1)
23 }
24
25 if (bot.supportFeature('blockStateId')) {
26 const state = bedBlock.stateId - bot.registry.blocksByStateId[bedBlock.stateId].minStateId
27 const bitMetadata = state.toString(2).padStart(4, '0') // FACING (first 2 bits), PART (3rd bit), OCCUPIED (4th bit)
28 metadata.part = bitMetadata[3] === '0'
29 metadata.occupied = bitMetadata[2] === '0'
30
31 switch (bitMetadata.slice(0, 2)) {
32 case '00':
33 metadata.facing = 2
34 metadata.headOffset.set(0, 0, -1)
35 break
36 case '10':
37 metadata.facing = 1
38 metadata.headOffset.set(-1, 0, 0)
39 break
40 case '11':
41 metadata.facing = 3
42 metadata.headOffset.set(1, 0, 0)
43 }
44 } else if (bot.supportFeature('blockMetadata')) {
45 const bitMetadata = bedBlock.metadata.toString(2).padStart(4, '0') // PART (1st bit), OCCUPIED (2nd bit), FACING (last 2 bits)
46 metadata.part = bitMetadata[0] === '1'
47 metadata.occupied = bitMetadata[1] === '1'
48
49 switch (bitMetadata.slice(2, 4)) {
50 case '01':
51 metadata.facing = 1
52 metadata.headOffset.set(-1, 0, 0)
53 break
54 case '10':
55 metadata.facing = 2
56 metadata.headOffset.set(0, 0, -1)
57 break
58 case '11':
59 metadata.facing = 3
60 metadata.headOffset.set(1, 0, 0)
61 }
62 }
63
64 return metadata
65 }
66
67 async function wake () {
68 if (!bot.isSleeping) {

Callers 1

sleepFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…