feat(minecraft): borrow patch from mindcraft
This commit is contained in:
@@ -0,0 +1,286 @@
|
||||
# MIT License
|
||||
|
||||
# Copyright (c) 2024 Kolby Nottingham
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
diff --git a/index.js b/index.js
|
||||
index b38bd30..2ca8205 100644
|
||||
--- a/index.js
|
||||
+++ b/index.js
|
||||
@@ -14,6 +14,7 @@ const interactableBlocks = require('./lib/interactable.json')
|
||||
|
||||
function inject (bot) {
|
||||
const waterType = bot.registry.blocksByName.water.id
|
||||
+ const lavaType = bot.registry.blocksByName.lava.id
|
||||
const ladderId = bot.registry.blocksByName.ladder.id
|
||||
const vineId = bot.registry.blocksByName.vine.id
|
||||
let stateMovements = new Movements(bot)
|
||||
@@ -61,6 +62,10 @@ function inject (bot) {
|
||||
}
|
||||
|
||||
bot.pathfinder.getPathTo = (movements, goal, timeout) => {
|
||||
+ // Update lava avoidance based on current bot state
|
||||
+ if (movements.updateLavaAvoidance) {
|
||||
+ movements.updateLavaAvoidance()
|
||||
+ }
|
||||
const generator = bot.pathfinder.getPathFromTo(movements, bot.entity.position, goal, { timeout })
|
||||
const { value: { result, astarContext: context } } = generator.next()
|
||||
astarContext = context
|
||||
@@ -170,6 +175,16 @@ function inject (bot) {
|
||||
const curPoint = path[i]
|
||||
if (curPoint.toBreak.length > 0 || curPoint.toPlace.length > 0) break
|
||||
const b = bot.blockAt(new Vec3(curPoint.x, curPoint.y, curPoint.z))
|
||||
+
|
||||
+ // openned doors have small Collision box
|
||||
+ // that may stop the bot from moving forward
|
||||
+ if(i === 0 && b?.name.includes('door')) {
|
||||
+ curPoint.x = Math.floor(curPoint.x) + 0.5
|
||||
+ curPoint.y = Math.floor(curPoint.y)
|
||||
+ curPoint.z = Math.floor(curPoint.z) + 0.5
|
||||
+ continue
|
||||
+ }
|
||||
+
|
||||
if (b && (b.type === waterType || ((b.type === ladderId || b.type === vineId) && i + 1 < path.length && path[i + 1].y < curPoint.y))) {
|
||||
curPoint.x = Math.floor(curPoint.x) + 0.5
|
||||
curPoint.y = Math.floor(curPoint.y)
|
||||
@@ -524,6 +539,9 @@ function inject (bot) {
|
||||
bot.activateBlock(bot.blockAt(new Vec3(placingBlock.x, placingBlock.y, placingBlock.z))).then(() => {
|
||||
lockUseBlock.release()
|
||||
placingBlock = nextPoint.toPlace.shift()
|
||||
+ if (!placingBlock) {
|
||||
+ placing = false
|
||||
+ }
|
||||
}, err => {
|
||||
console.error(err)
|
||||
lockUseBlock.release()
|
||||
@@ -550,6 +568,7 @@ function inject (bot) {
|
||||
lockEquipItem.release()
|
||||
const refBlock = bot.blockAt(new Vec3(placingBlock.x, placingBlock.y, placingBlock.z), false)
|
||||
if (!lockPlaceBlock.tryAcquire()) return
|
||||
+ bot.world.setBlockStateId(refBlock.position.offset(placingBlock.dx, placingBlock.dy, placingBlock.dz), 1)
|
||||
if (interactableBlocks.includes(refBlock.name)) {
|
||||
bot.setControlState('sneak', true)
|
||||
}
|
||||
@@ -557,6 +576,7 @@ function inject (bot) {
|
||||
.then(function () {
|
||||
// Dont release Sneak if the block placement was not successful
|
||||
bot.setControlState('sneak', false)
|
||||
+ bot.setControlState('jump', false)
|
||||
if (bot.pathfinder.LOSWhenPlacingBlocks && placingBlock.returnPos) returningPos = placingBlock.returnPos.clone()
|
||||
})
|
||||
.catch(_ignoreError => {
|
||||
@@ -576,7 +596,7 @@ function inject (bot) {
|
||||
let dx = nextPoint.x - p.x
|
||||
const dy = nextPoint.y - p.y
|
||||
let dz = nextPoint.z - p.z
|
||||
- if (Math.abs(dx) <= 0.35 && Math.abs(dz) <= 0.35 && Math.abs(dy) < 1) {
|
||||
+ if (Math.abs(dx) <= 0.175 && Math.abs(dz) <= 0.175 && Math.abs(dy) < 1) {
|
||||
// arrived at next point
|
||||
lastNodeTime = performance.now()
|
||||
if (stopPathing) {
|
||||
@@ -611,6 +631,9 @@ function inject (bot) {
|
||||
if (bot.entity.isInWater) {
|
||||
bot.setControlState('jump', true)
|
||||
bot.setControlState('sprint', false)
|
||||
+ } else if (bot.entity.isInLava) {
|
||||
+ bot.setControlState('jump', true)
|
||||
+ bot.setControlState('sprint', false)
|
||||
} else if (stateMovements.allowSprinting && physics.canStraightLine(path, true)) {
|
||||
bot.setControlState('jump', false)
|
||||
bot.setControlState('sprint', true)
|
||||
diff --git a/lib/movements.js b/lib/movements.js
|
||||
index a7e3505..84a0841 100644
|
||||
--- a/lib/movements.js
|
||||
+++ b/lib/movements.js
|
||||
@@ -50,7 +50,12 @@ class Movements {
|
||||
this.blocksToAvoid.add(registry.blocksByName.fire.id)
|
||||
if (registry.blocksByName.cobweb) this.blocksToAvoid.add(registry.blocksByName.cobweb.id)
|
||||
if (registry.blocksByName.web) this.blocksToAvoid.add(registry.blocksByName.web.id)
|
||||
- this.blocksToAvoid.add(registry.blocksByName.lava.id)
|
||||
+
|
||||
+ // Only avoid lava if bot is not currently in lava
|
||||
+ // Check if bot.entity exists and is initialized
|
||||
+ if (!bot.entity || !bot.entity.isInLava) {
|
||||
+ this.blocksToAvoid.add(registry.blocksByName.lava.id)
|
||||
+ }
|
||||
|
||||
this.liquids = new Set()
|
||||
this.liquids.add(registry.blocksByName.water.id)
|
||||
@@ -62,7 +67,13 @@ class Movements {
|
||||
|
||||
this.climbables = new Set()
|
||||
this.climbables.add(registry.blocksByName.ladder.id)
|
||||
- // this.climbables.add(registry.blocksByName.vine.id)
|
||||
+ if (registry.blocksByName.vine) this.climbables.add(registry.blocksByName.vine.id)
|
||||
+ if (registry.blocksByName.weeping_vines) this.climbables.add(registry.blocksByName.weeping_vines.id)
|
||||
+ if (registry.blocksByName.weeping_vines_plant) this.climbables.add(registry.blocksByName.weeping_vines_plant.id)
|
||||
+ if (registry.blocksByName.twisting_vines) this.climbables.add(registry.blocksByName.twisting_vines.id)
|
||||
+ if (registry.blocksByName.twisting_vines_plant) this.climbables.add(registry.blocksByName.twisting_vines_plant.id)
|
||||
+ if (registry.blocksByName.cave_vines) this.climbables.add(registry.blocksByName.cave_vines.id)
|
||||
+ if (registry.blocksByName.cave_vines_plant) this.climbables.add(registry.blocksByName.cave_vines_plant.id)
|
||||
this.emptyBlocks = new Set()
|
||||
|
||||
this.replaceables = new Set()
|
||||
@@ -92,13 +103,15 @@ class Movements {
|
||||
}
|
||||
})
|
||||
registry.blocksArray.forEach(block => {
|
||||
- if (this.interactableBlocks.has(block.name) && block.name.toLowerCase().includes('gate') && !block.name.toLowerCase().includes('iron')) {
|
||||
+ if (this.interactableBlocks.has(block.name)
|
||||
+ && (block.name.toLowerCase().includes('gate') || block.name.toLowerCase().includes('door') || block.name.toLowerCase().includes('trapdoor'))
|
||||
+ && !block.name.toLowerCase().includes('iron')) {
|
||||
// console.info(block)
|
||||
this.openable.add(block.id)
|
||||
}
|
||||
})
|
||||
|
||||
- this.canOpenDoors = false // Causes issues. Probably due to none paper servers.
|
||||
+ this.canOpenDoors = true
|
||||
|
||||
this.exclusionAreasStep = []
|
||||
this.exclusionAreasBreak = []
|
||||
@@ -230,8 +243,13 @@ class Movements {
|
||||
}
|
||||
}
|
||||
b.climbable = this.climbables.has(b.type)
|
||||
- b.safe = (b.boundingBox === 'empty' || b.climbable || this.carpets.has(b.type)) && !this.blocksToAvoid.has(b.type)
|
||||
- b.physical = b.boundingBox === 'block' && !this.fences.has(b.type)
|
||||
+
|
||||
+ // Enhanced trapdoor logic - open trapdoors are safe to pass through
|
||||
+ const isOpenTrapdoor = this.openable.has(b.type) && b.name.includes('trapdoor') && b._properties?.open === true
|
||||
+ const isClosedTrapdoor = this.openable.has(b.type) && b.name.includes('trapdoor') && b._properties?.open !== true
|
||||
+
|
||||
+ b.safe = (b.boundingBox === 'empty' || b.climbable || this.carpets.has(b.type) || isOpenTrapdoor) && !this.blocksToAvoid.has(b.type)
|
||||
+ b.physical = (b.boundingBox === 'block' && !this.fences.has(b.type)) || isClosedTrapdoor
|
||||
b.replaceable = this.replaceables.has(b.type) && !b.physical
|
||||
b.liquid = this.liquids.has(b.type)
|
||||
b.height = pos.y + dy
|
||||
@@ -284,6 +302,18 @@ class Movements {
|
||||
cost += this.exclusionStep(block) // Is excluded so can't move or break
|
||||
cost += this.getNumEntitiesAt(block.position, 0, 0, 0) * this.entityCost
|
||||
if (block.safe) return cost
|
||||
+
|
||||
+ // process door cost
|
||||
+ if ((this.canOpenDoors && block.openable)
|
||||
+ || (block.openable && block._properties?.open === true)) {
|
||||
+ return cost
|
||||
+ }
|
||||
+
|
||||
+ // Handle trapdoors specifically - they can be opened instead of broken
|
||||
+ if (this.canOpenDoors && block.openable && block.name.includes('trapdoor') && !block.name.includes('iron')) {
|
||||
+ return cost + 1 // Small cost for opening trapdoor
|
||||
+ }
|
||||
+
|
||||
if (!this.safeToBreak(block)) return 100 // Can't break, so can't move
|
||||
toBreak.push(block.position)
|
||||
|
||||
@@ -387,8 +417,8 @@ class Movements {
|
||||
cost += this.safeOrBreak(blockB, toBreak)
|
||||
if (cost > 100) return
|
||||
|
||||
- // Open fence gates
|
||||
- if (this.canOpenDoors && blockC.openable && blockC.shapes && blockC.shapes.length !== 0) {
|
||||
+ // Open fence gates and doors
|
||||
+ if (this.canOpenDoors && blockC.openable && !blockC._properties.open) {
|
||||
toPlace.push({ x: node.x + dir.x, y: node.y, z: node.z + dir.z, dx: 0, dy: 0, dz: 0, useOne: true }) // Indicate that a block should be used on this block not placed
|
||||
} else {
|
||||
cost += this.safeOrBreak(blockC, toBreak)
|
||||
@@ -554,6 +584,54 @@ class Movements {
|
||||
neighbors.push(new Move(node.x, node.y + 1, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
|
||||
}
|
||||
|
||||
+ getMoveClimbUpThroughTrapdoor (node, neighbors) {
|
||||
+ const blockCurrent = this.getBlock(node, 0, 0, 0) // Current position (should be climbable)
|
||||
+ const blockAbove = this.getBlock(node, 0, 1, 0) // Block directly above
|
||||
+ const blockCeiling = this.getBlock(node, 0, 2, 0) // Trapdoor or ceiling block
|
||||
+
|
||||
+ // Only attempt this move if we're on a climbable block (ladder/vine)
|
||||
+ if (!blockCurrent.climbable) return
|
||||
+
|
||||
+ // Check if there's a closed trapdoor above us
|
||||
+ if (!blockCeiling.openable || blockCeiling._properties?.open === true) return
|
||||
+
|
||||
+ let cost = 2 // Base cost for climbing up and opening trapdoor
|
||||
+ const toBreak = []
|
||||
+ const toPlace = []
|
||||
+
|
||||
+ // Make sure we can break/pass through the block above if needed
|
||||
+ cost += this.safeOrBreak(blockAbove, toBreak)
|
||||
+ if (cost > 100) return
|
||||
+
|
||||
+ // Add cost for opening the trapdoor
|
||||
+ toPlace.push({ x: node.x, y: node.y + 2, z: node.z, dx: 0, dy: 0, dz: 0, useOne: true })
|
||||
+
|
||||
+ neighbors.push(new Move(node.x, node.y + 2, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
|
||||
+ }
|
||||
+
|
||||
+ // Enhanced ladder/vine climbing that can handle stepping on top and jumping
|
||||
+ getMoveClimbTop (node, neighbors) {
|
||||
+ const blockCurrent = this.getBlock(node, 0, 0, 0) // Current position (should be climbable)
|
||||
+ const blockAbove = this.getBlock(node, 0, 1, 0) // Block directly above
|
||||
+
|
||||
+ // Only attempt this move if we're on a climbable block (ladder/vine)
|
||||
+ if (!blockCurrent.climbable) return
|
||||
+
|
||||
+ // Check if we can step on top of the ladder/vine and then jump up
|
||||
+ if (!blockAbove.safe) return
|
||||
+
|
||||
+ let cost = 2 // Cost for climbing to top of ladder and jumping
|
||||
+ const toBreak = []
|
||||
+ const toPlace = []
|
||||
+
|
||||
+ // Check if there's space to jump up from the top of the ladder
|
||||
+ const blockJumpTarget = this.getBlock(node, 0, 2, 0)
|
||||
+ cost += this.safeOrBreak(blockJumpTarget, toBreak)
|
||||
+ if (cost > 100) return
|
||||
+
|
||||
+ neighbors.push(new Move(node.x, node.y + 2, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
|
||||
+ }
|
||||
+
|
||||
// Jump up, down or forward over a 1 block gap
|
||||
getMoveParkourForward (node, dir, neighbors) {
|
||||
const block0 = this.getBlock(node, 0, -1, 0)
|
||||
@@ -656,8 +734,27 @@ class Movements {
|
||||
this.getMoveDown(node, neighbors)
|
||||
this.getMoveUp(node, neighbors)
|
||||
|
||||
+ // Enhanced climbing moves for ladders, vines, and trapdoors
|
||||
+ this.getMoveClimbUpThroughTrapdoor(node, neighbors)
|
||||
+ this.getMoveClimbTop(node, neighbors)
|
||||
+
|
||||
return neighbors
|
||||
}
|
||||
+
|
||||
+ // Update lava avoidance based on bot's current state
|
||||
+ updateLavaAvoidance () {
|
||||
+ const registry = this.bot.registry
|
||||
+ const lavaId = registry.blocksByName.lava.id
|
||||
+
|
||||
+ // Check if bot.entity exists and is initialized
|
||||
+ if (this.bot.entity && this.bot.entity.isInLava) {
|
||||
+ // If bot is in lava, allow pathfinding through lava to escape
|
||||
+ this.blocksToAvoid.delete(lavaId)
|
||||
+ } else {
|
||||
+ // If bot is not in lava, avoid lava blocks
|
||||
+ this.blocksToAvoid.add(lavaId)
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
module.exports = Movements
|
||||
@@ -0,0 +1,75 @@
|
||||
# MIT License
|
||||
|
||||
# Copyright (c) 2024 Kolby Nottingham
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
diff --git a/lib/plugins/digging.js b/lib/plugins/digging.js
|
||||
index 496cf63..813a667 100644
|
||||
--- a/lib/plugins/digging.js
|
||||
+++ b/lib/plugins/digging.js
|
||||
@@ -242,11 +242,14 @@ function inject (bot) {
|
||||
enchantments = enchantments.concat(helmetEnchantments)
|
||||
}
|
||||
|
||||
+ if (block.material === 'incorrect_for_wooden_tool')
|
||||
+ block.material = 'mineable/pickaxe'
|
||||
+
|
||||
const creative = bot.game.gameMode === 'creative'
|
||||
return block.digTime(
|
||||
type,
|
||||
creative,
|
||||
- bot.entity.isInWater,
|
||||
+ false, // isInWater, water calc is bugged, so always false
|
||||
!bot.entity.onGround,
|
||||
enchantments,
|
||||
bot.entity.effects
|
||||
diff --git a/lib/plugins/inventory.js b/lib/plugins/inventory.js
|
||||
index 70db312..93d2054 100644
|
||||
--- a/lib/plugins/inventory.js
|
||||
+++ b/lib/plugins/inventory.js
|
||||
@@ -125,10 +125,15 @@ function inject (bot, { hideErrors }) {
|
||||
cursorZ: -1
|
||||
})
|
||||
} else if (bot.supportFeature('useItemWithOwnPacket')) {
|
||||
+ const yawDeg = -bot.entity.yaw * 180 / Math.PI + 180 // invert + shift
|
||||
+ const pitchDeg = -bot.entity.pitch * 180 / Math.PI // invert
|
||||
bot._client.write('use_item', {
|
||||
hand: offHand ? 1 : 0,
|
||||
sequence,
|
||||
- rotation: { x: 0, y: 0 }
|
||||
+ rotation: {
|
||||
+ x: yawDeg,
|
||||
+ y: pitchDeg
|
||||
+ }
|
||||
})
|
||||
}
|
||||
}
|
||||
diff --git a/lib/plugins/place_block.js b/lib/plugins/place_block.js
|
||||
index fdaec6b..08983b6 100644
|
||||
--- a/lib/plugins/place_block.js
|
||||
+++ b/lib/plugins/place_block.js
|
||||
@@ -11,7 +11,7 @@ function inject (bot) {
|
||||
let newBlock = bot.blockAt(dest)
|
||||
if (oldBlock.type === newBlock.type) {
|
||||
[oldBlock, newBlock] = await onceWithCleanup(bot, `blockUpdate:${dest}`, {
|
||||
- timeout: 5000,
|
||||
+ timeout: 500,
|
||||
// Condition to wait to receive block update actually changing the block type, in case the bot receives block updates with no changes
|
||||
// oldBlock and newBlock will both be null when the world unloads
|
||||
checkCondition: (oldBlock, newBlock) => !oldBlock || !newBlock || oldBlock.type !== newBlock.type
|
||||
Generated
+36
-37
@@ -243,6 +243,12 @@ overrides:
|
||||
string.prototype.matchall: npm:@nolyfill/string.prototype.matchall@^1.0.44
|
||||
|
||||
patchedDependencies:
|
||||
mineflayer-pathfinder:
|
||||
hash: 4e932c106617efe7663216fc5ed42556761146633ebae88a5c831dc253abafa1
|
||||
path: patches/mineflayer-pathfinder.patch
|
||||
mineflayer@4.33.0:
|
||||
hash: 03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a
|
||||
path: patches/mineflayer@4.33.0.patch
|
||||
srvx@0.9.8:
|
||||
hash: f0151386fdcbcb6f53833cf8f66926ef2eb31b71a2782d6e0960dec832ef108d
|
||||
path: patches/srvx@0.9.8.patch
|
||||
@@ -3153,25 +3159,25 @@ importers:
|
||||
version: 3.102.3
|
||||
mineflayer:
|
||||
specifier: ^4.33.0
|
||||
version: 4.33.0
|
||||
version: 4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a)
|
||||
mineflayer-armor-manager:
|
||||
specifier: ^2.0.1
|
||||
version: 2.0.1(mineflayer@4.33.0)
|
||||
version: 2.0.1(mineflayer@4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a))
|
||||
mineflayer-auto-eat:
|
||||
specifier: ^5.0.3
|
||||
version: 5.0.3
|
||||
mineflayer-collectblock:
|
||||
specifier: ^1.6.0
|
||||
version: 1.6.0(prismarine-registry@1.11.0)
|
||||
version: 1.6.0
|
||||
mineflayer-pathfinder:
|
||||
specifier: ^2.4.5
|
||||
version: 2.4.5(prismarine-registry@1.11.0)
|
||||
version: 2.4.5(patch_hash=4e932c106617efe7663216fc5ed42556761146633ebae88a5c831dc253abafa1)
|
||||
mineflayer-pvp:
|
||||
specifier: ^1.3.2
|
||||
version: 1.3.2(prismarine-registry@1.11.0)
|
||||
mineflayer-tool:
|
||||
specifier: ^1.2.0
|
||||
version: 1.2.0(prismarine-registry@1.11.0)
|
||||
version: 1.2.0
|
||||
nanoid:
|
||||
specifier: 'catalog:'
|
||||
version: 5.1.6
|
||||
@@ -3180,7 +3186,7 @@ importers:
|
||||
version: 0.2.1(zod-to-json-schema@3.25.1(zod@4.3.5))(zod@4.3.5)
|
||||
prismarine-block:
|
||||
specifier: ^1.22.0
|
||||
version: 1.22.0(prismarine-registry@1.11.0)
|
||||
version: 1.22.0
|
||||
prismarine-entity:
|
||||
specifier: ^2.5.0
|
||||
version: 2.5.0
|
||||
@@ -3192,7 +3198,7 @@ importers:
|
||||
version: 1.3.1(prismarine-registry@1.11.0)
|
||||
prismarine-viewer:
|
||||
specifier: ^1.33.0
|
||||
version: 1.33.0(bufferutil@4.1.0)(prismarine-registry@1.11.0)(utf-8-validate@5.0.10)
|
||||
version: 1.33.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
|
||||
prismarine-windows:
|
||||
specifier: ^2.9.0
|
||||
version: 2.9.0
|
||||
@@ -27915,59 +27921,55 @@ snapshots:
|
||||
- encoding
|
||||
- supports-color
|
||||
|
||||
mineflayer-armor-manager@2.0.1(mineflayer@4.33.0):
|
||||
mineflayer-armor-manager@2.0.1(mineflayer@4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a)):
|
||||
dependencies:
|
||||
minecraft-data: 3.102.3
|
||||
mineflayer: 4.33.0
|
||||
mineflayer: 4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a)
|
||||
|
||||
mineflayer-auto-eat@5.0.3:
|
||||
dependencies:
|
||||
'@nxg-org/mineflayer-util-plugin': 1.8.4
|
||||
mineflayer: 4.33.0
|
||||
mineflayer: 4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a)
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
|
||||
mineflayer-collectblock@1.6.0(prismarine-registry@1.11.0):
|
||||
mineflayer-collectblock@1.6.0:
|
||||
dependencies:
|
||||
mineflayer: 4.33.0
|
||||
mineflayer-pathfinder: 2.4.5(prismarine-registry@1.11.0)
|
||||
mineflayer-tool: 1.2.0(prismarine-registry@1.11.0)
|
||||
mineflayer: 4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a)
|
||||
mineflayer-pathfinder: 2.4.5(patch_hash=4e932c106617efe7663216fc5ed42556761146633ebae88a5c831dc253abafa1)
|
||||
mineflayer-tool: 1.2.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- prismarine-registry
|
||||
- supports-color
|
||||
|
||||
mineflayer-pathfinder@2.4.5(prismarine-registry@1.11.0):
|
||||
mineflayer-pathfinder@2.4.5(patch_hash=4e932c106617efe7663216fc5ed42556761146633ebae88a5c831dc253abafa1):
|
||||
dependencies:
|
||||
minecraft-data: 3.102.3
|
||||
prismarine-block: 1.22.0(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0
|
||||
prismarine-entity: 2.5.0
|
||||
prismarine-item: 1.17.0
|
||||
prismarine-nbt: 2.8.0
|
||||
prismarine-physics: 1.10.0
|
||||
vec3: 0.1.10
|
||||
transitivePeerDependencies:
|
||||
- prismarine-registry
|
||||
|
||||
mineflayer-pvp@1.3.2(prismarine-registry@1.11.0):
|
||||
dependencies:
|
||||
mineflayer: 4.33.0
|
||||
mineflayer-pathfinder: 2.4.5(prismarine-registry@1.11.0)
|
||||
mineflayer: 4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a)
|
||||
mineflayer-pathfinder: 2.4.5(patch_hash=4e932c106617efe7663216fc5ed42556761146633ebae88a5c831dc253abafa1)
|
||||
mineflayer-utils: 0.1.4(prismarine-registry@1.11.0)
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- prismarine-registry
|
||||
- supports-color
|
||||
|
||||
mineflayer-tool@1.2.0(prismarine-registry@1.11.0):
|
||||
mineflayer-tool@1.2.0:
|
||||
dependencies:
|
||||
mineflayer: 4.33.0
|
||||
mineflayer-pathfinder: 2.4.5(prismarine-registry@1.11.0)
|
||||
mineflayer: 4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a)
|
||||
mineflayer-pathfinder: 2.4.5(patch_hash=4e932c106617efe7663216fc5ed42556761146633ebae88a5c831dc253abafa1)
|
||||
prismarine-nbt: 2.8.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- prismarine-registry
|
||||
- supports-color
|
||||
|
||||
mineflayer-utils@0.1.4(prismarine-registry@1.11.0):
|
||||
@@ -27987,7 +27989,7 @@ snapshots:
|
||||
minecraft-data: 2.221.0
|
||||
minecraft-protocol: 1.62.0(encoding@0.1.13)
|
||||
prismarine-biome: 1.3.0(minecraft-data@2.221.0)(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0
|
||||
prismarine-chat: 1.12.0
|
||||
prismarine-chunk: 1.39.0(minecraft-data@2.221.0)
|
||||
prismarine-entity: 1.2.0
|
||||
@@ -28004,12 +28006,12 @@ snapshots:
|
||||
- prismarine-registry
|
||||
- supports-color
|
||||
|
||||
mineflayer@4.33.0:
|
||||
mineflayer@4.33.0(patch_hash=03a5a80439dece74f880cf754f7317b3c9e4c5dbc6488eba67c36ab4fbfbea3a):
|
||||
dependencies:
|
||||
minecraft-data: 3.102.3
|
||||
minecraft-protocol: 1.62.0(encoding@0.1.13)
|
||||
prismarine-biome: 1.3.0(minecraft-data@3.102.3)(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0
|
||||
prismarine-chat: 1.12.0
|
||||
prismarine-chunk: 1.39.0(minecraft-data@3.102.3)
|
||||
prismarine-entity: 2.5.0
|
||||
@@ -29071,7 +29073,7 @@ snapshots:
|
||||
minecraft-data: 3.102.3
|
||||
prismarine-registry: 1.11.0
|
||||
|
||||
prismarine-block@1.22.0(prismarine-registry@1.11.0):
|
||||
prismarine-block@1.22.0:
|
||||
dependencies:
|
||||
minecraft-data: 3.102.3
|
||||
prismarine-biome: 1.3.0(minecraft-data@3.102.3)(prismarine-registry@1.11.0)
|
||||
@@ -29079,8 +29081,6 @@ snapshots:
|
||||
prismarine-item: 1.17.0
|
||||
prismarine-nbt: 2.8.0
|
||||
prismarine-registry: 1.11.0
|
||||
transitivePeerDependencies:
|
||||
- prismarine-registry
|
||||
|
||||
prismarine-chat@1.12.0:
|
||||
dependencies:
|
||||
@@ -29091,7 +29091,7 @@ snapshots:
|
||||
prismarine-chunk@1.39.0(minecraft-data@2.221.0):
|
||||
dependencies:
|
||||
prismarine-biome: 1.3.0(minecraft-data@2.221.0)(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0
|
||||
prismarine-nbt: 2.8.0
|
||||
prismarine-registry: 1.11.0
|
||||
smart-buffer: 4.2.0
|
||||
@@ -29104,7 +29104,7 @@ snapshots:
|
||||
prismarine-chunk@1.39.0(minecraft-data@3.102.3):
|
||||
dependencies:
|
||||
prismarine-biome: 1.3.0(minecraft-data@3.102.3)(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0
|
||||
prismarine-nbt: 2.8.0
|
||||
prismarine-registry: 1.11.0
|
||||
smart-buffer: 4.2.0
|
||||
@@ -29155,16 +29155,16 @@ snapshots:
|
||||
prismarine-registry@1.11.0:
|
||||
dependencies:
|
||||
minecraft-data: 3.102.3
|
||||
prismarine-block: 1.22.0(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0
|
||||
prismarine-nbt: 2.8.0
|
||||
|
||||
prismarine-viewer@1.33.0(bufferutil@4.1.0)(prismarine-registry@1.11.0)(utf-8-validate@5.0.10):
|
||||
prismarine-viewer@1.33.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
|
||||
dependencies:
|
||||
'@tweenjs/tween.js': 23.1.3
|
||||
compression: 1.8.1
|
||||
express: 4.22.1
|
||||
minecraft-data: 3.102.3
|
||||
prismarine-block: 1.22.0(prismarine-registry@1.11.0)
|
||||
prismarine-block: 1.22.0
|
||||
prismarine-chunk: 1.39.0(minecraft-data@3.102.3)
|
||||
prismarine-world: 3.6.3
|
||||
socket.io: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)
|
||||
@@ -29174,7 +29174,6 @@ snapshots:
|
||||
vec3: 0.1.10
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- prismarine-registry
|
||||
- supports-color
|
||||
- utf-8-validate
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@ overrides:
|
||||
string.prototype.matchall: npm:@nolyfill/string.prototype.matchall@^1.0.44
|
||||
|
||||
patchedDependencies:
|
||||
mineflayer-pathfinder: patches/mineflayer-pathfinder.patch
|
||||
mineflayer@4.33.0: patches/mineflayer@4.33.0.patch
|
||||
srvx@0.9.8: patches/srvx@0.9.8.patch
|
||||
catalog:
|
||||
'@capacitor/cli': ^8.0.1
|
||||
|
||||
Reference in New Issue
Block a user