WikiExamples

Примеры обработки событий


🎯 Примеры обработки событий

Готовые примеры обработки событий в ScriptsLab.


Событие входа игрока

Срабатывает при входе игрока на сервер.

/**
 * PlayerJoinEvent - Вход игрока на сервер
 */

Events.on('PlayerJoinEvent', function(event) {
    var player = event.getPlayer();
    
    // Убираем ванильное сообщение
    event.joinMessage(null);
    
    // Отправляем кастомное приветствие
    var Bukkit = Java.type('org.bukkit.Bukkit');
    
    player.sendMessage('§8§m                                           ');
    player.sendMessage('');
    player.sendMessage('  §6§l⚡ Добро пожаловать! ⚡');
    player.sendMessage('');
    player.sendMessage('  §7Привет, §e' + player.getName() + '§7!');
    player.sendMessage('  §7Онлайн: §a' + Bukkit.getOnlinePlayers().size() + ' §7игроков');
    player.sendMessage('');
    player.sendMessage('  §7Используй §e/help §7для помощи');
    player.sendMessage('');
    player.sendMessage('§8§m                                           ');
    
    // Сообщение другим игрокам
    Bukkit.getOnlinePlayers().forEach(function(p) {
        if (p.getName() !== player.getName()) {
            p.sendMessage('§8[§a+§8] §7' + player.getName() + ' §aзашёл на сервер');
        }
    });
    
    Console.log(player.getName() + ' зашёл на сервер');
});

Console.log('Обработчик PlayerJoinEvent загружен');

Событие выхода игрока

Срабатывает при выходе игрока с сервера.

/**
 * PlayerQuitEvent - Выход игрока с сервера
 */

Events.on('PlayerQuitEvent', function(event) {
    var player = event.getPlayer();
    
    // Убираем ванильное сообщение
    event.quitMessage(null);
    
    // Кастомное сообщение
    var Bukkit = Java.type('org.bukkit.Bukkit');
    Bukkit.getOnlinePlayers().forEach(function(p) {
        if (p.getName() !== player.getName()) {
            p.sendMessage('§8[§c-§8] §7' + player.getName() + ' §cвышел с сервера');
        }
    });
    
    Console.log(player.getName() + ' вышел с сервера');
});

Console.log('Обработчик PlayerQuitEvent загружен');

Событие смерти

Срабатывает при смерти игрока.

/**
 * PlayerDeathEvent - Смерть игрока
 */

Events.on('PlayerDeathEvent', function(event) {
    var entity = event.getEntity();
    var killer = event.getEntity().getKiller();
    
    // Проверяем, был ли убит игрок
    if (killer !== null) {
        var message = '§c' + entity.getName() + ' §7был убит §c' + killer.getName();
        event.deathMessage(message);
        
        Console.log(entity.getName() + ' был убит ' + killer.getName());
    } else {
        var message = '§c' + entity.getName() + ' §7умер';
        event.deathMessage(message);
        
        Console.log(entity.getName() + ' умер');
    }
});

Console.log('Обработчик PlayerDeathEvent загружен');

Событие чата

Срабатывает при отправке сообщения в чат.

/**
 * AsyncPlayerChatEvent - Сообщение в чат
 */

Events.on('AsyncPlayerChatEvent', function(event) {
    var player = event.getPlayer();
    var message = event.getMessage();
    
    // Фильтр плохих слов
    var badWords = ['badword1', 'badword2', 'мат'];
    
    for (var i = 0; i < badWords.length; i++) {
        if (message.toLowerCase().indexOf(badWords[i]) !== -1) {
            event.setCancelled(true);
            player.sendMessage('§cПожалуйста, следите за речью!');
            player.sendMessage('§7Нарушение: запрещённое слово');
            Console.log(player.getName() + '使用了 плохое слово: ' + badWords[i]);
            return;
        }
    }
    
    // Добавляем префикс к сообщению
    var format = '§e' + player.getName() + ' §7» §f' + message;
    event.setFormat(format);
});

Console.log('Обработчик AsyncPlayerChatEvent загружен');

Событие урона

Срабатывает при получении урона.

/**
 * EntityDamageEvent - Получение урона
 */

Events.on('EntityDamageEvent', function(event) {
    var entity = event.getEntity();
    var damage = event.getDamage();
    
    // Логирование
    Console.log(entity.getName() + ' получил урон: ' + damage);
    
    // Пример: нельзя умереть от падения с малой высоты
    var cause = event.getCause();
    if (cause.toString() === 'FALL') {
        if (damage < 5) {
            event.setCancelled(true);
        }
    }
});

