> For the complete documentation index, see [llms.txt](https://by1337-developers.gitbook.io/bairdrop1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://by1337-developers.gitbook.io/bairdrop1/rukovodstvo/js-skripty.md).

# 📜 js скрипты

Скрипт который поджигает всех инвизников в радиусе 10 блоков

```javascript
var PotionEffectType = Packages.org.bukkit.potion.PotionEffectType; // Импортируем нужные библиотеки

if(player.hasPotionEffect(PotionEffectType.INVISIBILITY)){ // Если у игрока есть эффект невидимости
    player.setFireTicks(600); // Поджигаем его на 600 тиков (30 сек) 
}
```

Использование

```yaml
  fire:
    description: '&fПоджигает всех инвизников в радиусе 10 блоков'
    event: 'TIMER'
    requirement:
      check-1:
        type: 'STRING_CHECK'
        input: '{airdrop-is-start} == true'         
      check-3:
        type: 'NUMERICAL_CHECK'
        input: '{time-to-open} % 5 == 0'  
    commands:
      - '[NEAR-PLAYERS=10] {CALL-fire_2}'     
    
  fire_2:
    description: '&fПоджигает всех инвизников в радиусе 10 блоков'
    event: 'NONE'    
    commands:
      - '[RUN_JS=Fire.js] param(player=player)-scheduler' 
```

Скрипт который коцает броню игрокам, использовать по аналогии со скриптом выше

```javascript
var ItemStack = Packages.org.bukkit.inventory.ItemStack;
var Damageable = Packages.org.bukkit.inventory.meta.Damageable;

var setDamage = 10; //сколько прочности снимать за раз

for (var x = 36; x <= 39; x++) {
    var itemStack = player.getInventory().getItem(x);
    if(itemStack != null){
        var itemMeta = itemStack.getItemMeta();
        if (itemMeta != null && itemMeta instanceof Damageable) {
            var damage = itemMeta.getDamage();
            var maxDurability = itemStack.getType().getMaxDurability();
            if(maxDurability - (damage + setDamage) <= 0){
                player.getInventory().setItem(x, null);
            }else{
                itemMeta.setDamage(damage + setDamage);
                itemStack.setItemMeta(itemMeta);
            }
        }
    }
}
```

Скрипт на многоразовые ключи для открытия аирдропа&#x20;

Использовать вместо этого слушателя

```yaml
  chest-closed:
    description: '&fОтправляет игроку сообщение что аирдроп закрыт'
    event: 'CLICK_CLOSE'
    commands:
      - '[MESSAGE] {air-name} &cзакрыт!'
      - '[SOUND] BLOCK_BARREL_CLOSE' 
#новый
  chest-closed:
    description: '&fОтправляет игроку сообщение что аирдроп закрыт'
    event: 'CLICK_CLOSE'
    commands:
      - '[RUN_JS=open.js] param(player=player, airDrop=airDrop)-scheduler'
```

getKey.js

```javascript
var ItemStack = Packages.org.bukkit.inventory.ItemStack;
var Material = Packages.org.bukkit.Material;
var NamespacedKey = Packages.org.bukkit.NamespacedKey;
var PersistentDataType = Packages.org.bukkit.persistence.PersistentDataType;
var Enchantment = Packages.org.bukkit.enchantments.Enchantment;
var ItemFlag = Packages.org.bukkit.inventory.ItemFlag;
var Message = Packages.org.by1337.bairdrop.util.Message;
var List = Packages.java.util.List;

var opening = 3; 

var itemStack = new ItemStack(Material.TRIPWIRE_HOOK);
var im = itemStack.getItemMeta();
im.getPersistentDataContainer().set(NamespacedKey.minecraft("drop_key"), PersistentDataType.INTEGER, java.lang.Integer.valueOf(opening));

im.addEnchant(Enchantment.ARROW_DAMAGE, 1, false);
im.addItemFlags(ItemFlag.HIDE_ENCHANTS);
im.setDisplayName(Message.messageBuilder("&aКлюч от аирдропа"));
im.setLore(List.of(Message.messageBuilder("&7Этот ключ позволяет открыть аирдроп"), Message.messageBuilder("&7Осталось: " + opening + " открытий")));
itemStack.setItemMeta(im);
player.getInventory().addItem(itemStack);
```

open.js

```javascript
var ItemStack = Packages.org.bukkit.inventory.ItemStack;
var NamespacedKey = Packages.org.bukkit.NamespacedKey;
var PersistentDataType = Packages.org.bukkit.persistence.PersistentDataType;
var Message = Packages.org.by1337.bairdrop.util.Message;
var List = Packages.java.util.List;

var itemStack = player.getInventory().getItemInMainHand();
var im = itemStack.getItemMeta();
if(im != null && im.getPersistentDataContainer().has(NamespacedKey.fromString("drop_key"), PersistentDataType.INTEGER)){
	var x = im.getPersistentDataContainer().get(NamespacedKey.fromString("drop_key"), PersistentDataType.INTEGER);
	if(x > 0){
		x -= 1;
		airDrop.unlock();
		im.setLore(List.of(Message.messageBuilder("&7Этот ключ позволяет открыть аирдроп"), Message.messageBuilder("&7Осталось: " + x + " открытий")));
		im.getPersistentDataContainer().set(NamespacedKey.minecraft("drop_key"), PersistentDataType.INTEGER, java.lang.Integer.valueOf(x));
		
		Message.sendMsg(player, "&aАирдроп успешно открыт!");
		Message.sendSound(player, "BLOCK_BEACON_POWER_SELECT");
		Message.sendAllMsg(airDrop.replaceInternalPlaceholder("&7Игрок " + player.getName() + " открыл {air-name}"));
        if(itemStack.getAmount() > 1){
			var itemStack1 = itemStack.clone();
			itemStack.setAmount(itemStack.getAmount() -1);
			itemStack1.setAmount(1);
			itemStack1.setItemMeta(im);
			if (x > 0) {
				player.getInventory().addItem(itemStack1);
			}
        }else {
			itemStack.setItemMeta(im);
			if (x == 0){
				player.getInventory().remove(itemStack);
			}
		}
	}else {
		Message.sendMsg(player, airDrop.replaceInternalPlaceholder("{air-name} &cзакрыт!"));
		Message.sendSound(player, "BLOCK_BARREL_CLOSE");
		player.getInventory().remove(itemStack);
	}
}else{
	Message.sendMsg(player, airDrop.replaceInternalPlaceholder("{air-name} &cзакрыт!"));
	Message.sendSound(player, "BLOCK_BARREL_CLOSE");
}
```

для получения ключа используйте /bair js getKey.js

Скрипт который накладывает эффект свечения на игрока, не работает в асинхронном потоке

```javascript
var PotionEffectType = Packages.org.bukkit.potion.PotionEffectType;
var PotionEffect = Packages.org.bukkit.potion.PotionEffect;
var Message = Packages.org.by1337.bairdrop.util.Message;

if(player.hasPotionEffect(PotionEffectType.INVISIBILITY) && !player.hasPotionEffect(PotionEffectType.GLOWING)){
    player.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 600, 0));
    Message.sendMsg(player, "&fНа Вас был наложен эффект свечения!");
}
```

Скрипт который бьёт игрока молнией если на нём нет незеритового шлема.

```javascript
var Material = Packages.org.bukkit.Material;
if(player.getEquipment().getHelmet().getType() != Material.NETHERITE_HELMET) {
    player.getWorld().strikeLightning(player.getLocation());
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://by1337-developers.gitbook.io/bairdrop1/rukovodstvo/js-skripty.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
