parrying and blocking script that uses posture damage and blocking bar that blocks players damage from hitting you if you perfectly time it while crouching and that blocks attack if your holding crouch but you have a block bar meaning if you get hit enough times while blocking your block will break causing the attack to deal damage
#Parrying/Blocking System
1 messages · Page 1 of 1 (latest)
{
"format_version": 2,
"header": {
"name": "Parry and Block System",
"description": "Implements posture, parrying and blocking mechanics",
"uuid": "b95d0ff2-b60e-4c56-b7b2-xxxxxxyyyyyyy",
"version": [1, 0, 0],
"min_engine_version": [1, 20, 0]
},
"modules": [
{
"type": "scripting",
"language": "javascript",
"uuid": "e5020fc7-f3ea-4bc2-a5cb-xxxxxxxzzzzz",
"version": [1, 0, 0],
"entry": "scripts/main.js"
}
],
"dependencies": [
{
"module_name": "@minecraft/server",
"version": "1.10.0"
}
]
}
import { world, system } from "@minecraft/server";
const BLOCK_BAR_MAX = 100;
const BLOCK_BAR_REGEN = 0.5;
const BLOCK_COST = 25;
let playerData = new Map();
system.runInterval(() => {
for (const player of world.getPlayers()) {
let data = getPlayerData(player);
// Regen block bar over time
if (data.blockBar < BLOCK_BAR_MAX) {
data.blockBar += BLOCK_BAR_REGEN;
if (data.blockBar > BLOCK_BAR_MAX) {
data.blockBar = BLOCK_BAR_MAX;
}
}
}
}, 20); // Runs every second
world.afterEvents.entityHurt.subscribe((event) => {
const { damageSource, hurtEntity, damage } = event;
if (!hurtEntity || !hurtEntity.isValid() || !hurtEntity.isSneaking) return;
const data = getPlayerData(hurtEntity);
const timeNow = Date.now();
// Perfect parry window: within 300ms of last crouch
if (timeNow - data.lastSneakTime < 300) {
// Parry: nullify damage
event.cancel = true;
hurtEntity.runCommandAsync("say Perfect Parry!");
// Optional: knockback attacker
} else {
// Regular block check
if (data.blockBar >= BLOCK_COST) {
event.cancel = true;
data.blockBar -= BLOCK_COST;
hurtEntity.runCommandAsync("say Blocked!");
} else {
hurtEntity.runCommandAsync("say Guard Broken!");
// Let damage go through
}
}
});
// Detect crouch events
world.afterEvents.playerSneak.subscribe((event) => {
const player = event.player;
if (event.sneaking) {
let data = getPlayerData(player);
data.lastSneakTime = Date.now();
}
});
function getPlayerData(player) {
if (!playerData.has(player.id)) {
playerData.set(player.id, {
blockBar: BLOCK_BAR_MAX,
lastSneakTime: 0
});
}
return playerData.get(player.id);
}
AI ahh code.. playerSneak event doesn't exist.
xd