📜 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());
}
Last updated