# -------------------------------------------------- # SkArmorEvent v. 1.2 (1.13.2+) # Skrypt na eventy wywołujące się przy zakładaniu i zdejmowaniu zbroi # # by Kormic # -------------------------------------------------- import: org.bukkit.event.block.BlockDispenseArmorEvent custom event "onArmorEquip": pattern: sk(ae|ArmorEvent) armo[u]r (equip|wear) event-values: player, item check: continue custom event "onArmorUnequip": pattern: sk(ae|ArmorEvent) armo[u]r un(equip|wear) event-values: player, item check: continue function skArmorEventCheckArmor(p: player, i: item) :: boolean: {_i} is not any armor: return false if {_i} is any helmet: {_p}'s helmet is not air return false else if {_i} is any chestplate: {_p}'s chestplate is not air return false else if {_i} is any leggings: {_p}'s leggings is not air return false else if {_i} is any boots: {_p}'s boots is not air return false return true function skArmorEventHotbarButtonCheckArmor(p: player, i: item type, s: slot, n: number) :: boolean: slot {_n} of {_p}'s inventory is {_i} set {_hb} to "%slot {_n} of {_p}'s inventory%" parsed as item if skArmorEventIsCancelled({_p}, {_hb}, "onArmorEquip") is true: return true {_s} is not air set {_hb} to {_s} if skArmorEventIsCancelled({_p}, {_hb}, "onArmorUnequip") is true: return true return false function skArmorEventIsCancelled(p: player, i: item, n: text) :: boolean: set {_e::player} to {_p} set {_e::item} to {_i} set {_event} to custom event "%{_n}%" with {_e::*} call event {_event} if {_event} is cancelled: return true return false on right click: clicked block is not interactable set {_i} to player's tool if skArmorEventCheckArmor(player, {_i}) is false: stop if skArmorEventIsCancelled(player, {_i}, "onArmorEquip") is true: cancel event on inventory click: clicked inventory is player's inventory player's current inventory's type is crafting table inventory if click type is left mouse button or right mouse button: clicked slot is between 36 and 39 set {_i} to "%event-slot%" parsed as item if player's cursor slot is any armor: set {_i} to player's cursor slot if skArmorEventIsCancelled(player, {_i}, "onArmorEquip") is true: cancel event else if player's cursor slot is air: {_i} is not air if skArmorEventIsCancelled(player, {_i}, "onArmorUnequip") is true: cancel event else if click type is left mouse button with shift or right mouse button with shift: set {_i} to "%event-slot%" parsed as item if clicked slot is between 36 and 39: {_i} is not air if skArmorEventIsCancelled(player, {_i}, "onArmorUnequip") is true: cancel event if skArmorEventCheckArmor(player, {_i}) is false: stop if skArmorEventIsCancelled(player, {_i}, "onArmorEquip") is true: cancel event else if click type is number key: set {_i} to "%event-slot%" parsed as item if clicked slot is between 36 and 39: if {_i} is not air: slot (hotbar button) of player's inventory is air if skArmorEventIsCancelled(player, {_i}, "onArmorUnequip") is true: cancel event stop if clicked slot is 39: if skArmorEventHotbarButtonCheckArmor(player, any helmet, player's helmet, hotbar button) is true: cancel event else if clicked slot is 38: if skArmorEventHotbarButtonCheckArmor(player, any chestplate, player's chestplate, hotbar button) is true: cancel event else if clicked slot is 37: if skArmorEventHotbarButtonCheckArmor(player, any leggings, player's leggings, hotbar button) is true: cancel event else if clicked slot is 36: if skArmorEventHotbarButtonCheckArmor(player, any boots, player's boots, hotbar button) is true: cancel event on BlockDispenseArmorEvent: e.getTargetEntity() is a player set {_p} to e.getTargetEntity() set {_i} to e.getItem() if skArmorEventCheckArmor({_p}, {_i}) is false: stop if skArmorEventIsCancelled({_p}, {_i}, "onArmorEquip") is true: cancel event