Other available versions. Ordered by newest to oldest versions:
Just so you know, we don't know the file format for every file. If it's just a bunch of random characters, it's probably a .zip or .jar.
#Copyright (c) 2023 eult#0001
options:
#This option is meant to make it easier to add lifes
#through commands so you don't have to change it
#! It is impossible to go higher than 2147483647 lives.
Base-lifes: 5
#this is the permission that is required to to allow
#the user to use the command
permission: itemlife.admin
#Change this to true if you want the item to
#not be dropped after death
#NOTE; only enabled on keep inventory false
Drop-on-keepInventory: false
#! COMMAND
command /itemlife [<string>] [<integer>] [<player>]:
aliases: il
permission: {@permission}
trigger:
if arg-1 is not set:
send "&8» &a/il &8[&aslot number &8|| &atool&8] &8[&eLifes&8] &8[&eplayer&8]"
stop
if arg-2 > 2147483647:
send "&8» &cIt is impossible to go higher than &42,147,483,647&c lives."
stop
if arg-1 is "tool" or "t":
if arg-2 is not set:
set player's tool to setItemLifeTag(player's tool, {@Base-lifes})
else:
if arg-3 is not set:
set player's tool to setItemLifeTag(player's tool, arg-2)
else:
set arg-3's tool to setItemLifeTag(arg-3's tool, arg-2)
play sound "block.note_block.pling" with volume 1 and pitch 2 to player
stop
if arg-1 partially matches "[A-Za-z]":
send "&8» &eIt is not valid to enter &c/il %arg-1%&e."
else:
set {_number} to arg-1 parsed as integer
if {_number} > 40:
send "&8» &cIt is not possible to go higher than 40 slots."
stop
if arg-2 is not set:
set slot {_number} of player's inventory to setItemLifeTag(slot {_number} of player's inventory, {@Base-lifes})
else:
if arg-3 is not set:
set slot {_number} of player's inventory to setItemLifeTag(slot {_number} of player's inventory, arg-2)
else:
set slot {_number} of arg-3's inventory to setItemLifeTag(slot {_number} of arg-3's inventory, arg-2)
play sound "block.note_block.pling" with volume 1 and pitch 2 to player
#! EVENTS
on death of player:
if gamerule keepInventory of world of victim is true:
removeLifeTagInventory(victim)
else:
loop drops:
if getItemLifeTag(loop-item) > 1:
remove loop-value from drops
if {@Drop-on-keepInventory} is true:
add removeLifeTag(loop-value) to {ilRespawn::%victim%::*}
else:
drop removeLifeTag(loop-value)
if getItemLifeTag(loop-value) = 1:
remove loop-value from drops
on respawn:
if {ilRespawn::%player%::*} is set:
give {ilRespawn::%player%::*} to player
delete {ilRespawn::%player%::*}
#! FUCNTIONS
function removeLifeTagInventory(p: player):
loop all items in the inventory of {_p}:
if getItemLifeTag(loop-item) > 1:
set loop-item to removeLifeTag(loop-item)
else if getItemLifeTag(loop-item) = 1:
set loop-item to air
function setItemLifeTag(item: item, amount: integer) :: object:
set {_n} to nbt compound of {_item}
set int tag "life" of {_n} to {_amount}
set {_item} to printItemLifeTag({_item})
return {_item}
function printItemLifeTag(item: item) :: item:
set {_loreSize::*} to lore of {_item}
set {_lines} to 1
loop {_loreSize::*}:
if line {_lines} of the lore of {_item} contains "Lives left":
stop loop
add 1 to {_lines}
#! Looking for changing the lore? check the line under
if getItemLifeTag({_item}) is 1:
set line {_lines} of lore of {_item} to "&c%getItemLifeTag({_item})% &7Life left"
else:
set line {_lines} of lore of {_item} to "&e%getItemLifeTag({_item})% &7Lives left"
#! Looking for changing the lore? check the line above
return {_item}
function getItemLifeTag(item: item) :: object:
set {_nbt} to nbt compound of {_item}
set {_i} to int tag "life" of {_nbt}
return {_i}
function removeLifeTag(item: item) :: object:
set {_n} to nbt compound of {_item}
remove 1 from int tag "life" of {_n}
set {_item} to printItemLifeTag({_item})
return {_item}