78 lines
4.0 KiB
Diff
78 lines
4.0 KiB
Diff
diff --git a/node_modules/prismarine-physics/index.js b/node_modules/prismarine-physics/index.js
|
|
index 2ef4ca1..1d6b344 100644
|
|
--- a/node_modules/prismarine-physics/index.js
|
|
+++ b/node_modules/prismarine-physics/index.js
|
|
@@ -34,6 +34,21 @@ function Physics (mcData, world) {
|
|
const lavaIds = [blocksByName.lava.id, blocksByName.flowing_lava ? blocksByName.flowing_lava.id : -1]
|
|
const ladderId = blocksByName.ladder.id
|
|
const vineId = blocksByName.vine.id
|
|
+
|
|
+ // NOTE: Copper trapdoors is coming in 1.21.
|
|
+ const trapdoorIds = new Set()
|
|
+ if (blocksByName.iron_trapdoor) { trapdoorIds.add(blocksByName.iron_trapdoor.id) } // 1.8+
|
|
+ if (blocksByName.acacia_trapdoor) { trapdoorIds.add(blocksByName.acacia_trapdoor.id) } // 1.13+
|
|
+ if (blocksByName.birch_trapdoor) { trapdoorIds.add(blocksByName.birch_trapdoor.id) } // 1.13+
|
|
+ if (blocksByName.jungle_trapdoor) { trapdoorIds.add(blocksByName.jungle_trapdoor.id) } // 1.13+
|
|
+ if (blocksByName.oak_trapdoor) { trapdoorIds.add(blocksByName.oak_trapdoor.id) } // 1.13+
|
|
+ if (blocksByName.dark_oak_trapdoor) { trapdoorIds.add(blocksByName.dark_oak_trapdoor.id) } // 1.13+
|
|
+ if (blocksByName.spruce_trapdoor) { trapdoorIds.add(blocksByName.spruce_trapdoor.id) } // 1.13+
|
|
+ if (blocksByName.crimson_trapdoor) { trapdoorIds.add(blocksByName.crimson_trapdoor.id) } // 1.16+
|
|
+ if (blocksByName.warped_trapdoor) { trapdoorIds.add(blocksByName.warped_trapdoor.id) } // 1.16+
|
|
+ if (blocksByName.mangrove_trapdoor) { trapdoorIds.add(blocksByName.mangrove_trapdoor.id) } // 1.19+
|
|
+ if (blocksByName.cherry_trapdoor) { trapdoorIds.add(blocksByName.cherry_trapdoor.id) } // 1.20+
|
|
+
|
|
const waterLike = new Set()
|
|
if (blocksByName.seagrass) waterLike.add(blocksByName.seagrass.id) // 1.13+
|
|
if (blocksByName.tall_seagrass) waterLike.add(blocksByName.tall_seagrass.id) // 1.13+
|
|
@@ -419,9 +434,26 @@ function Physics (mcData, world) {
|
|
vel.z += forward * cos - strafe * sin
|
|
}
|
|
|
|
+ const climbableTrapdoorFeature = supportFeature('climbableTrapdoor')
|
|
function isOnLadder (world, pos) {
|
|
const block = world.getBlock(pos)
|
|
- return (block && (block.type === ladderId || block.type === vineId))
|
|
+ if (!block) { return false }
|
|
+ if (block.type === ladderId || block.type === vineId) { return true }
|
|
+
|
|
+ // Since 1.9, when a trapdoor satisfies the following conditions, it also becomes climbable:
|
|
+ // 1. The trapdoor is placed directly above a ladder.
|
|
+ // 2. The trapdoor is opened.
|
|
+ // 3. The trapdoor and the ladder directly below it face the same direction.
|
|
+ if (climbableTrapdoorFeature && trapdoorIds.has(block.type)) {
|
|
+ const blockBelow = world.getBlock(pos.offset(0, -1, 0))
|
|
+ if (blockBelow.type !== ladderId) { return false } // condition 1.
|
|
+ const blockProperties = block.getProperties()
|
|
+ if (!blockProperties.open) { return false } // condition 2.
|
|
+ if (blockProperties.facing !== blockBelow.getProperties().facing) { return false } // condition 3
|
|
+ return true
|
|
+ }
|
|
+
|
|
+ return false
|
|
}
|
|
|
|
function doesNotCollide (world, pos) {
|
|
diff --git a/node_modules/prismarine-physics/lib/features.json b/node_modules/prismarine-physics/lib/features.json
|
|
index 411cff3..bf83100 100644
|
|
--- a/node_modules/prismarine-physics/lib/features.json
|
|
+++ b/node_modules/prismarine-physics/lib/features.json
|
|
@@ -17,11 +17,16 @@
|
|
{
|
|
"name": "velocityBlocksOnTop",
|
|
"description": "Velocity changes are caused by the block the player is standing on",
|
|
- "versions": ["1.15", "1.17", "1.18"]
|
|
+ "versions": ["1.15", "1.16", "1.17", "1.18", "1.19", "1.20"]
|
|
},
|
|
{
|
|
"name": "climbUsingJump",
|
|
"description": "Entity can climb ladders and vines by pressing jump",
|
|
- "versions": ["1.14", "1.15", "1.17", "1.18"]
|
|
+ "versions": ["1.14", "1.15", "1.16", "1.17", "1.18", "1.19", "1.20"]
|
|
+ },
|
|
+ {
|
|
+ "name": "climbableTrapdoor",
|
|
+ "description": "Trapdoors placed directly above ladders become climbable",
|
|
+ "versions": ["1.9", "1.10", "1.11", "1.12", "1.13", "1.14", "1.15", "1.16", "1.17", "1.18", "1.19", "1.20"]
|
|
}
|
|
]
|