#DISCORD: eeeeebcv #Zezwalam na modyfikację w celach własnych, zakaz publikowania jako swojego, zakaz kopiowania #Wersja: 1.0 #═══════════════════════════════════════════════════════════════════ #⚙️CONFIG #═══════════════════════════════════════════════════════════════════ options: permisja: admin.perm nazwa: Skrzynia skrzynia1: "&7&lZwykła" skrzynia2: "&a&lRzadka" skrzynia3: "&b&lBardzo rzadka" skrzynia4: "&5&lEpicka" skrzynia5: "&6&lLegendarna" klucz1: "&7Zwykły klucz" klucz2: "&aRzadki klucz" klucz3: "&bBardzo rzadki klucz" klucz4: "&5Epicki klucz" klucz5: "&6Legendarny klucz" typ_klucza: tripwire hook of unbreaking 10 typ_klucza_antyplace: tripwire hook typ_skrzyni: light gray shulker box or lime shulker box or light blue shulker box or purple shulker box or yellow shulker box or chest hologram_linia1: "&7ʟᴘᴍ ᴀʙʏ ᴘᴏᴅᴇᴊʀᴢᴇᴄ" hologram_linia2: "&7ᴘᴘᴍ ᴀʙʏ ᴏᴛᴡᴏʀᴢʏᴄ" message_ustaw_error: "&cMusisz patrzeć na %{typskrzyni}%!" prefix: &8[&6YCHEST&8] noKeySound: entity.villager.no #ustawia dźwięk w przypadku braku klucza noKeyTitle: "&cNie posiadasz klucza!" noKeySubtitle: "&7Zakup klucz na naszym discordzie" sila_odpychania: 0.9 losowanie_dzwiek: block.note_block.harp losowanie_success_dzwiek: entity.item.pickup empty_chest_message: "&cSkrzynia jest pusta! Zwracam klucz" ilosc_przesuniec: 10 czas_miedzy_przesuwaniem: 2 ticks pitch_losowania: 0 # 0 - normalny dźwięk keyall_title: "&bDarmowe klucze!" keyall_subtitle: "&b%player% &7rozdał &6%{_ilosc}% &7x %{_nazwafind}%" #🌍JĘZYK W KOMENDZIE (Jeśli wolisz polski zmień na polski ;D) usuwanie: del ustawianie: set przenoszenie: move pomoc: help edytowanie: edit resetowanie: reset lista: list #🌈OBRAMOWANIE #sloty -1 oznaczają że nie chcemy obramowania, w takim przypadku należy również wpisać item w obramowaniu jako air (powietrze) sloty_obramowanie_1: 0, 2, 4, 6, 8, 18, 26, 36, 38, 40, 42, 44 sloty_obramowanie_2: 1, 3, 5, 7, 9, 17, 27, 35, 37, 39, 41, 43 obramowanie_1: purple stained glass pane named "&7" obramowanie_2: magenta stained glass pane named "&7" #═══════════════════════════════════════════════════════════════════ #🛡️Ważne zmienne (Przyda się jeśli chcesz ingerować w kod) #Pomijając zmienne które są w on load #═══════════════════════════════════════════════════════════════════ #{-skrzyniaEdit::%player%} - Sprawdza którą skrzynkę gracz edytuje #═══════════════════════════════════════════════════════════════════ #🔋Ładowanie skryptu #═══════════════════════════════════════════════════════════════════ on load: set {typskrzyni} to {@typ_skrzyni} set {skrzynia::1} to {@skrzynia1} set {skrzynia::2} to {@skrzynia2} set {skrzynia::3} to {@skrzynia3} set {skrzynia::4} to {@skrzynia4} set {skrzynia::5} to {@skrzynia5} set {klucz::1} to {@klucz1} set {klucz::2} to {@klucz2} set {klucz::3} to {@klucz3} set {klucz::4} to {@klucz4} set {klucz::5} to {@klucz5} set {klucze::*} to uncoloured ({@klucz1}, {@klucz2}, {@klucz3}, {@klucz4}, {@klucz5}) #═══════════════════════════════════════════════════════════════════ #💻Komendy #═══════════════════════════════════════════════════════════════════ command /skrzynia [] []: aliases: yc, ychest permission: {@permisja} trigger: set {_loc} to location of target block set {_x} to x location of target block set {_y} to y location of target block set {_z} to z location of target block if arg 2 <= 5: if arg 2 > 0: if arg 1 is "{@ustawianie}": if target block is {@typ_skrzyni}: loop 5 times: if {skrzynia::%loop-value%::lokalizacja} is {_loc}: send "&bJuż istnieje skrzynia w tym miejscu!" stop #informacje o bloku send "&6{@prefix}" send "&6Typ skrzyni: %{skrzynia::%arg 2%}%" send "&6Blok: &7%type of target block%" send "&6Nowa lokalizacja: &b%{_x}%, %{_y}%, %{_z}%" send action bar "&6Ustawiłeś nową skrzynie" #ustawianie lokalizacji skrzyni set {skrzynia::%arg 2%::lokalizacja} to {_loc} #hologram delete hologram with id "%arg 2%" wait 1 tick create hologram "%{skrzynia::%arg 2%}% {@nazwa}" with id "%arg 2%" at location({_x}, {_y} + 1.0,{_z}, world("world")) append {@hologram_linia1} to hologram with id "%arg-2%" append {@hologram_linia2} to hologram with id "%arg-2%" if arg 1 is "{@przenoszenie}": if target block is {@typ_skrzyni}: loop 5 times: if {skrzynia::%loop-value%::lokalizacja} is {_loc}: send "&cNie możesz ustawić dwóch skrzyni w tym samym miejscu!" stop set {skrzynia::%arg 2%::lokalizacja} to {_loc} send "&bPrzeniosłeś skrzynię na kordy: %{_x}%, %{_y}%, %{_z}%" delete hologram with id "%arg 2%" wait 1 tick create hologram "%{skrzynia::%arg 2%}% {@nazwa}" with id "%arg 2%" at location({_x}, {_y} + 1.0,{_z}, world("world")) append {@hologram_linia1} to hologram with id "%arg-2%" append {@hologram_linia2} to hologram with id "%arg-2%" if arg 1 is "{@edytowanie}": loop 5 times: if {skrzynia::%loop-value%::lokalizacja} is {_loc}: set {_chest} to loop-value if {_chest} is not set: send "&cMusisz patrzeć na skrzynię!" stop set {-skrzyniaEdit::%player%} to {_chest} editChest({_chest}, player) if arg 1 is "{@usuwanie}": if target block is {@typ_skrzyni}: loop 5 times: if {skrzynia::%loop-value%::lokalizacja} is {_loc}: delete hologram with id "%loop-value%" #usuwanie hologramu delete {skrzynia::%loop-value%::*} #usuwanie zawartości i lokalizacji stop else: send "&cMusisz patrzeć na skrzynie!" stop if arg 1 is "{@resetowanie}": loop 5 times: delete hologram with id "%loop-value%" #usuwanie hologramu delete {skrzynia::%loop-value%::*} #usuwanie zawartości i lokalizacji send "&bUsunąłeś &nwszystkie &bskrzynie!" send "&8[&7LOG&8] &b%player% usunął &nwszystkie skrzynie" to console if arg 1 is "{@lista}": loop 5 times: set {_loc} to {skrzynia::%loop-value%::lokalizacja} if {_loc} is set: send "&7Typ: %{skrzynia::%loop-value%}%" to player send "&7Kordynaty: &b%x location of {_loc}%, %y location of {_loc}%, %z location of {_loc}%" to player if arg 1 is "{@pomoc}": send "&6Skrypt: {@prefix}" to player send "&6/skrzynia {@ustawianie} &e[liczba] &8- &7ustawia skrzynie" to player send "&6/skrzynia {@edytowanie} &8- &7edytuje skrzynie" to player send "&6/skrzynia {@przenoszenie} &e[liczba] &8- &7przenosi skrzynie" to player send "&6/skrzynia {@usuwanie} &8- &7usuwa skrzynie" to player send "&6/skrzynia {@resetowanie} &8- &7usuwa &nwszystkie skrzynie" to player send "&6/skrzynia {@lista} &8- &7wyświetla kordy wszystkich skrzyń" to player send "&6/klucz Gracz/All typ-klucza [ilosc] &8- &7rozdaje klucz" to player send "&7Ustawianie szansy: &nPPM + SHIFT &7w trakcie &nedytowania skrzyni" to player if arg 1 is "info": send "&6Autor skryptu: Alan_Jestem" to player send "&6Wersja: 1.0" to player send "&6Discord: eeeeebcv" to player command /klucz []: permission: {@permisja} trigger: set {_ilosc} to arg 3 set {_nazwa} to arg 2 loop {klucz::*}: set {_klucz} to uncoloured loop-value if {_nazwa} contains {_klucz}: set {_nazwafind} to loop-value if {_nazwafind} is not set: stop if arg 1 is "all": loop all players: give {_ilosc} of {@typ_klucza} named {_nazwafind} to loop-player send title {@keyall_title} with subtitle {@keyall_subtitle} to all players else: set {_gracz} to arg 1 if {_gracz} is online: give {_ilosc} of {@typ_klucza} named {_nazwafind} to {_gracz} else: send "&cGracz %arg 1% jest offline." #═══════════════════════════════════════════════════════════════════ #📮Otwieranie skrzyni #═══════════════════════════════════════════════════════════════════ on right click on {@typ_skrzyni}: loop 5 times: if {skrzynia::%loop-value%::lokalizacja} is location of event-block: cancel event set {-aktywnaSkrzynia::%player%} to loop-value if player is sneaking: previewChest(loop-value, player) else: losuj(loop-value, player) stop #═══════════════════════════════════════════════════════════════════ #⌚FUNKCJE #═══════════════════════════════════════════════════════════════════ function previewChest(skrzynia: integer, gracz: player): set {_chest} to chest inventory with 5 rows named "%{skrzynia::%{_skrzynia}%}% {@nazwa}" if {@obramowanie_1} is not air: set slot ({@sloty_obramowanie_1}) of {_chest} to {@obramowanie_1} if {@obramowanie_2} is not air: set slot ({@sloty_obramowanie_2}) of {_chest} to {@obramowanie_2} loop 21 times: set {_liczba} to loop-number set {_wiersz} to floor(({_liczba} - 1) / 7) # odpowiednik div set {_kolumna} to ({_liczba} - 1) - ({_wiersz} * 7) # odpowiednik mod set {_slot} to {_kolumna} + ({_wiersz} * 9) + 10 set {_item} to {skrzynia::%{_skrzynia}%::item::%{_liczba}%} set {_szansa} to {skrzynia::%{_skrzynia}%::item::%{_liczba}%::szansa} if {_szansa} is not set: set {_szansa} to 0 if {_item} is set: set slot {_slot} of {_chest} to {_item} with lore "&bSzansa na ten item to: %{_szansa}% %%" set slot 41 of {_chest} to lime dye named "&aLosowanie z animacją" set slot 39 of {_chest} to red dye named "&cLosowanie bez animacji" open {_chest} to {_gracz} function editChest(skrzynia: integer, gracz: player): set {_chest} to chest inventory with 3 rows named "&6Edytujesz: %{skrzynia::%{_skrzynia}%}% {@nazwa}" loop 27 times: set {_item} to {skrzynia::%{_skrzynia}%::item::%loop-value%} if {_item} is set: set {_szansa} to {skrzynia::%{_skrzynia}%::item::%loop-value%::szansa} if {_szansa} is not set: set {_szansa} to 0 set slot (loop-value - 1) of {_chest} to {_item} with lore "&bUstawiona szansa: %{_szansa}% %%" open {_chest} to {_gracz} function noKey(skrzynia: integer, gracz: player): set {_name} to name of {_gracz}'s tool if {_name} doesn't contain {klucz::%{_skrzynia}%}: push {_gracz} backwards at speed {@sila_odpychania} play sound "{@noKeySound}" to {_gracz} set {-noKey::%{_gracz}%} to true send title {@noKeyTitle} with subtitle {@noKeySubtitle} to {_gracz} send "&7Pamiętaj aby mieć klucz w ręce, nawet przy otwieraniu w GUI" to {_gracz} stop else: delete {-noKey::%{_gracz}%} function noAnimLosuj(skrzynia: integer, gracz: player): noKey({_skrzynia}, {_gracz}) if {-noKey::%{_gracz}%} is not set: loop {skrzynia::%{_skrzynia}%::item::*}: loop {skrzynia::%{_skrzynia}%::item::%loop-index-1%::szansa} times: add loop-value-1 to {_itemy::*} if {_gracz} can't hold 1 wooden pickaxe: #sprawdzenie pełnego slotu send "&cMasz pełny ekwipunek!" to {_gracz} stop if {_itemy::*} is set: remove {@typ_klucza} named {klucz::%{_skrzynia}%} from {_gracz} set {_item} to random element out of {_itemy::*} play sound "{@losowanie_success_dzwiek}" to {_gracz} give {_item} to {_gracz} else: send {@empty_chest_message} to {_gracz} function losuj(skrzynia: integer, gracz: player): noKey({_skrzynia}, {_gracz}) if {-noKey::%{_gracz}%} is not set: set {_chest} to chest inventory with 3 rows named "&6Losowanie: %{skrzynia::%{_skrzynia}%}% {@nazwa}" loop {skrzynia::%{_skrzynia}%::item::*}: loop {skrzynia::%{_skrzynia}%::item::%loop-index-1%::szansa} times: add loop-value-1 to {_itemy::*} if {_gracz} can't hold 1 wooden pickaxe: #sprawdzenie pełnego slotu send "&cMasz pełny ekwipunek!" to {_gracz} stop if {_itemy::*} is set: remove {@typ_klucza} named {klucz::%{_skrzynia}%} from {_gracz} else: send {@empty_chest_message} to {_gracz} stop set slot (integers between 0 and 8) of {_chest} to orange stained glass pane named "&7" set slot (integers between 18 and 26) of {_chest} to orange stained glass pane named "&7" set slot 22 of {_chest} to hopper named "&bTwój drop" set slot 4 of {_chest} to hopper named "&bTwój drop" loop 9 times: set {_item} to random element out of {_itemy::*} set slot loop-value + 8 of {_chest} to {_item} set {_pitch} to 0 play sound "{@losowanie_dzwiek}" with pitch {_pitch} to {_gracz} open {_chest} to {_gracz} loop {@ilosc_przesuniec} times: wait {@czas_miedzy_przesuwaniem} set {_item} to random element out of {_itemy::*} loop 9 times: set {_slot} to slot (loop-value-2 + 8) of {_chest} set {_newslot} to (loop-value-2 + 7) if {_newslot} is not 8: set slot {_newslot} of {_chest} to {_slot} set slot 17 of {_chest} to {_item} add {@pitch_losowania} to {_pitch} play sound "{@losowanie_dzwiek}" with pitch {_pitch} to {_gracz} open {_chest} to {_gracz} wait 20 ticks play sound "{@losowanie_success_dzwiek}" to {_gracz} set {_item} to slot 13 of {_chest} if name of {_item} contains "Klucz": send "&b%{_gracz}% &7wylosował %name of slot 13 of {_chest}%" to all players stop #═══════════════════════════════════════════════════════════════════ #🔒Blokada wyciągania, Edytowanie, Nadawanie szans #═══════════════════════════════════════════════════════════════════ on inventory close: if event-inventory is not player's inventory: set {_name} to uncoloured name of event-inventory if {_name} contains "Edytujesz:": loop 45 times: set {_slot} to slot loop-value - 1 of event-inventory if {_slot} is not air: set {_lore::*} to lore of {_slot} set {_} to "%size of {_lore::*}%" parsed as integer clear line {_} of lore of {_slot} set {skrzynia::%{-skrzyniaEdit::%player%}%::item::%loop-value%} to {_slot} else: delete {skrzynia::%{-skrzyniaEdit::%player%}%::item::%loop-value%} delete {skrzynia::%{-skrzyniaEdit::%player%}%::item::%loop-value%::szansa} if {-skrzyniaEditSzansa::%player%} is not set: send "&bZapisano skrzynie" if {_name} contains "&6Losowanie zakończone": previewChest({-aktywnaSkrzynia::%player%}, player) on inventory click: if event-inventory is not player's inventory: set {_name} to uncoloured name of event-inventory if name of event-inventory contains "{@nazwa}": if {_name} doesn't contain "Edytujesz:": cancel event if clicked slot is 41: losuj({-aktywnaSkrzynia::%player%}, player) if clicked slot is 39: noAnimLosuj({-aktywnaSkrzynia::%player%}, player) else: if click type is right mouse button with shift: set {-skrzyniaEditSzansa::%player%} to index of event-slot + 1 cancel event close player's inventory send "&bNapisz nową szansę itemu (0-100)" on chat: if player has permission "{@permisja}": if {-skrzyniaEditSzansa::%player%} is set: set {_message} to message parsed as integer if {_message} is set: if {_message} >= 0: if {_message} <= 100: cancel event set {skrzynia::%{-skrzyniaEdit::%player%}%::item::%{-skrzyniaEditSzansa::%player%}%::szansa} to {_message} editChest({-skrzyniaEdit::%player%}, player) wait 1 tick send "&bUstawiłeś szansę itemu!" delete {-skrzyniaEditSzansa::%player%} else: send "&bSzansa nie może przekroczyć 100%%" else: send "&bSzansa nie może być na minusie" else: send "&cJesteś w trakcie ustawiania szansy napisz liczbę!!!" cancel event on block place of tripwire hook: set {_ilosc} to amount of player's tool set {_klucz} to player's tool if {_ilosc} of {_klucz} is {_ilosc} of {@typ_klucza}: cancel event else: send "%{_ilosc} of {_klucz}% is {@typ_klucza}" #═══════════════════════════════════════════════════════════════════ #🫡TAB COMPLETERY #═══════════════════════════════════════════════════════════════════ on tab complete of "/klucz": if tab argument 1 is set: set tab completions for position 2 to {klucze::*} on tab complete of "/skrzynia" or "/yc" or "ychest": if tab argument 2 is not set: set tab completions for position 1 to "{@ustawianie}","{@edytowanie}","{@usuwanie}", "{@przenoszenie}", "info", "{@pomoc}", "{@resetowanie}", "{@lista}" if tab argument 3 is not set: if tab argument 1 is not "info" or "{@pomoc}" or "{@edytowanie}" or "{@usuwanie}" or "{@lista}": set tab completions for position 2 to "1","2","3","4","5"