Console.log('Обработчик EntityDamageEvent загружен');

Событие атаки

Срабатывает при атаке одного моба другим.

/**
 * EntityDamageByEntityEvent - Атака сущности
 */

Events.on('EntityDamageByEntityEvent', function(event) {
    var damager = event.getDamager();
    var victim = event.getEntity();
    
    var Player = Java.type('org.bukkit.entity.Player');
    
    // Проверяем, что атакующий - игрок
    if (damager instanceof Player) {
        Console.log(damager.getName() + ' атаковал ' + victim.getName());
    }
});

Console.log('Обработчик EntityDamageByEntityEvent загружен');

Событие стрельбы из лука

/**
 * EntityShootBowEvent - Стрельба из лука
 */

Events.on('EntityShootBowEvent', function(event) {
    var entity = event.getEntity();
    var item = event.getBow();
    
    Console.log(entity.getName() + ' стреляет из лука');
    
    // Проверяем, что это игрок
    var Player = Java.type('org.bukkit.entity.Player');
    if (entity instanceof Player) {
        // Дополнительная логика
    }
});

Console.log('Обработчик EntityShootBowEvent загружен');

Событие установки блока

/**
 * BlockPlaceEvent - Установка блока
 */

Events.on('BlockPlaceEvent', function(event) {
    var player = event.getPlayer();
    var block = event.getBlock();
    var type = block.getType();
    
    // Запрет установки определённых блоков
    var blockedBlocks = ['TNT', 'LAVA', 'WATER'];
    
    for (var i = 0; i < blockedBlocks.length; i++) {
        if (type.toString() === blockedBlocks[i]) {
            event.setCancelled(true);
            player.sendMessage('§cНельзя ставить: ' + type);
            Console.log(player.getName() + ' попытался поставить ' + type);
            return;
        }
    }
    
    Console.log(player.getName() + ' поставил ' + type);
});

Console.log('Обработчик BlockPlaceEvent загружен');

Событие разрушения блока

/**
 * BlockBreakEvent - Разрушение блока
 */

Events.on('BlockBreakEvent', function(event) {
    var player = event.getPlayer();
    var block = event.getBlock();
    var type = block.getType();
    
    // Запрет разрушения определённых блоков
    var protectedBlocks = ['BEDROCK', 'COMMAND_BLOCK'];
    
    for (var i = 0; i < protectedBlocks.length; i++) {
        if (type.toString() === protectedBlocks[i]) {
            event.setCancelled(true);
            player.sendMessage('§cНельзя ломать: ' + type);
            Console.log(player.getName() + ' попытался сломать ' + type);
            return;
        }
    }
    
    Console.log(player.getName() + ' сломал ' + type);
});

Console.log('Обработчик BlockBreakEvent загружен');

Событие входа в регион (WorldGuard)

/**
 * PlayerMoveEvent - Движение игрока
 * Можно использовать для проверки входа в регион
 */

Events.on('PlayerMoveEvent', function(event) {
    var player = event.getPlayer();
    var from = event.getFrom();
    var to = event.getTo();
    
    // Проверяем, изменилась ли позиция
    if (from.getBlockX() !== to.getBlockX() || 
        from.getBlockY() !== to.getBlockY() || 
        from.getBlockZ() !== to.getBlockZ()) {
        
        // Логика проверки региона
        // WorldGuard API: event.getPlayer().inWorldRegion("region_name")
    }
});

Console.log('Обработчик PlayerMoveEvent загружен');

Событие изменения предмета в руке

/**
 * PlayerItemHeldEvent - Смена предмета в руке
 */

Events.on('PlayerItemHeldEvent', function(event) {
    var player = event.getPlayer();
    var newSlot = event.getNewSlot();
    var oldSlot = event.getPreviousSlot();
    
    var newItem = player.getInventory().getItem(newSlot);
    var oldItem = player.getInventory().getItem(oldSlot);
    
    Console.log(player.getName() + ' сменил предмет: ' + oldSlot + ' -> ' + newSlot);
    
    // Пример: проверка кастомного предмета
    if (newItem !== null && newItem.hasItemMeta()) {
        var meta = newItem.getItemMeta();
        if (meta.hasDisplayName() && meta.getDisplayName().indexOf('МЕЧ') !== -1) {
            player.sendMessage('§6Вы взяли меч!');
        }
    }
});

Console.log('Обработчик PlayerItemHeldEvent загружен');

Таблица событий

