// Only proceed if a player was the source of damage
if (event.source.player) {
let playerSource = event.source.player;
let target = event.entity; // victim of the damage
let damageAmount = event.amount; // damage value
let server = event.server
let playerId = event.source.player.id;
let entityId = event.entity.id;
// Example: notify the player when they hit a zombie
if (target.type === 'minecraft:zombie') {
playerSource.tell(`You dealt ${damageAmount} damage to ${target}!`);
}
if (playerSource.getMainHandItem() === 'kubejs:spider_charm' || playerSource.getOffhandItem() === 'kubejs:spider_charm') {
playerSource.tell(`spider charm activated`);
// target.attack(player, 10)
}
server.scheduleInTicks(20, event => { // seems to require all vars in main method to be redeclarable
// Make sure the target is still alive
let playerClosure = event.server.getPlayer(playerId);
let entityClosure = event.server.getEntity(entityId);
if (entityClosure.alive) {
entityClosure.damage('player', 10, playerClosure); // deal 2 extra damage, source: player
}
});
playerSource.tell(`event.damage is now: ${event.damage}`);
}
});```
#server.scheduleInTicks and delayed server operations
20 messages · Page 1 of 1 (latest)
Once your ticket has been resolved, please close it with </ticket close:1054771505520717835> command!
logs?
The intent here is a delayed damage effect. IE: Hit someone with sword. 1 second later they take additional damage
probably best to show logs first thing
[00:29:09] [INIT] Loaded plugins:
[00:29:09] [INIT] - dev.latvian.mods.kubejs.forge.BuiltinKubeJSForgePlugin
[00:29:09] [INIT] - dev.latvian.mods.kubejs.forge.BuiltinKubeJSForgeClientPlugin
[00:29:09] [INIT] - com.probejs.ProbeJSPlugin
[00:29:09] [INIT] - net.liopyu.entityjs.EntityJSPlugin
[00:29:09] [INFO] example.js#5: Hello, World! (Loaded server scripts)
[00:29:09] [INFO] Loaded script server_scripts:example.js in 0.003 s
[00:29:09] [INFO] Loaded 1/1 KubeJS server scripts in 0.009 s with 0 errors and 0 warnings
[00:29:09] [INFO] Scripts loaded
[00:29:10] [INFO] [minecraft:block] Found 275 tags, added 5 objects, removed 0 objects
[00:29:11] [INFO] Server resource reload complete!
[00:29:16] [INFO] example.js#16: right clicked with spider charm
[00:29:19] [ERROR] ! example.js#49: Error occurred while handling scheduled event callback: TypeError: Cannot call method "getPlayer" of undefined
Ok yeah fair
event?
in your scheduler you define the callback as event
when the hurt event is also event
so it's thinking you're calling <scheduler>.getPlayer