LookAtMySuitBot/js/node_modules/prismarine-block/test/basic.test.js

180 lines
8.4 KiB
JavaScript

/* eslint-env mocha */
const expect = require('expect').default
// https://minecraft.gamepedia.com/Breaking#Blocks_by_hardness
describe('Dig time', () => {
describe('1.15.2', () => {
const registry = require('prismarine-registry')('1.15.2')
const Block = require('prismarine-block')(registry)
it('dirt by hand', () => {
const block = Block.fromStateId(registry.blocksByName.dirt.defaultState, 0)
const time = block.digTime(null, false, false, false)
expect(time).toBe(750)
})
})
describe('bedrock 1.17.10', () => {
const registry = require('prismarine-registry')('bedrock_1.17.10')
const Block = require('prismarine-block')(registry)
it('dirt by hand', () => {
const block = Block.fromStateId(registry.blocksByName.dirt.defaultState, 0)
const time = block.digTime(null, false, false, false)
require('assert').ok(time)
})
})
for (const version of ['1.17', 'bedrock_1.17.10', 'bedrock_1.18.0', '1.20']) {
describe(version, () => {
const registry = require('prismarine-registry')(version)
const Block = require('prismarine-block')(registry)
it('instant break stone', () => {
const block = Block.fromStateId(registry.blocksByName.stone.defaultState, 0)
const time = block.digTime(
registry.itemsByName.diamond_pickaxe.id,
false,
false,
false,
[{ name: registry.enchantmentsByName.efficiency.name, lvl: 5 }],
{
[registry.effectsByName.Haste.id]: {
amplifier: 1,
duration: 60
}
}
)
expect(time).toBe(0)
})
it('instant break bedrock (creative)', () => {
const block = Block.fromStateId(registry.blocksByName.bedrock.defaultState, 0)
const time = block.digTime(null, true, false, false, [], {})
expect(time).toBe(0)
})
describe('digging', () => {
for (const blockName of ['sand', 'dirt', 'soul_sand']) {
describe(`digging ${blockName}`, () => {
it('using iron_shovel', () => {
const tool = registry.itemsByName.iron_shovel
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [], {})
expect(time).toBe(150)
})
it('using iron_shovel with efficiency 2', () => {
const tool = registry.itemsByName.iron_shovel
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 2 }], {})
expect(time).toBe(100)
})
it('using iron_shovel with efficiency 5 (instant break)', () => {
const tool = registry.itemsByName.iron_shovel
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 5 }], {})
expect(time).toBe(0)
})
it('using iron_shovel with haste 2', () => {
const tool = registry.itemsByName.iron_shovel
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [], { [registry.effectsByName.Haste.id]: { amplifier: 1, lvl: 1 } })
expect(time).toBe(100)
})
it('using iron_shovel with eff 2 + haste 2 (instant break)', () => {
const tool = registry.itemsByName.iron_shovel
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 2 }], { [registry.effectsByName.Haste.id]: { amplifier: 1, lvl: 1 } })
expect(time).toBe(0)
})
})
}
})
describe('mining', () => {
describe('mining stone', () => {
const blockName = 'stone'
const toolName = 'iron_pickaxe'
it('using iron_shovel', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [], {})
expect(time).toBe(400)
})
it('using iron_shovel with efficiency 2', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 2 }], {})
expect(time).toBe(250)
})
it('using iron_shovel with efficiency 5 (instant break)', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 5 }], {})
expect(time).toBe(100)
})
it('using iron_shovel with haste 2', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [], { [registry.effectsByName.Haste.id]: { amplifier: 1, lvl: 1 } })
expect(time).toBe(300)
})
it('using iron_shovel with eff 2 + haste 2 (instant break)', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 2 }], { [registry.effectsByName.Haste.id]: { amplifier: 1, lvl: 1 } })
expect(time).toBe(150)
})
})
describe('mining iron_ore', () => {
const blockName = 'iron_ore'
const toolName = 'iron_pickaxe'
it('using iron_shovel', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
console.log('Block', block)
const time = block.digTime(tool.id, false, false, false, [], {})
expect(time).toBe(750)
})
it('using iron_shovel with efficiency 2', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 2 }], {})
expect(time).toBe(450)
})
it('using iron_shovel with efficiency 5 (instant break)', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 5 }], {})
expect(time).toBe(150)
})
it('using iron_shovel with haste 2', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [], { [registry.effectsByName.Haste.id]: { amplifier: 1, lvl: 1 } })
expect(time).toBe(550)
})
it('using iron_shovel with eff 2 + haste 2 (instant break)', () => {
const tool = registry.itemsByName[toolName]
const block = Block.fromStateId(registry.blocksByName[blockName].defaultState)
const time = block.digTime(tool.id, false, false, false, [{ name: 'efficiency', lvl: 2 }], { [registry.effectsByName.Haste.id]: { amplifier: 1, lvl: 1 } })
expect(time).toBe(300)
})
})
})
})
}
})
describe('fromString', () => {
const versions = {
1.18: 'minecraft:candle[lit=true]',
'pe_1.18.0': 'minecraft:candle["lit":true]',
'1.20': 'minecraft:candle[lit=true]'
}
for (const [version, str] of Object.entries(versions)) {
const Block = require('prismarine-block')(version)
const block = Block.fromString(str, 0)
console.log(block)
expect(block.getProperties().lit).toBeTruthy()
}
})