СобытиеОписаниеПример файла
PlayerJoinEventВходwelcome_message.js
PlayerQuitEventВыходwelcome_message.js
AsyncPlayerChatEventЧатevent_listener.js
PlayerDeathEventСмерть-
EntityDamageByEntityEventАтакаcustom_sword.js
PlayerItemHeldEventСмена предметаcustom_sword.js
BlockPlaceEventУстановка блока-
BlockBreakEventРазрушение блока-

🎯 Event Examples (English)

Ready-to-use event handling examples for ScriptsLab.


Player Join Event

Triggered when player joins server.

/**
 * PlayerJoinEvent - Player joins server
 */
Events.on('PlayerJoinEvent', function(event) {
    var player = event.getPlayer();
    
    // Remove vanilla message
    event.joinMessage(null);
    
    // Send custom welcome
    var Bukkit = Java.type('org.bukkit.Bukkit');
    
    player.sendMessage('§8§m                                           ');
    player.sendMessage('');
    player.sendMessage('  §6§l⚡ Welcome! ⚡');
    player.sendMessage('');
    player.sendMessage('  §7Hello, §e' + player.getName() + '§7!');
    player.sendMessage('  §7Online: §a' + Bukkit.getOnlinePlayers().size() + ' §7players');
    player.sendMessage('');
    player.sendMessage('  §7Use §e/help §7for help');
    player.sendMessage('');
    player.sendMessage('§8§m                                           ');
    
    // Message to other players
    Bukkit.getOnlinePlayers().forEach(function(p) {
        if (p.getName() !== player.getName()) {
            p.sendMessage('§8[§a+§8] §7' + player.getName() + ' §a joined the server');
        }
    });
    
    Console.log(player.getName() + ' joined the server');
});

Console.log('PlayerJoinEvent handler loaded');

Player Quit Event

Triggered when player leaves server.

/**
 * PlayerQuitEvent - Player leaves server
 */
Events.on('PlayerQuitEvent', function(event) {
    var player = event.getPlayer();
    
    // Remove vanilla message
    event.quitMessage(null);
    
    // Custom message
    var Bukkit = Java.type('org.bukkit.Bukkit');
    Bukkit.getOnlinePlayers().forEach(function(p) {
        if (p.getName() !== player.getName()) {
            p.sendMessage('§8[§c-§8] §7' + player.getName() + ' §c left the server');
        }
    });
    
    Console.log(player.getName() + ' left the server');
});

Console.log('PlayerQuitEvent handler loaded');

Player Death Event

Triggered when player dies.

/**
 * PlayerDeathEvent - Player death
 */
Events.on('PlayerDeathEvent', function(event) {
    var entity = event.getEntity();
    var killer = event.getEntity().getKiller();
    
    // Check if killed by player
    if (killer !== null) {
        var message = '§c' + entity.getName() + ' §7 was killed by §c' + killer.getName();
        event.deathMessage(message);
        
        Console.log(entity.getName() + ' was killed by ' + killer.getName());
    } else {
        var message = '§c' + entity.getName() + ' §7 died';
        event.deathMessage(message);
        
        Console.log(entity.getName() + ' died');
    }
});

Console.log('PlayerDeathEvent handler loaded');

Chat Event

Triggered when sending chat message.

/**
 * AsyncPlayerChatEvent - Chat message
 */
Events.on('AsyncPlayerChatEvent', function(event) {
    var player = event.getPlayer();
    var message = event.getMessage();
    
    // Bad word filter
    var badWords = ['badword1', 'badword2', 'mat'];
    
    for (var i = 0; i < badWords.length; i++) {
        if (message.toLowerCase().indexOf(badWords[i]) !== -1) {
            event.setCancelled(true);
            player.sendMessage('§cPlease watch your language!');
            player.sendMessage('§7Violation: forbidden word');
            Console.log(player.getName() + ' used bad word: ' + badWords[i]);
            return;
        }
    }
    
    // Add prefix to message
    var format = '§e' + player.getName() + ' §7» §f' + message;
    event.setFormat(format);
});

Console.log('AsyncPlayerChatEvent handler loaded');

Damage Event

Triggered when taking damage.

/**
 * EntityDamageEvent - Taking damage
 */
Events.on('EntityDamageEvent', function(event) {
    var entity = event.getEntity();
    var damage = event.getDamage();
    
    // Logging
    Console.log(entity.getName() + ' took damage: ' + damage);
    
    // Example: can't die from low fall
    var cause = event.getCause();
    if (cause.toString() === 'FALL') {
        if (damage < 5) {
            event.setCancelled(true);
        }
    }
});

Console.log('EntityDamageEvent handler loaded');

Attack Event

Triggered when entity attacks another.

