CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PrismarineJS

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: PrismarineJS/mineflayer
Path: blob/master/test/externalTests/elytra.js
Views: 789
1
const assert = require('assert')
2
3
module.exports = () => async (bot) => {
4
// don't continue unless this version supports elytra
5
if (!bot.supportFeature('hasElytraFlying')) return
6
const supportsFireworkRockets = bot.supportFeature('fireworkNamePlural') || bot.supportFeature('fireworkNameSingular')
7
8
const Item = require('prismarine-item')(bot.registry)
9
10
await bot.test.setInventorySlot(6, new Item(bot.registry.itemsByName.elytra.id, 1))
11
if (supportsFireworkRockets) {
12
const fireworkItem = bot.registry.itemsArray.find(item => item.displayName === 'Firework Rocket')
13
assert.ok(fireworkItem !== undefined)
14
await bot.test.setInventorySlot(36, new Item(fireworkItem.id, 64))
15
}
16
await bot.test.teleport(bot.entity.position.offset(0, 100, 0))
17
await bot.test.becomeSurvival()
18
await bot.creative.stopFlying()
19
20
await bot.look(bot.entity.yaw, 0)
21
await bot.waitForTicks(5)
22
await assert.doesNotReject(bot.elytraFly())
23
await bot.waitForTicks(20) // wait for server to accept
24
assert.ok(bot.entity.elytraFlying)
25
26
if (!supportsFireworkRockets) return
27
28
// use rocket
29
await bot.look(bot.entity.yaw, 30 * Math.PI / 180)
30
const activationTicks = 20
31
for (let i = 0; i < 20; i++) {
32
bot.activateItem()
33
assert.ok(bot.entity.elytraFlying)
34
await bot.waitForTicks(1)
35
}
36
await bot.waitForTicks(3)
37
let lateActivations = 0
38
assert.ok(bot.fireworkRocketDuration > 0)
39
for (let i = bot.fireworkRocketDuration; i > 0; --i) {
40
await bot.waitForTicks(1)
41
assert.ok(bot.entity.elytraFlying)
42
if (bot.fireworkRocketDuration > i) {
43
i = bot.fireworkRocketDuration
44
++lateActivations
45
}
46
assert.ok(lateActivations <= activationTicks)
47
}
48
assert.ok(bot.fireworkRocketDuration === 0)
49
}
50
51