Create MinecraftObjectMarker.kt
This commit is contained in:
@@ -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
|
||||
}
|
Reference in New Issue
Block a user