/**
 * EntityDamageByEntityEvent - Entity attack
 */
Events.on('EntityDamageByEntityEvent', function(event) {
    var damager = event.getDamager();
    var victim = event.getEntity();
    
    var Player = Java.type('org.bukkit.entity.Player');
    
    // Check if attacker is player
    if (damager instanceof Player) {
        Console.log(damager.getName() + ' attacked ' + victim.getName());
    }
});

Console.log('EntityDamageByEntityEvent handler loaded');

Bow Shoot Event

/**
 * EntityShootBowEvent - Bow shoot
 */
Events.on('EntityShootBowEvent', function(event) {
    var entity = event.getEntity();
    var item = event.getBow();
    
    Console.log(entity.getName() + ' is shooting a bow');
    
    // Check if player
    var Player = Java.type('org.bukkit.entity.Player');
    if (entity instanceof Player) {
        // Additional logic
    }
});

Console.log('EntityShootBowEvent handler loaded');

Block Place Event

/**
 * BlockPlaceEvent - Place block
 */
Events.on('BlockPlaceEvent', function(event) {
    var player = event.getPlayer();
    var block = event.getBlock();
    var type = block.getType();
    
    // Block certain blocks
    var blockedBlocks = ['TNT', 'LAVA', 'WATER'];
    
    for (var i = 0; i < blockedBlocks.length; i++) {
        if (type.toString() === blockedBlocks[i]) {
            event.setCancelled(true);
            player.sendMessage('§cCannot place: ' + type);
            Console.log(player.getName() + ' tried to place ' + type);
            return;
        }
    }
    
    Console.log(player.getName() + ' placed ' + type);
});

Console.log('BlockPlaceEvent handler loaded');

Block Break Event

/**
 * BlockBreakEvent - Break block
 */
Events.on('BlockBreakEvent', function(event) {
    var player = event.getPlayer();
    var block = event.getBlock();
    var type = block.getType();
    
    // Protect certain blocks
    var protectedBlocks = ['BEDROCK', 'COMMAND_BLOCK'];
    
    for (var i = 0; i < protectedBlocks.length; i++) {
        if (type.toString() === protectedBlocks[i]) {
            event.setCancelled(true);
            player.sendMessage('§cCannot break: ' + type);
            Console.log(player.getName() + ' tried to break ' + type);
            return;
        }
    }
    
    Console.log(player.getName() + ' broke ' + type);
});

Console.log('BlockBreakEvent handler loaded');

Region Enter Event (WorldGuard)

/**
 * PlayerMoveEvent - Player movement
 * Can be used to check region enter
 */
Events.on('PlayerMoveEvent', function(event) {
    var player = event.getPlayer();
    var from = event.getFrom();
    var to = event.getTo();
    
    // Check if position changed
    if (from.getBlockX() !== to.getBlockX() || 
        from.getBlockY() !== to.getBlockY() || 
        from.getBlockZ() !== to.getBlockZ()) {
        
        // Region check logic
        // WorldGuard API: event.getPlayer().inWorldRegion("region_name")
    }
});

Console.log('PlayerMoveEvent handler loaded');

Item Held Event

/**
 * PlayerItemHeldEvent - Item held change
 */
Events.on('PlayerItemHeldEvent', function(event) {
    var player = event.getPlayer();
    var newSlot = event.getNewSlot();
    var oldSlot = event.getPreviousSlot();
    
    var newItem = player.getInventory().getItem(newSlot);
    var oldItem = player.getInventory().getItem(oldSlot);
    
    Console.log(player.getName() + ' changed item: ' + oldSlot + ' -> ' + newSlot);
    
    // Example: check custom item
    if (newItem !== null && newItem.hasItemMeta()) {
        var meta = newItem.getItemMeta();
        if (meta.hasDisplayName() && meta.getDisplayName().indexOf('SWORD') !== -1) {
            player.sendMessage('§6You took the sword!');
        }
    }
});

Console.log('PlayerItemHeldEvent handler loaded');

Event Table

EventDescriptionExample File
PlayerJoinEventJoinwelcome_message.js
PlayerQuitEventQuitwelcome_message.js
AsyncPlayerChatEventChatevent_listener.js
PlayerDeathEventDeath-
EntityDamageByEntityEventAttackcustom_sword.js
PlayerItemHeldEventItem changecustom_sword.js
BlockPlaceEventPlace block-
BlockBreakEventBreak block-

Next Steps

StepDescription
CommandsCommand examples
SchedulerTask scheduling
ItemsCustom items

Last updated Apr 29, 2026, 6:39 AM
Edit