@@ -6,35 +6,34 @@ import org.bukkit.persistence.PersistentDataType
6
6
import xyz.xasmc.hashbook.HashBook
7
7
8
8
class PDCItemDataServices : ItemDataServices {
9
+ @Suppress(" UNCHECKED_CAST" )
9
10
override fun <T > setItemData (
10
- item : ItemStack ,
11
- path : String ,
12
- dataType : ItemDataServices .DataType <T >,
13
- value : T
11
+ item : ItemStack , path : String , dataType : ItemDataServices .DataType <T >, value : T
14
12
): ItemStack ? {
15
13
val itemMeta = item.itemMeta
16
- itemMeta.persistentDataContainer.set(
17
- NamespacedKey (HashBook .instance, path),
18
- DataTypeToPdcType (dataType) ? : return null ,
19
- when (dataType) {
20
- ItemDataServices .DataType .Boolean -> (if (value as Boolean ) 1 else 0 ).toByte()
21
- else -> value
22
- } as (T & Any )
23
- )
14
+ val namespacedKey = NamespacedKey (HashBook .instance, path)
15
+ val type = dataTypeToPdcType(dataType) ? : return null
16
+ val data = when (dataType) {
17
+ ItemDataServices .DataType .Boolean ->
18
+ if (value is Boolean ) (if (value) 1 else 0 ).toByte() as T
19
+ else return null
20
+
21
+ else -> value
22
+ } as (T & Any )
23
+ itemMeta.persistentDataContainer.set(namespacedKey, type, data)
24
24
item.itemMeta = itemMeta
25
25
return item
26
26
}
27
27
28
+ @Suppress(" UNCHECKED_CAST" )
28
29
override fun <T > getItemData (item : ItemStack , path : String , dataType : ItemDataServices .DataType <T >): T ? {
29
30
val itemMeta = item.itemMeta
30
- val result =
31
- itemMeta.persistentDataContainer.get(
32
- NamespacedKey (HashBook .instance, path),
33
- DataTypeToPdcType (dataType) ? : return null
34
- )
31
+ val namespace = NamespacedKey (HashBook .instance, path)
32
+ val type = dataTypeToPdcType(dataType) ? : return null
33
+ val result = itemMeta.persistentDataContainer.get(namespace, type)
35
34
36
35
return when (dataType) {
37
- ItemDataServices .DataType .Boolean -> (result != 0 ) as T
36
+ ItemDataServices .DataType .Boolean -> (( result is Byte ) && (result.toInt() != 0 ) ) as T
38
37
else -> result
39
38
}
40
39
}
@@ -44,17 +43,18 @@ class PDCItemDataServices : ItemDataServices {
44
43
return itemMeta.persistentDataContainer.has(NamespacedKey (HashBook .instance, path))
45
44
}
46
45
47
- private fun <T > DataTypeToPdcType (type : ItemDataServices .DataType <T >): PersistentDataType <T , T >? {
46
+ @Suppress(" UNCHECKED_CAST" )
47
+ private fun <T > dataTypeToPdcType (type : ItemDataServices .DataType <T >): PersistentDataType <T , T >? {
48
48
return when (type) {
49
- ItemDataServices .DataType .Byte -> PersistentDataType .BYTE as PersistentDataType < T , T >
50
- ItemDataServices .DataType .Short -> PersistentDataType .SHORT as PersistentDataType < T , T >
51
- ItemDataServices .DataType .Long -> PersistentDataType .LONG as PersistentDataType < T , T >
52
- ItemDataServices .DataType .Float -> PersistentDataType .FLOAT as PersistentDataType < T , T >
53
- ItemDataServices .DataType .Double -> PersistentDataType .DOUBLE as PersistentDataType < T , T >
54
- ItemDataServices .DataType .ByteArray -> PersistentDataType .BYTE_ARRAY as PersistentDataType < T , T >
55
- ItemDataServices .DataType .Boolean -> PersistentDataType .BYTE as PersistentDataType < T , T >
56
- ItemDataServices .DataType .String -> PersistentDataType .STRING as PersistentDataType < T , T >
49
+ ItemDataServices .DataType .Byte -> PersistentDataType .BYTE
50
+ ItemDataServices .DataType .Short -> PersistentDataType .SHORT
51
+ ItemDataServices .DataType .Long -> PersistentDataType .LONG
52
+ ItemDataServices .DataType .Float -> PersistentDataType .FLOAT
53
+ ItemDataServices .DataType .Double -> PersistentDataType .DOUBLE
54
+ ItemDataServices .DataType .ByteArray -> PersistentDataType .BYTE_ARRAY
55
+ ItemDataServices .DataType .Boolean -> PersistentDataType .BYTE
56
+ ItemDataServices .DataType .String -> PersistentDataType .STRING
57
57
else -> return null
58
- }
58
+ } as PersistentDataType < T , T >
59
59
}
60
60
}
0 commit comments