Create MinecraftObjectMarker.kt

This commit is contained in:
bluefireoly
2020-10-28 21:14:00 +01:00
parent bf2d8ee1a1
commit a5a7a6dff6

View File

@@ -0,0 +1,50 @@
package net.axay.kspigot.utils
import net.axay.kspigot.extensions.pluginKey
import net.axay.kspigot.items.meta
import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataHolder
import org.bukkit.persistence.PersistentDataType
private fun markerKey(key: String) = pluginKey("kspigot_marker_$key")
/**
* Marks this object with the given [key].
* This is persistent.
*
* This function makes sure that there are no
* conflicts with other plugins, therefore even simple
* keys are safe.
*/
fun PersistentDataHolder.mark(key: String) {
persistentDataContainer[markerKey(key), PersistentDataType.BYTE] = 1.toByte()
}
/**
* Removes the given [key] from this objects'
* markings.
*/
fun PersistentDataHolder.unmark(key: String) {
persistentDataContainer.remove(markerKey(key))
}
/**
* @return True, if the given [key] is among
* this objects' markings.
*/
fun PersistentDataHolder.hasMark(key: String) = persistentDataContainer.has(markerKey(key), PersistentDataType.BYTE)
// quick access for ItemStacks
/** @see PersistentDataHolder.mark */
fun ItemStack.mark(key: String) = meta { mark(key) }
/** @see PersistentDataHolder.unmark */
fun ItemStack.unmark(key: String) = meta { unmark(key) }
/** @see PersistentDataHolder.hasMark */
fun ItemStack.hasMark(key: String): Boolean {
var result: Boolean = false
meta { result = hasMark(key) }
return result
}