diff --git a/scripts/sit.sk b/scripts/sit.sk new file mode 100644 index 0000000..0bd62fe --- /dev/null +++ b/scripts/sit.sk @@ -0,0 +1,154 @@ +on join: + if {%player%::sit} is not set: + set {%player%::sit} to true + +function contains(list: objects, check: object) :: boolean: + loop {_list::*}: + if loop-value is {_check}: + return true + return false + +command /position: + trigger: + loop 1000 times: + send "%x of velocity of player%" + wait 1 tick + +command /sit []: + trigger: + player's world is not "world-you-dont-want-sit-working" + + set {_cont} to true + + loop all entities in radius 1.1 around location of block below player: + if loop-entity is a pig: + send "&6 Система &8| &7Хтось вже сидить на цьому місці (можливо, ви самі)" to player + stop + + {_cont} is set + + if x of velocity of player or z of velocity of player is not 0: + send "&6 Система &8| &7Не можна сідати під час руху." + stop + + if y of velocity of player is less than -0.09: + send "&6 Система &8| &7Не можна сідати під час руху." + stop + else if y of velocity of player is more than -0.07: + send "&6 Система &8| &7Не можна сідати під час руху." + stop + + if vehicle of player is set: + send "&6 Система &8| &7Не можна сісти знову, ви вже сидите." to player + stop + + set {_spawnloc} to location of player + set y-coordinate of {_spawnloc} to y-coordinate of {_spawnloc}-0.9 + + spawn 1 pig at {_spawnloc} + + set name of last spawned pig to "&fСидіння" + set {_pig} to spawned pig + set health of {_pig} to 1 + + Add "{NoAI:1}" to entity nbt of {_pig} + Add "{NoGravity:1}" to entity nbt of {_pig} + Add "{Invulnerable:1}" to entity nbt of {_pig} + Add "{Silent:1}" to entity nbt of {_pig} + + apply potion of invisibility without any particles to {_pig} for 9 days + make the player ride {_pig} + +on death: + name of victim is "&fСидіння" + clear drops + +on vehicle exit: + name of vehicle of player is "&fСидіння": + delete vehicle of player + + set {_w} to world of player + set {_loc} to location of player + set y-coordinate of {_loc} to y-coordinate of {_loc}+0.6 + + wait a tick + + {_w} is player's world + teleport player to {_loc} + +command /togglesit: + trigger: + if {%player%::sit} is true: + set {%player%::sit} to false + send "&6 Налаштування &8| &7Сидіння при кліку на сходах &cвимкнено&7." + else: + set {%player%::sit} to true + send "&6 Налаштування &8| &7Сидіння при кліку на сходах &aувімкнено&7." + +on rightclick: + if player is not sneaking: + if clicked block is set: + if minecraft name of clicked block is "minecraft:oak_stairs" or "minecraft:stone_stairs" or "minecraft:brick_stairs" or "minecraft:stone_brick_stairs" or "minecraft:nether_brick_stairs" or "minecraft:sandstone_stairs" or "minecraft:spruce_stairs" or "minecraft:birch_stairs" or "minecraft:jungle_stairs" or "minecraft:quartz_stairs" or "minecraft:acacia_stairs" or "minecraft:dark_oak_stairs" or "minecraft:red_sandstone_stairs" or "minecraft:purpur_stairs": + if {%player%::sit} is true: + if data value of clicked block is between 0 and 3: + if block above event-block is air: + set {_cont} to true + + loop all entities in radius 1.1 around location of block below player: + if loop-entity is a pig: + send "&6 Система &8| &7Хтось вже сидить на цьому місці (можливо, ви самі)" to player + stop + + {_cont} is set + + if y of velocity of player is less than -0.09: + send "&6 Система &8| &7Не можна сідати під час руху." + stop + else if y of velocity of player is more than -0.07: + send "&6 Система &8| &7Не можна сідати під час руху." + stop + + if vehicle of player is set: + send "&6 Система &8| &7Не можна сісти знову, ви вже сидите." to player + stop + + if "%clicked block%" contains "southward": + set {_stairloc} to -180 + else if "%clicked block%" contains "westward": + set {_stairloc} to -90 + else if "%clicked block%" contains "northward": + set {_stairloc} to 0 + else: + set {_stairloc} to 90 + + set {_location} to location of the clicked block + set {_location}'s pitch to 0 + set {_location}'s yaw to {_stairloc} + + teleport player to {_location} + wait 2 ticks + + set {_spawnloc} to location of player + set y-coordinate of {_spawnloc} to y-coordinate of {_spawnloc}-0.9 + + spawn 1 pig at {_spawnloc} + set name of last spawned pig to "&fСидіння" + set {_pig} to spawned pig + set health of {_pig} to 1 + + Add "{NoAI:1}" to entity nbt of {_pig} + Add "{NoGravity:1}" to entity nbt of {_pig} + Add "{Invulnerable:1}" to entity nbt of {_pig} + Add "{Silent:1}" to entity nbt of {_pig} + + apply potion of invisibility without any particles to {_pig} for 9 days + make the player ride {_pig} + else: + send "&6 Система &8| &7Місце для сидіння заблоковано зверху." + stop + else: + send "&6 Система &8| &7Не можна сісти догори дригом." + stop + +on load: + send formatted "&6 Система &8| &7Модуль &aсидіння &7завантажено." to console \ No newline at end of file