function kGame_getEndOfWord(i: integer, t: text="") :: string: if {_i} is between 2 and 4: return "%{_t}%y" if {_i} is 1: return "%{_t}%a" return "%{_t}%" function kGame_getTime(time: TimeSpan) :: string: set {_millis} to {_time}.getMilliSeconds() if ({_millis} / 3600000) is larger than 1: set {_f} to floor({_millis} / 3600000) set {_ret::1} to kGame_getEndOfWord({_f}, "%{_f}% godzin") remove ({_f} * 3600000) from {_millis} if ({_millis} / 60000) is larger than 1: set {_f} to floor({_millis} / 60000) set {_ret::2} to kGame_getEndOfWord({_f}, "%{_f}% minut") remove ({_f} * 60000) from {_millis} if ({_millis} / 1000) is larger than 1: set {_f} to floor({_millis} / 1000) remove ({_f} * 1000) from {_millis} add {_millis}/1000 to {_f} set {_ret::3} to kGame_getEndOfWord({_f}, "%{_f}% sekund") #set {_ret::4} to kGame_getEndOfWord({_millis}, "%{_millis}% milisekund") return join {_ret::*} with " " function kGame_getPath(gameName: text, configName: text="config") :: string: return "plugins/%{_gameName}%/%{_configName}%.yml" function kGame_getItemFromText(t: text) :: item: if "%{_t}%" contains "named": set {_item} to subtext of {_t} between index 0 to index of "named" in {_t} - 2 set {_item} to {_item} parsed as item if {_item} is not item: return air if "%{_t}%" contains "with lore": set {_name} to subtext of {_t} between index index of "named" in {_t} + 7 to index of "with lore" in {_t} - 3 set {_lore} to subtext of {_t} between index index of "with lore" in {_t} + 11 to length of {_t} - 1 set {_lore::*} to split {_lore} by "||" return {_item} named coloured {_name} with lore coloured {_lore::*} else: set {_name} to subtext of {_t} between index index of "named" in {_t} + 7 to length of {_t} - 1 return {_item} named coloured {_name} if "%{_t}%" contains "with lore": set {_item} to subtext of {_t} between index 0 to index of "with lore" in {_t} - 2 set {_lore} to subtext of {_t} between index length of "%{_item}%" + 13 to index length of {_t} - 1 set {_lore::*} to split {_lore} by "||" set {_item} to {_item} parsed as item if {_item} is item: return {_item} with lore coloured {_lore::*} return air set {_item} to {_t} parsed as item if {_item} is item: return {_item} return air function kGame_getTextFromItem(i: item) :: string: set {_type} to type of {_i} set {_ilosc} to item stack amount of {_i} if {_ilosc} is not set: set {_ilosc} to 1 set {_name} to name of {_i} set {_lore} to join lore of {_i} with "||" set {_ench::*} to enchantments of {_i} #2.2-dev36 set {_ret} to "%{_ilosc}% of %{_type}%" if {_ench::*} is set: set {_ret} to "%{_ret}% of %{_ench::*}%" if {_name} is set: set {_ret} to "%{_ret}% named ""%{_name}%""" if "%{_lore}%" is not "": set {_ret} to "%{_ret}% with lore ""%{_lore}%""" return {_ret} function kGame_registerGame(t: text, slot: integer, i: item) :: boolean: #clear {kGame::registersGame::%{_t}%} and {kGame::registersGame::%{_t}%::item} set {_path} to kGame_getPath("kGame_Util", "mainInventory") if {kGame::registersGame::%{_t}%} is not set: set {kGame::registersGame::%{_t}%} to true if {kGame::registersGame::%{_t}%::item} is not set: set {kGame::registersGame::%{_t}%::item} to {_i} set {kGame::registersGame::%{_t}%::slot} to {_slot} set yaml value "inventory.%{_t}%.item" from {_path} to kGame_getTextFromItem({_i}) set yaml value "inventory.%{_t}%.slot" from {_path} to {_slot} #set yaml value "inventory.slot.%{_slot}%.nameGame" from {_path} to {_t} if {kGame::registersGame::%{_t}%} is false: set {kGame::registersGame::%{_t}%} to true return true #set {_yml} to yaml value "inventory.slot.%{_slot}%.item" from {_path} #if kGame_getItemFromText({_yml}) is not {kGame::registersGame::%{_t}%::item}: #set {kGame::registersGame::%{_t}%::item} to kGame_getItemFromText({_yml}) #set {_yml} to yaml value "inventory.slot.%{_slot}%.nameGame" from {_path} #if {_yml} is not {kGame::registersGame::%{_t}%::nameGame}: #set {kGame::registersGame::%{_t}%::nameGame} to {_yml} return false function kGame_unregisterGame(t: text) :: boolean: if {kGame::registersGame::%{_t}%} is true: set {kGame::registersGame::%{_t}%} to false return true return false