BAirDrop
  • 👋Начало
  • Начало
    • 💡Краткая настройка
  • Руководство
    • 📪Настройки аирдропов
    • 📎Ивенты
      • 📁Примеры слушателей
        • Документация для создания босс-бара
      • ⌨️Плейсхолдеры
    • 🔨Настройки генератора
    • 🎊Эффекты
    • 🏠Schematics
    • 📜 js скрипты
    • Авто зачарование
Powered by GitBook
On this page
  1. Руководство

📜 js скрипты

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

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

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

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

  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' 

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

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);
            }
        }
    }
}

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

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

  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

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

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

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

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На Вас был наложен эффект свечения!");
}

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

var Material = Packages.org.bukkit.Material;
if(player.getEquipment().getHelmet().getType() != Material.NETHERITE_HELMET) {
    player.getWorld().strikeLightning(player.getLocation());
}
PreviousSchematicsNextАвто зачарование

Last updated 2 years ago