#LuckyBlocks by Glicz import: org.bukkit.loot.LootTables org.bukkit.loot.LootContext java.util.Random java.util.Arrays java.util.ArrayList org.bukkit.inventory.ItemStack options: #Nazwa LuckyBlocka name: &6LuckyBlock #Opis LuckyBlocka lore: "&aPostaw na ziemi,", "&aa następne zniszcz" and "&aaby otworzyć!" #Prefix wiadomości prefix: &6&lLuckyBlocks &8>> #NBT głowy LuckyBlocka nbt: Properties:{textures:[{Value:""eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTE5ZDI4YTg2MzJmYTRkODdjYTE5OWJiYzJlODhjZjM2OGRlZGQ1NTc0NzAxN2FlMzQ4NDM1NjlmN2E2MzRjNSJ9fX0=""}]} #Dźwięk otworzenia LuckyBoxa open-sound: entity.player.levelup #Dźwięk wydropienia zombie "Bob" bob-sound: entity.lightning_bolt.thunder #Dźwięk błędu error-sound: block.note_block.didgeridoo #Ta opcja odpowiada za włączenie domyślnego lootu default-loot: true #Cooldown przed następnym otworzeniem. Ustaw na 0 aby wyłączyć cooldown: 0.2 function addLoot(name: string, objects: objects): set {_i} to new ArrayList() loop {_objects::*}: {_i}.add(loop-value) set {luckyBlocks::lootTables::%{_name}%} to {_i} function setupBob(bob: entity): set display name of {_bob} to "&e&lBob" equip {_bob} with all diamond armor of protection 6 and unbreaking 3 set tool of {_bob} to a diamond sword of sharpness 6 and fire aspect 2 function loadDefaultLoot(): set {_list} to new ArrayList(Arrays.asList(LootTables.values())) loop {_list}.size() times: set {_lt} to LootTables.values()[loop-number].getLootTable() "%{_lt}%" contains "chest" set {_lt::text} to "%{_lt}%" replace "minecraft:chests/" and "village/" with "" in {_lt::text} set {luckyBlocks::lootTables::%{_lt::text}%} to {_lt} addLoot("lucky_sword", 1 of golden sword of sharpness 4 and unbreaking 4 named "&eLucky Sword") addLoot("lucky_bow", 1 of bow of power 3 and unbreaking 2 named "&eLucky Bow") addLoot("bob", zombie) function checkCooldown(p: player) :: boolean: if difference between {luckyBlocks::cooldown::%{_p}%} and now is less than {@cooldown} seconds: send action bar "&cMusisz odczekać {@cooldown} sekundy!" to {_p} play sound "{@error-sound}" with volume 1 and pitch 1 at {_p} for {_p} return true set {luckyBlocks::cooldown::%{_p}%} to now return false on load: clear {luckyBlocks::lootTables::*} if {@default-loot} is true: loadDefaultLoot() on break: nbt of event-block contains "{@nbt}" if checkCooldown(player) is true: cancel event stop cancel drops set {_r} to random integer between 0 and (size of {luckyBlocks::lootTables::*} - 1) set {_i} to 0 loop {luckyBlocks::lootTables::*}: if {_i} is {_r}: set {_lootTable::loot} to loop-value set {_n} to loop-index replace "_" with " " in {_n} set {_n} to {_n} in strict proper case set {_lootTable::name} to {_n} add 1 to {_i} if {_lootTable::loot} is not set: send action bar "&cNie odnaleziono żadnego lootu!" to player play sound "{@error-sound}" with volume 1 and pitch 1 at player for player stop set {_lootTable::loot::items} to {_lootTable::loot}.populateLoot(new Random(5), new LootContext.Builder(event-location).luck(0.5F).build()) send action bar "&aBrawo! Wydropiłeś: %{_lootTable::name}%" to player play sound "{@open-sound}" with volume 1 and pitch 1 at player for player set {_lootTableObjects} to {_lootTable::loot::items} ? {_lootTable::loot} loop {_lootTableObjects}.size() times: set {_object} to {_lootTableObjects}.get(loop-number - 1) if {_object} is itemtype or material: drop {_object} at event-location else: spawn {_object} at event-location if "%{_lootTable::name}%" in lower case is "bob": "%{_object}%" is "zombie" send title "☠" to player play sound "{@bob-sound}" with volume 1 and pitch 1 at player for player setupBob(last spawned zombie) on tab complete: event-string is "/luckyblocks" or "/luckyblock" or "/lb" add "help" to {_c::*} add "give" to {_c::*} if player has permission "luckyblocks.give" set tab completions for position 1 to {_c::*} command /luckyblocks [] []: aliases: luckyblock, lb trigger: if arg-1 is "give": if player doesn't have permission "luckyblocks.give": send "{@prefix} &cNie masz uprawnień!" stop if arg-2 is not set: send "{@prefix} &cPodaj liczbę!" stop give arg-2 of skull of player named "{@name}" with lore {@lore} with nbt "{SkullOwner:{Id:""b7e2f209-03a5-4b06-be9e-1941917861de"",{@nbt}}}" to player else if arg-1 is "help": send "help" else: send "{@prefix} &cPodaj poprawny argument! Użyj '/luckyblock help&c' aby uzyskać pomoc"