mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 10:55:01 -04:00
remove some NBTUtil functions
This commit is contained in:
parent
30da957baa
commit
37f045db27
@ -17,6 +17,7 @@ import de.bixilon.kutil.collections.CollectionUtil.synchronizedMapOf
|
|||||||
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
|
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
|
||||||
import de.bixilon.kutil.concurrent.pool.ThreadPool
|
import de.bixilon.kutil.concurrent.pool.ThreadPool
|
||||||
import de.bixilon.kutil.concurrent.pool.ThreadPoolRunnable
|
import de.bixilon.kutil.concurrent.pool.ThreadPoolRunnable
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||||
import de.bixilon.kutil.primitive.LongUtil.toLong
|
import de.bixilon.kutil.primitive.LongUtil.toLong
|
||||||
import de.bixilon.kutil.string.StringUtil.format
|
import de.bixilon.kutil.string.StringUtil.format
|
||||||
@ -33,7 +34,6 @@ import de.bixilon.minosoft.util.json.Jackson
|
|||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
@ -82,7 +82,7 @@ class IndexAssetsManager(
|
|||||||
|
|
||||||
var assets = FileUtil.safeReadFile(FileAssetsUtil.getPath(indexHash))?.readJsonObject() ?: downloadAssetsIndex()
|
var assets = FileUtil.safeReadFile(FileAssetsUtil.getPath(indexHash))?.readJsonObject() ?: downloadAssetsIndex()
|
||||||
|
|
||||||
assets["objects"].let { assets = it.asCompound() }
|
assets["objects"].let { assets = it.asJsonObject() }
|
||||||
val tasks = CountUpAndDownLatch(0)
|
val tasks = CountUpAndDownLatch(0)
|
||||||
val assetsLatch = CountUpAndDownLatch(assets.size, parent = latch)
|
val assetsLatch = CountUpAndDownLatch(assets.size, parent = latch)
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ package de.bixilon.minosoft.data.accounts.types
|
|||||||
import com.fasterxml.jackson.annotation.JsonProperty
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
||||||
import de.bixilon.minosoft.data.accounts.Account
|
import de.bixilon.minosoft.data.accounts.Account
|
||||||
import de.bixilon.minosoft.data.player.properties.PlayerProperties
|
import de.bixilon.minosoft.data.player.properties.PlayerProperties
|
||||||
@ -28,7 +29,6 @@ import de.bixilon.minosoft.util.http.exceptions.AuthenticationException
|
|||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@Deprecated("Mojang authentication is legacy. Will be removed in the future!")
|
@Deprecated("Mojang authentication is legacy. Will be removed in the future!")
|
||||||
@ -117,10 +117,10 @@ class MojangAccount(
|
|||||||
|
|
||||||
Log.log(LogMessageType.AUTHENTICATION, LogLevels.VERBOSE) { "Mojang login successful (email=$email)" }
|
Log.log(LogMessageType.AUTHENTICATION, LogLevels.VERBOSE) { "Mojang login successful (email=$email)" }
|
||||||
|
|
||||||
val uuid = response.body["selectedProfile"].asCompound()["id"].toString().toUUID()
|
val uuid = response.body["selectedProfile"].asJsonObject()["id"].toString().toUUID()
|
||||||
return MojangAccount(
|
return MojangAccount(
|
||||||
id = response.body["user"].asCompound()["id"].unsafeCast(),
|
id = response.body["user"].asJsonObject()["id"].unsafeCast(),
|
||||||
username = response.body["selectedProfile"].asCompound()["name"].unsafeCast(),
|
username = response.body["selectedProfile"].asJsonObject()["name"].unsafeCast(),
|
||||||
uuid = uuid,
|
uuid = uuid,
|
||||||
email = email,
|
email = email,
|
||||||
accessToken = response.body["accessToken"].unsafeCast(),
|
accessToken = response.body["accessToken"].unsafeCast(),
|
||||||
|
@ -42,9 +42,9 @@ import de.bixilon.minosoft.data.text.TextFormattable
|
|||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.util.BitByte.isBit
|
import de.bixilon.minosoft.util.BitByte.isBit
|
||||||
import de.bixilon.minosoft.util.KUtil.synchronizedDeepCopy
|
import de.bixilon.minosoft.util.KUtil.synchronizedDeepCopy
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.getAndRemove
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.getAndRemove
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
||||||
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.toMutableJsonObject
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class ItemStack(
|
class ItemStack(
|
||||||
@ -182,7 +182,7 @@ class ItemStack(
|
|||||||
|
|
||||||
nbt.getAndRemove(REPAIR_COST_TAG).nullCast<Number>()?.let { repairCost = it.toInt() }
|
nbt.getAndRemove(REPAIR_COST_TAG).nullCast<Number>()?.let { repairCost = it.toInt() }
|
||||||
|
|
||||||
nbt.getAndRemove(DISPLAY_TAG)?.compoundCast()?.let {
|
nbt.getAndRemove(DISPLAY_TAG)?.toMutableJsonObject()?.let {
|
||||||
it.getAndRemove(DISPLAY_MAME_TAG).nullCast<String>()?.let { nameTag ->
|
it.getAndRemove(DISPLAY_MAME_TAG).nullCast<String>()?.let { nameTag ->
|
||||||
customDisplayName = ChatComponent.of(nameTag, translator = connection?.language)
|
customDisplayName = ChatComponent.of(nameTag, translator = connection?.language)
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ package de.bixilon.minosoft.data.player.properties.textures
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude
|
import com.fasterxml.jackson.annotation.JsonInclude
|
||||||
import com.fasterxml.jackson.module.kotlin.convertValue
|
import com.fasterxml.jackson.module.kotlin.convertValue
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.LongUtil.toLong
|
import de.bixilon.kutil.primitive.LongUtil.toLong
|
||||||
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
||||||
import de.bixilon.minosoft.util.YggdrasilUtil
|
import de.bixilon.minosoft.util.YggdrasilUtil
|
||||||
import de.bixilon.minosoft.util.json.Jackson
|
import de.bixilon.minosoft.util.json.Jackson
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class PlayerTextures(
|
class PlayerTextures(
|
||||||
@ -25,14 +25,14 @@ class PlayerTextures(
|
|||||||
val json: Map<String, Any> = Jackson.MAPPER.readValue(Base64.getDecoder().decode(encoded), Jackson.JSON_MAP_TYPE)
|
val json: Map<String, Any> = Jackson.MAPPER.readValue(Base64.getDecoder().decode(encoded), Jackson.JSON_MAP_TYPE)
|
||||||
|
|
||||||
// Data also contains `signatureRequired`
|
// Data also contains `signatureRequired`
|
||||||
val textures = json["textures"]?.compoundCast()
|
val textures = json["textures"]?.toJsonObject()
|
||||||
return PlayerTextures(
|
return PlayerTextures(
|
||||||
name = json["profileName"]?.toString(),
|
name = json["profileName"]?.toString(),
|
||||||
uuid = json["profileId"]?.toString()?.toUUID(),
|
uuid = json["profileId"]?.toString()?.toUUID(),
|
||||||
date = json["timestamp"]?.toLong()?.let { Date(it) },
|
date = json["timestamp"]?.toLong()?.let { Date(it) },
|
||||||
skin = textures?.get("SKIN")?.compoundCast()?.let { return@let Jackson.MAPPER.convertValue(it) },
|
skin = textures?.get("SKIN")?.toJsonObject()?.let { return@let Jackson.MAPPER.convertValue(it) },
|
||||||
cape = textures?.get("CAPE")?.compoundCast()?.let { return@let Jackson.MAPPER.convertValue(it) },
|
cape = textures?.get("CAPE")?.toJsonObject()?.let { return@let Jackson.MAPPER.convertValue(it) },
|
||||||
elytra = textures?.get("ELYTRA")?.compoundCast()?.let { return@let Jackson.MAPPER.convertValue(it) },
|
elytra = textures?.get("ELYTRA")?.toJsonObject()?.let { return@let Jackson.MAPPER.convertValue(it) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.data.registries
|
package de.bixilon.minosoft.data.registries
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.minosoft.Minosoft
|
import de.bixilon.minosoft.Minosoft
|
||||||
import de.bixilon.minosoft.assets.util.FileUtil.readJsonObject
|
import de.bixilon.minosoft.assets.util.FileUtil.readJsonObject
|
||||||
import de.bixilon.minosoft.data.entities.EntityObjectType
|
import de.bixilon.minosoft.data.entities.EntityObjectType
|
||||||
@ -28,7 +29,6 @@ import de.bixilon.minosoft.protocol.packets.c2s.play.EntityActionC2SP
|
|||||||
import de.bixilon.minosoft.protocol.packets.s2c.play.EntityAnimationS2CP
|
import de.bixilon.minosoft.protocol.packets.s2c.play.EntityAnimationS2CP
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleS2CF
|
import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleS2CF
|
||||||
import de.bixilon.minosoft.util.json.ResourceLocationJsonMap.toResourceLocationMap
|
import de.bixilon.minosoft.util.json.ResourceLocationJsonMap.toResourceLocationMap
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
|
|
||||||
object DefaultRegistries {
|
object DefaultRegistries {
|
||||||
private val ENUM_RESOURCE_LOCATION = ResourceLocation("minosoft:mapping/enums.json")
|
private val ENUM_RESOURCE_LOCATION = ResourceLocation("minosoft:mapping/enums.json")
|
||||||
@ -62,29 +62,29 @@ object DefaultRegistries {
|
|||||||
|
|
||||||
val enumJson = Minosoft.MINOSOFT_ASSETS_MANAGER[ENUM_RESOURCE_LOCATION].readJsonObject().toResourceLocationMap()
|
val enumJson = Minosoft.MINOSOFT_ASSETS_MANAGER[ENUM_RESOURCE_LOCATION].readJsonObject().toResourceLocationMap()
|
||||||
|
|
||||||
EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("equipment_slots")].asCompound())
|
EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("equipment_slots")].asJsonObject())
|
||||||
HAND_EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("hand_equipment_slots")].asCompound())
|
HAND_EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("hand_equipment_slots")].asJsonObject())
|
||||||
ARMOR_EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("armor_equipment_slots")].asCompound())
|
ARMOR_EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("armor_equipment_slots")].asJsonObject())
|
||||||
ARMOR_STAND_EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("armor_stand_equipment_slots")].asCompound())
|
ARMOR_STAND_EQUIPMENT_SLOTS_REGISTRY.initialize(enumJson[ResourceLocation("armor_stand_equipment_slots")].asJsonObject())
|
||||||
|
|
||||||
ENTITY_META_DATA_DATA_TYPES_REGISTRY.initialize(enumJson[ResourceLocation("entity_meta_data_data_types")].asCompound())
|
ENTITY_META_DATA_DATA_TYPES_REGISTRY.initialize(enumJson[ResourceLocation("entity_meta_data_data_types")].asJsonObject())
|
||||||
|
|
||||||
TITLE_ACTIONS_REGISTRY.initialize(enumJson[ResourceLocation("title_actions")].asCompound())
|
TITLE_ACTIONS_REGISTRY.initialize(enumJson[ResourceLocation("title_actions")].asJsonObject())
|
||||||
|
|
||||||
ENTITY_ANIMATION_REGISTRY.initialize(enumJson[ResourceLocation("entity_animations")].asCompound())
|
ENTITY_ANIMATION_REGISTRY.initialize(enumJson[ResourceLocation("entity_animations")].asJsonObject())
|
||||||
ENTITY_ACTIONS_REGISTRY.initialize(enumJson[ResourceLocation("entity_actions")].asCompound())
|
ENTITY_ACTIONS_REGISTRY.initialize(enumJson[ResourceLocation("entity_actions")].asJsonObject())
|
||||||
|
|
||||||
|
|
||||||
val registriesJson = Minosoft.MINOSOFT_ASSETS_MANAGER[REGISTRIES_RESOURCE_LOCATION].readJsonObject().toResourceLocationMap()
|
val registriesJson = Minosoft.MINOSOFT_ASSETS_MANAGER[REGISTRIES_RESOURCE_LOCATION].readJsonObject().toResourceLocationMap()
|
||||||
|
|
||||||
DEFAULT_PLUGIN_CHANNELS_REGISTRY.initialize(registriesJson[ResourceLocation("default_plugin_channels")].asCompound(), PluginChannel)
|
DEFAULT_PLUGIN_CHANNELS_REGISTRY.initialize(registriesJson[ResourceLocation("default_plugin_channels")].asJsonObject(), PluginChannel)
|
||||||
|
|
||||||
ENTITY_OBJECT_REGISTRY.rawInitialize(registriesJson[ResourceLocation("entity_objects")].asCompound(), null, EntityObjectType)
|
ENTITY_OBJECT_REGISTRY.rawInitialize(registriesJson[ResourceLocation("entity_objects")].asJsonObject(), null, EntityObjectType)
|
||||||
|
|
||||||
BLOCK_ENTITY_META_TYPE_REGISTRY.initialize(registriesJson[ResourceLocation("block_entity_meta_data_types")].asCompound(), BlockEntityMetaType)
|
BLOCK_ENTITY_META_TYPE_REGISTRY.initialize(registriesJson[ResourceLocation("block_entity_meta_data_types")].asJsonObject(), BlockEntityMetaType)
|
||||||
|
|
||||||
CONTAINER_TYPE_REGISTRY.initialize(registriesJson[ResourceLocation("container_types")].asCompound(), ContainerType)
|
CONTAINER_TYPE_REGISTRY.initialize(registriesJson[ResourceLocation("container_types")].asJsonObject(), ContainerType)
|
||||||
GAME_EVENT_REGISTRY.initialize(registriesJson[ResourceLocation("game_events")].asCompound(), GameEvent)
|
GAME_EVENT_REGISTRY.initialize(registriesJson[ResourceLocation("game_events")].asJsonObject(), GameEvent)
|
||||||
|
|
||||||
initialized = true
|
initialized = true
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
package de.bixilon.minosoft.data.registries.blocks
|
package de.bixilon.minosoft.data.registries.blocks
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
||||||
import de.bixilon.kutil.primitive.FloatUtil.toFloat
|
import de.bixilon.kutil.primitive.FloatUtil.toFloat
|
||||||
import de.bixilon.kutil.primitive.IntUtil.toInt
|
import de.bixilon.kutil.primitive.IntUtil.toInt
|
||||||
@ -23,7 +24,6 @@ import de.bixilon.minosoft.data.registries.blocks.types.Block
|
|||||||
import de.bixilon.minosoft.data.registries.materials.Material
|
import de.bixilon.minosoft.data.registries.materials.Material
|
||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
import de.bixilon.minosoft.gui.rendering.models.baked.block.BakedBlockModel
|
import de.bixilon.minosoft.gui.rendering.models.baked.block.BakedBlockModel
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
data class BlockState(
|
data class BlockState(
|
||||||
@ -104,7 +104,7 @@ data class BlockState(
|
|||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun deserialize(block: Block, registries: Registries, data: Map<String, Any>): BlockState {
|
fun deserialize(block: Block, registries: Registries, data: Map<String, Any>): BlockState {
|
||||||
val properties = data["properties"]?.compoundCast()?.let {
|
val properties = data["properties"]?.toJsonObject()?.let {
|
||||||
getProperties(it)
|
getProperties(it)
|
||||||
} ?: mutableMapOf()
|
} ?: mutableMapOf()
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.registries.blocks.types
|
|||||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.primitive.DoubleUtil.toDouble
|
import de.bixilon.kutil.primitive.DoubleUtil.toDouble
|
||||||
import de.bixilon.kutil.primitive.FloatUtil.toFloat
|
import de.bixilon.kutil.primitive.FloatUtil.toFloat
|
||||||
import de.bixilon.kutil.primitive.IntUtil.toInt
|
import de.bixilon.kutil.primitive.IntUtil.toInt
|
||||||
@ -39,7 +40,6 @@ import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
|||||||
import de.bixilon.minosoft.gui.rendering.tint.TintProvider
|
import de.bixilon.minosoft.gui.rendering.tint.TintProvider
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.util.CastUtil.asAnyMap
|
import de.bixilon.minosoft.util.CastUtil.asAnyMap
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ open class Block(
|
|||||||
val states: MutableSet<BlockState> = mutableSetOf()
|
val states: MutableSet<BlockState> = mutableSetOf()
|
||||||
for ((stateId, stateJson) in data["states"].asAnyMap()) {
|
for ((stateId, stateJson) in data["states"].asAnyMap()) {
|
||||||
check(stateJson is Map<*, *>) { "Not a state element!" }
|
check(stateJson is Map<*, *>) { "Not a state element!" }
|
||||||
val state = BlockState.deserialize(block, registries, stateJson.asCompound())
|
val state = BlockState.deserialize(block, registries, stateJson.asJsonObject())
|
||||||
registries.blockStateRegistry[stateId.toInt()] = state
|
registries.blockStateRegistry[stateId.toInt()] = state
|
||||||
states.add(state)
|
states.add(state)
|
||||||
for ((property, value) in state.properties) {
|
for ((property, value) in state.properties) {
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
package de.bixilon.minosoft.data.registries.effects
|
package de.bixilon.minosoft.data.registries.effects
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.registries.effects.attributes.EntityAttributeModifier
|
import de.bixilon.minosoft.data.registries.effects.attributes.EntityAttributeModifier
|
||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
@ -23,8 +25,6 @@ import de.bixilon.minosoft.data.text.RGBColor
|
|||||||
import de.bixilon.minosoft.data.text.RGBColor.Companion.asRGBColor
|
import de.bixilon.minosoft.data.text.RGBColor.Companion.asRGBColor
|
||||||
import de.bixilon.minosoft.datafixer.EntityAttributeFixer.fix
|
import de.bixilon.minosoft.datafixer.EntityAttributeFixer.fix
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
data class StatusEffect(
|
data class StatusEffect(
|
||||||
@ -45,9 +45,9 @@ data class StatusEffect(
|
|||||||
val attributes: MutableMap<ResourceLocation, EntityAttributeModifier> = mutableMapOf()
|
val attributes: MutableMap<ResourceLocation, EntityAttributeModifier> = mutableMapOf()
|
||||||
val uuidAttributes: MutableMap<UUID, EntityAttributeModifier> = mutableMapOf()
|
val uuidAttributes: MutableMap<UUID, EntityAttributeModifier> = mutableMapOf()
|
||||||
|
|
||||||
data["attributes"]?.compoundCast()?.let {
|
data["attributes"]?.toJsonObject()?.let {
|
||||||
for ((key, value) in it) {
|
for ((key, value) in it) {
|
||||||
val attribute = EntityAttributeModifier.deserialize(value.asCompound())
|
val attribute = EntityAttributeModifier.deserialize(value.asJsonObject())
|
||||||
attributes[ResourceLocation.getResourceLocation(key).fix()] = attribute
|
attributes[ResourceLocation.getResourceLocation(key).fix()] = attribute
|
||||||
uuidAttributes[attribute.uuid] = attribute
|
uuidAttributes[attribute.uuid] = attribute
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.registries.entities
|
|||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
||||||
import de.bixilon.minosoft.data.DefaultEntityFactories
|
import de.bixilon.minosoft.data.DefaultEntityFactories
|
||||||
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
||||||
@ -30,7 +31,6 @@ import de.bixilon.minosoft.data.registries.registries.registry.Translatable
|
|||||||
import de.bixilon.minosoft.datafixer.EntityAttributeFixer.fix
|
import de.bixilon.minosoft.datafixer.EntityAttributeFixer.fix
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import glm_.vec3.Vec3d
|
import glm_.vec3.Vec3d
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ data class EntityType(
|
|||||||
override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map<String, Any>): EntityType? {
|
override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map<String, Any>): EntityType? {
|
||||||
check(registries != null) { "Registries is null!" }
|
check(registries != null) { "Registries is null!" }
|
||||||
|
|
||||||
data["meta"]?.compoundCast()?.let {
|
data["meta"]?.toJsonObject()?.let {
|
||||||
for ((minosoftFieldName, index) in it) {
|
for ((minosoftFieldName, index) in it) {
|
||||||
val minosoftField = EntityMetaDataFields[minosoftFieldName.lowercase(Locale.getDefault())]
|
val minosoftField = EntityMetaDataFields[minosoftFieldName.lowercase(Locale.getDefault())]
|
||||||
registries.entityMetaIndexMap[minosoftField] = index.unsafeCast()
|
registries.entityMetaIndexMap[minosoftField] = index.unsafeCast()
|
||||||
@ -72,7 +72,7 @@ data class EntityType(
|
|||||||
|
|
||||||
val attributes: MutableMap<ResourceLocation, Double> = mutableMapOf()
|
val attributes: MutableMap<ResourceLocation, Double> = mutableMapOf()
|
||||||
|
|
||||||
data["attributes"]?.compoundCast()?.let {
|
data["attributes"]?.toJsonObject()?.let {
|
||||||
for ((attributeResourceLocation, value) in it) {
|
for ((attributeResourceLocation, value) in it) {
|
||||||
attributes[ResourceLocation.getResourceLocation(attributeResourceLocation).fix()] = value.unsafeCast()
|
attributes[ResourceLocation.getResourceLocation(attributeResourceLocation).fix()] = value.unsafeCast()
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.data.registries.items
|
package de.bixilon.minosoft.data.registries.items
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.decide
|
import de.bixilon.kutil.primitive.BooleanUtil.decide
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
||||||
import de.bixilon.kutil.primitive.FloatUtil.toFloat
|
import de.bixilon.kutil.primitive.FloatUtil.toFloat
|
||||||
@ -25,7 +26,6 @@ import de.bixilon.minosoft.data.registries.registries.Registries
|
|||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.hotbar.HotbarHungerElement
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.hotbar.HotbarHungerElement
|
||||||
import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
|
|
||||||
open class FoodItem(
|
open class FoodItem(
|
||||||
resourceLocation: ResourceLocation,
|
resourceLocation: ResourceLocation,
|
||||||
@ -39,7 +39,7 @@ open class FoodItem(
|
|||||||
val timeToEat: Int
|
val timeToEat: Int
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val foodProperties = data["food_properties"].asCompound()
|
val foodProperties = data["food_properties"].asJsonObject()
|
||||||
nutrition = foodProperties["nutrition"]?.toInt() ?: 0
|
nutrition = foodProperties["nutrition"]?.toInt() ?: 0
|
||||||
saturationModifier = foodProperties["saturation_modifier"]?.toFloat() ?: 0.0f
|
saturationModifier = foodProperties["saturation_modifier"]?.toFloat() ?: 0.0f
|
||||||
isMeat = foodProperties["is_meat"]?.toBoolean() ?: false
|
isMeat = foodProperties["is_meat"]?.toBoolean() ?: false
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
package de.bixilon.minosoft.data.registries.particle
|
package de.bixilon.minosoft.data.registries.particle
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.registries.particle.data.ParticleData
|
import de.bixilon.minosoft.data.registries.particle.data.ParticleData
|
||||||
@ -22,7 +23,6 @@ import de.bixilon.minosoft.gui.rendering.particle.DefaultParticleFactory
|
|||||||
import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory
|
import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory
|
||||||
import de.bixilon.minosoft.gui.rendering.particle.types.Particle
|
import de.bixilon.minosoft.gui.rendering.particle.types.Particle
|
||||||
import de.bixilon.minosoft.gui.rendering.textures.Texture
|
import de.bixilon.minosoft.gui.rendering.textures.Texture
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
||||||
|
|
||||||
data class ParticleType(
|
data class ParticleType(
|
||||||
@ -43,7 +43,7 @@ data class ParticleType(
|
|||||||
companion object : ResourceLocationDeserializer<ParticleType> {
|
companion object : ResourceLocationDeserializer<ParticleType> {
|
||||||
override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map<String, Any>): ParticleType {
|
override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map<String, Any>): ParticleType {
|
||||||
val textures: MutableList<ResourceLocation> = mutableListOf()
|
val textures: MutableList<ResourceLocation> = mutableListOf()
|
||||||
data["render"]?.compoundCast()?.get("textures")?.listCast<String>()?.let {
|
data["render"]?.toJsonObject()?.get("textures")?.listCast<String>()?.let {
|
||||||
for (texture in it) {
|
for (texture in it) {
|
||||||
val textureResourceLocation = ResourceLocation(texture)
|
val textureResourceLocation = ResourceLocation(texture)
|
||||||
textures += Texture.getResourceTextureIdentifier(textureResourceLocation.namespace, textureName = "particle/${textureResourceLocation.path}")
|
textures += Texture.getResourceTextureIdentifier(textureResourceLocation.namespace, textureName = "particle/${textureResourceLocation.path}")
|
||||||
|
@ -14,6 +14,7 @@ package de.bixilon.minosoft.data.registries.registries
|
|||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
||||||
import de.bixilon.minosoft.data.entities.block.BlockEntityMetaType
|
import de.bixilon.minosoft.data.entities.block.BlockEntityMetaType
|
||||||
import de.bixilon.minosoft.data.entities.meta.EntityMetaData
|
import de.bixilon.minosoft.data.entities.meta.EntityMetaData
|
||||||
@ -48,7 +49,6 @@ import de.bixilon.minosoft.protocol.packets.c2s.play.EntityActionC2SP
|
|||||||
import de.bixilon.minosoft.protocol.packets.s2c.play.EntityAnimationS2CP
|
import de.bixilon.minosoft.protocol.packets.s2c.play.EntityAnimationS2CP
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleS2CF
|
import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleS2CF
|
||||||
import de.bixilon.minosoft.util.collections.Clearable
|
import de.bixilon.minosoft.util.collections.Clearable
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
import java.lang.reflect.ParameterizedType
|
import java.lang.reflect.ParameterizedType
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ class Registries {
|
|||||||
isFlattened = version.flattened
|
isFlattened = version.flattened
|
||||||
blockStateRegistry.flattened = isFlattened
|
blockStateRegistry.flattened = isFlattened
|
||||||
// pre init stuff
|
// pre init stuff
|
||||||
loadShapes(pixlyzerData["shapes"]?.compoundCast())
|
loadShapes(pixlyzerData["shapes"]?.toJsonObject())
|
||||||
|
|
||||||
// enums
|
// enums
|
||||||
loadEnumRegistry(version, pixlyzerData["equipment_slots"], equipmentSlotRegistry, DefaultRegistries.EQUIPMENT_SLOTS_REGISTRY)
|
loadEnumRegistry(version, pixlyzerData["equipment_slots"], equipmentSlotRegistry, DefaultRegistries.EQUIPMENT_SLOTS_REGISTRY)
|
||||||
@ -149,30 +149,30 @@ class Registries {
|
|||||||
creativeModeTabRegistry.initialize(pixlyzerData["creative_inventory_tab"]?.unsafeCast(), this, CreativeModeTab)
|
creativeModeTabRegistry.initialize(pixlyzerData["creative_inventory_tab"]?.unsafeCast(), this, CreativeModeTab)
|
||||||
|
|
||||||
// id resource location stuff
|
// id resource location stuff
|
||||||
containerTypeRegistry.rawInitialize(pixlyzerData["container_types"]?.compoundCast(), this, ContainerType, alternative = DefaultRegistries.CONTAINER_TYPE_REGISTRY.forVersion(version))
|
containerTypeRegistry.rawInitialize(pixlyzerData["container_types"]?.toJsonObject(), this, ContainerType, alternative = DefaultRegistries.CONTAINER_TYPE_REGISTRY.forVersion(version))
|
||||||
gameEventRegistry.rawInitialize(pixlyzerData["game_events"]?.compoundCast(), this, GameEvent, alternative = DefaultRegistries.GAME_EVENT_REGISTRY.forVersion(version))
|
gameEventRegistry.rawInitialize(pixlyzerData["game_events"]?.toJsonObject(), this, GameEvent, alternative = DefaultRegistries.GAME_EVENT_REGISTRY.forVersion(version))
|
||||||
|
|
||||||
|
|
||||||
entityTypeRegistry.rawInitialize(pixlyzerData["entities"]?.compoundCast(), this, EntityType)
|
entityTypeRegistry.rawInitialize(pixlyzerData["entities"]?.toJsonObject(), this, EntityType)
|
||||||
|
|
||||||
motiveRegistry.rawInitialize(pixlyzerData["motives"]?.compoundCast(), this, Motive, version.flattened)
|
motiveRegistry.rawInitialize(pixlyzerData["motives"]?.toJsonObject(), this, Motive, version.flattened)
|
||||||
soundEventRegistry.rawInitialize(pixlyzerData["sound_events"]?.compoundCast())
|
soundEventRegistry.rawInitialize(pixlyzerData["sound_events"]?.toJsonObject())
|
||||||
particleTypeRegistry.rawInitialize(pixlyzerData["particles"]?.compoundCast(), this, ParticleType)
|
particleTypeRegistry.rawInitialize(pixlyzerData["particles"]?.toJsonObject(), this, ParticleType)
|
||||||
materialRegistry.rawInitialize(pixlyzerData["materials"]?.compoundCast(), this, Material)
|
materialRegistry.rawInitialize(pixlyzerData["materials"]?.toJsonObject(), this, Material)
|
||||||
enchantmentRegistry.rawInitialize(pixlyzerData["enchantments"]?.compoundCast(), this, Enchantment)
|
enchantmentRegistry.rawInitialize(pixlyzerData["enchantments"]?.toJsonObject(), this, Enchantment)
|
||||||
statusEffectRegistry.rawInitialize(pixlyzerData["status_effects"]?.compoundCast(), this, StatusEffect)
|
statusEffectRegistry.rawInitialize(pixlyzerData["status_effects"]?.toJsonObject(), this, StatusEffect)
|
||||||
biomeRegistry.rawInitialize(pixlyzerData["biomes"]?.compoundCast(), this, Biome)
|
biomeRegistry.rawInitialize(pixlyzerData["biomes"]?.toJsonObject(), this, Biome)
|
||||||
dimensionRegistry.rawInitialize(pixlyzerData["dimensions"]?.compoundCast(), this, Dimension)
|
dimensionRegistry.rawInitialize(pixlyzerData["dimensions"]?.toJsonObject(), this, Dimension)
|
||||||
fluidRegistry.rawInitialize(pixlyzerData["fluids"]?.compoundCast(), this, Fluid)
|
fluidRegistry.rawInitialize(pixlyzerData["fluids"]?.toJsonObject(), this, Fluid)
|
||||||
blockRegistry.rawInitialize(pixlyzerData["blocks"]?.compoundCast(), this, Block, version.flattened, Registry.MetaTypes.BITS_4)
|
blockRegistry.rawInitialize(pixlyzerData["blocks"]?.toJsonObject(), this, Block, version.flattened, Registry.MetaTypes.BITS_4)
|
||||||
itemRegistry.rawInitialize(pixlyzerData["items"]?.compoundCast(), this, Item, version.flattened, Registry.MetaTypes.BITS_16)
|
itemRegistry.rawInitialize(pixlyzerData["items"]?.toJsonObject(), this, Item, version.flattened, Registry.MetaTypes.BITS_16)
|
||||||
|
|
||||||
blockEntityTypeRegistry.rawInitialize(pixlyzerData["block_entities"]?.compoundCast(), this, BlockEntityType)
|
blockEntityTypeRegistry.rawInitialize(pixlyzerData["block_entities"]?.toJsonObject(), this, BlockEntityType)
|
||||||
|
|
||||||
villagerProfessionRegistry.rawInitialize(pixlyzerData["villager_professions"]?.compoundCast(), this, VillagerProfession)
|
villagerProfessionRegistry.rawInitialize(pixlyzerData["villager_professions"]?.toJsonObject(), this, VillagerProfession)
|
||||||
|
|
||||||
|
|
||||||
blockEntityMetaDataTypeRegistry.rawInitialize(pixlyzerData["block_entity_meta_data_types"]?.compoundCast(), this, BlockEntityMetaType, alternative = DefaultRegistries.BLOCK_ENTITY_META_TYPE_REGISTRY.forVersion(version))
|
blockEntityMetaDataTypeRegistry.rawInitialize(pixlyzerData["block_entity_meta_data_types"]?.toJsonObject(), this, BlockEntityMetaType, alternative = DefaultRegistries.BLOCK_ENTITY_META_TYPE_REGISTRY.forVersion(version))
|
||||||
|
|
||||||
|
|
||||||
// post init
|
// post init
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package de.bixilon.minosoft.data.registries.registries
|
package de.bixilon.minosoft.data.registries.registries
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.string.StringUtil.format
|
import de.bixilon.kutil.string.StringUtil.format
|
||||||
import de.bixilon.minosoft.assets.properties.version.AssetsVersionProperties
|
import de.bixilon.minosoft.assets.properties.version.AssetsVersionProperties
|
||||||
import de.bixilon.minosoft.assets.util.FileAssetsUtil
|
import de.bixilon.minosoft.assets.util.FileAssetsUtil
|
||||||
@ -7,7 +8,6 @@ import de.bixilon.minosoft.assets.util.FileUtil
|
|||||||
import de.bixilon.minosoft.assets.util.FileUtil.readMBFMap
|
import de.bixilon.minosoft.assets.util.FileUtil.readMBFMap
|
||||||
import de.bixilon.minosoft.config.profile.profiles.resources.ResourcesProfile
|
import de.bixilon.minosoft.config.profile.profiles.resources.ResourcesProfile
|
||||||
import de.bixilon.minosoft.data.registries.versions.Version
|
import de.bixilon.minosoft.data.registries.versions.Version
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import java.io.ByteArrayInputStream
|
import java.io.ByteArrayInputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ object RegistriesLoader {
|
|||||||
val file = File(path)
|
val file = File(path)
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
// ToDo: Verify
|
// ToDo: Verify
|
||||||
return FileUtil.readFile(file, false).readMBFMap().compoundCast() ?: throw IllegalStateException("Could not read pixlyzer data!")
|
return FileUtil.readFile(file, false).readMBFMap().toJsonObject() ?: throw IllegalStateException("Could not read pixlyzer data!")
|
||||||
}
|
}
|
||||||
|
|
||||||
val savedHash = FileAssetsUtil.downloadAndGetAsset(url.format(mapOf(
|
val savedHash = FileAssetsUtil.downloadAndGetAsset(url.format(mapOf(
|
||||||
@ -42,6 +42,6 @@ object RegistriesLoader {
|
|||||||
throw IllegalStateException("Data mismatch, expected $hash, got ${savedHash.first}")
|
throw IllegalStateException("Data mismatch, expected $hash, got ${savedHash.first}")
|
||||||
}
|
}
|
||||||
|
|
||||||
return ByteArrayInputStream(savedHash.second).readMBFMap().compoundCast() ?: throw IllegalStateException("Invalid pixlyzer data!")
|
return ByteArrayInputStream(savedHash.second).readMBFMap().toJsonObject() ?: throw IllegalStateException("Invalid pixlyzer data!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,10 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.data.registries.registries.registry
|
package de.bixilon.minosoft.data.registries.registries.registry
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.primitive.IntUtil.toInt
|
import de.bixilon.kutil.primitive.IntUtil.toInt
|
||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
import de.bixilon.minosoft.util.collections.Clearable
|
import de.bixilon.minosoft.util.collections.Clearable
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
|
|
||||||
class FakeEnumRegistry<T : RegistryFakeEnumerable>(
|
class FakeEnumRegistry<T : RegistryFakeEnumerable>(
|
||||||
override var parent: FakeEnumRegistry<T>? = null,
|
override var parent: FakeEnumRegistry<T>? = null,
|
||||||
@ -49,7 +49,7 @@ class FakeEnumRegistry<T : RegistryFakeEnumerable>(
|
|||||||
check(value is Map<*, *>)
|
check(value is Map<*, *>)
|
||||||
var itemId = id.toInt()
|
var itemId = id.toInt()
|
||||||
|
|
||||||
val item = deserializer.deserialize(registries, value.asCompound())
|
val item = deserializer.deserialize(registries, value.asJsonObject())
|
||||||
value["id"]?.toInt()?.let { providedItemId ->
|
value["id"]?.toInt()?.let { providedItemId ->
|
||||||
itemId = providedItemId
|
itemId = providedItemId
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.data.registries.registries.registry
|
package de.bixilon.minosoft.data.registries.registries.registry
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.minosoft.data.registries.versions.Version
|
import de.bixilon.minosoft.data.registries.versions.Version
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class PerVersionRegistry<T : RegistryItem> {
|
class PerVersionRegistry<T : RegistryItem> {
|
||||||
@ -36,7 +36,7 @@ class PerVersionRegistry<T : RegistryItem> {
|
|||||||
|
|
||||||
val versions: SortedMap<Int, Registry<T>> = sortedMapOf({ t, t2 -> t2 - t })
|
val versions: SortedMap<Int, Registry<T>> = sortedMapOf({ t, t2 -> t2 - t })
|
||||||
for ((versionId, json) in data) {
|
for ((versionId, json) in data) {
|
||||||
versions[Integer.parseInt(versionId)] = Registry<T>().rawInitialize(json.compoundCast(), null, deserializer)
|
versions[Integer.parseInt(versionId)] = Registry<T>().rawInitialize(json.toJsonObject(), null, deserializer)
|
||||||
}
|
}
|
||||||
this.versions = versions.toMap()
|
this.versions = versions.toMap()
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.registries.registries.registry
|
|||||||
|
|
||||||
import com.google.gson.JsonElement
|
import com.google.gson.JsonElement
|
||||||
import com.google.gson.JsonPrimitive
|
import com.google.gson.JsonPrimitive
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.primitive.IntUtil.toInt
|
import de.bixilon.kutil.primitive.IntUtil.toInt
|
||||||
import de.bixilon.minosoft.data.registries.MultiResourceLocationAble
|
import de.bixilon.minosoft.data.registries.MultiResourceLocationAble
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
@ -22,7 +23,6 @@ import de.bixilon.minosoft.data.registries.ResourceLocationAble
|
|||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.json.ResourceLocationJsonMap.toResourceLocationMap
|
import de.bixilon.minosoft.util.json.ResourceLocationJsonMap.toResourceLocationMap
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
|
|
||||||
open class Registry<T : RegistryItem>(
|
open class Registry<T : RegistryItem>(
|
||||||
override var parent: AbstractRegistry<T>? = null,
|
override var parent: AbstractRegistry<T>? = null,
|
||||||
@ -120,7 +120,7 @@ open class Registry<T : RegistryItem>(
|
|||||||
|
|
||||||
for ((resourceLocation, value) in data) {
|
for ((resourceLocation, value) in data) {
|
||||||
check(value is Map<*, *>)
|
check(value is Map<*, *>)
|
||||||
val item = deserializer.deserialize(registries, resourceLocation, value.asCompound()) ?: continue
|
val item = deserializer.deserialize(registries, resourceLocation, value.asJsonObject()) ?: continue
|
||||||
value["id"]?.toInt()?.let { id ->
|
value["id"]?.toInt()?.let { id ->
|
||||||
var itemId = id
|
var itemId = id
|
||||||
if (!flattened) {
|
if (!flattened) {
|
||||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.text
|
|||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||||
import de.bixilon.kutil.json.JsonUtil.toJsonList
|
import de.bixilon.kutil.json.JsonUtil.toJsonList
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
||||||
import de.bixilon.minosoft.data.language.Translator
|
import de.bixilon.minosoft.data.language.Translator
|
||||||
import de.bixilon.minosoft.data.text.ChatCode.Companion.toColor
|
import de.bixilon.minosoft.data.text.ChatCode.Companion.toColor
|
||||||
@ -23,7 +24,6 @@ import de.bixilon.minosoft.data.text.events.HoverEvent
|
|||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
import de.bixilon.minosoft.util.KUtil.format
|
import de.bixilon.minosoft.util.KUtil.format
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.get
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.get
|
||||||
import javafx.collections.ObservableList
|
import javafx.collections.ObservableList
|
||||||
import javafx.scene.Node
|
import javafx.scene.Node
|
||||||
@ -167,8 +167,8 @@ class BaseComponent : ChatComponent {
|
|||||||
formatting.addOrRemove(PreChatFormattingCodes.OBFUSCATED, json["obfuscated"]?.toBoolean())
|
formatting.addOrRemove(PreChatFormattingCodes.OBFUSCATED, json["obfuscated"]?.toBoolean())
|
||||||
formatting.addOrRemove(PreChatFormattingCodes.SHADOWED, json["shadowed"]?.toBoolean())
|
formatting.addOrRemove(PreChatFormattingCodes.SHADOWED, json["shadowed"]?.toBoolean())
|
||||||
|
|
||||||
val clickEvent = json["clickEvent", "click_event"]?.compoundCast()?.let { click -> ClickEvent(click, restrictedMode) }
|
val clickEvent = json["clickEvent", "click_event"]?.toJsonObject()?.let { click -> ClickEvent(click, restrictedMode) }
|
||||||
val hoverEvent = json["hoverEvent", "hover_event"]?.compoundCast()?.let { hover -> HoverEvent(hover) }
|
val hoverEvent = json["hoverEvent", "hover_event"]?.toJsonObject()?.let { hover -> HoverEvent(hover) }
|
||||||
|
|
||||||
val textComponent = TextComponent(
|
val textComponent = TextComponent(
|
||||||
message = currentText,
|
message = currentText,
|
||||||
|
@ -14,12 +14,12 @@ package de.bixilon.minosoft.data.text.events.data
|
|||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.text.ChatComponent
|
import de.bixilon.minosoft.data.text.ChatComponent
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.json.Jackson
|
import de.bixilon.minosoft.util.json.Jackson
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class EntityHoverData(
|
class EntityHoverData(
|
||||||
@ -30,11 +30,11 @@ class EntityHoverData(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun deserialize(data: Any): EntityHoverData {
|
fun deserialize(data: Any): EntityHoverData {
|
||||||
var json: Map<String, Any> = if (data is String) {
|
var json: Map<String, Any> = (if (data is String) {
|
||||||
Jackson.MAPPER.readValue(data, Jackson.JSON_MAP_TYPE)
|
Jackson.MAPPER.readValue(data, Jackson.JSON_MAP_TYPE)
|
||||||
} else {
|
} else {
|
||||||
data
|
data
|
||||||
}.asCompound()
|
}).asJsonObject()
|
||||||
json["text"]?.let {
|
json["text"]?.let {
|
||||||
// 1.14.3.... lol
|
// 1.14.3.... lol
|
||||||
json = Jackson.MAPPER.readValue(it.unsafeCast<String>(), Jackson.JSON_MAP_TYPE)
|
json = Jackson.MAPPER.readValue(it.unsafeCast<String>(), Jackson.JSON_MAP_TYPE)
|
||||||
|
@ -50,7 +50,7 @@ class ItemElement(
|
|||||||
|
|
||||||
var color = ChatColors.WHITE
|
var color = ChatColors.WHITE
|
||||||
if (item.item is BlockItem) {
|
if (item.item is BlockItem) {
|
||||||
item.item.block?.defaultState?.material?.color?.let { color = it }
|
item.item.block.defaultState.material.color?.let { color = it }
|
||||||
}
|
}
|
||||||
|
|
||||||
val image = ColorElement(hudRenderer, _size, color)
|
val image = ColorElement(hudRenderer, _size, color)
|
||||||
|
@ -58,7 +58,7 @@ class ItemPickInteractionHandler(
|
|||||||
|
|
||||||
when (target) {
|
when (target) {
|
||||||
is BlockTarget -> {
|
is BlockTarget -> {
|
||||||
itemStack = ItemStack(target.blockState.block.item!!, connection, 1)
|
itemStack = ItemStack(target.blockState.block.item, connection, 1)
|
||||||
|
|
||||||
if (copyNBT) {
|
if (copyNBT) {
|
||||||
val blockEntity = connection.world.getBlockEntity(target.blockPosition)
|
val blockEntity = connection.world.getBlockEntity(target.blockPosition)
|
||||||
|
@ -14,10 +14,10 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.models.unbaked
|
package de.bixilon.minosoft.gui.rendering.models.unbaked
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.minosoft.gui.rendering.models.display.ModelDisplay
|
import de.bixilon.minosoft.gui.rendering.models.display.ModelDisplay
|
||||||
import de.bixilon.minosoft.gui.rendering.models.display.ModelDisplayPositions
|
import de.bixilon.minosoft.gui.rendering.models.display.ModelDisplayPositions
|
||||||
import de.bixilon.minosoft.gui.rendering.models.unbaked.element.UnbakedElement
|
import de.bixilon.minosoft.gui.rendering.models.unbaked.element.UnbakedElement
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
||||||
|
|
||||||
abstract class GenericUnbakedModel(
|
abstract class GenericUnbakedModel(
|
||||||
@ -31,7 +31,7 @@ abstract class GenericUnbakedModel(
|
|||||||
init {
|
init {
|
||||||
val display = parent?.display?.toMutableMap() ?: mutableMapOf()
|
val display = parent?.display?.toMutableMap() ?: mutableMapOf()
|
||||||
|
|
||||||
json["display"]?.compoundCast()?.let {
|
json["display"]?.toJsonObject()?.let {
|
||||||
for ((name, value) in it) {
|
for ((name, value) in it) {
|
||||||
display[ModelDisplayPositions[name]] = ModelDisplay(data = value.unsafeCast())
|
display[ModelDisplayPositions[name]] = ModelDisplay(data = value.unsafeCast())
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ abstract class GenericUnbakedModel(
|
|||||||
init {
|
init {
|
||||||
val textures = parent?.textures?.toMutableMap() ?: mutableMapOf()
|
val textures = parent?.textures?.toMutableMap() ?: mutableMapOf()
|
||||||
|
|
||||||
json["textures"]?.compoundCast()?.let {
|
json["textures"]?.toJsonObject()?.let {
|
||||||
for ((name, value) in it) {
|
for ((name, value) in it) {
|
||||||
textures[name] = value.toString()
|
textures[name] = value.toString()
|
||||||
}
|
}
|
||||||
|
@ -14,11 +14,12 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.models.unbaked.block
|
package de.bixilon.minosoft.gui.rendering.models.unbaked.block
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonObject
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
||||||
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
|
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
|
||||||
import de.bixilon.minosoft.gui.rendering.models.ModelLoader
|
import de.bixilon.minosoft.gui.rendering.models.ModelLoader
|
||||||
import de.bixilon.minosoft.gui.rendering.models.unbaked.AbstractUnbakedBlockModel
|
import de.bixilon.minosoft.gui.rendering.models.unbaked.AbstractUnbakedBlockModel
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
|
|
||||||
class MultipartRootModel(
|
class MultipartRootModel(
|
||||||
private val conditions: MutableMap<MutableSet<Map<BlockProperties, Set<Any>>>, MutableSet<AbstractUnbakedBlockModel>>,
|
private val conditions: MutableMap<MutableSet<Map<BlockProperties, Set<Any>>>, MutableSet<AbstractUnbakedBlockModel>>,
|
||||||
@ -71,7 +72,7 @@ class MultipartRootModel(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
private fun getCondition(data: MutableMap<String, Any>): MutableMap<BlockProperties, Set<Any>> {
|
private fun getCondition(data: JsonObject): MutableMap<BlockProperties, Set<Any>> {
|
||||||
val condition: MutableMap<BlockProperties, Set<Any>> = mutableMapOf()
|
val condition: MutableMap<BlockProperties, Set<Any>> = mutableMapOf()
|
||||||
for ((propertyName, value) in data) {
|
for ((propertyName, value) in data) {
|
||||||
var property: BlockProperties? = null
|
var property: BlockProperties? = null
|
||||||
@ -104,7 +105,7 @@ class MultipartRootModel(
|
|||||||
apply += WeightedUnbakedBlockStateModel(modelLoader, applyData.unsafeCast())
|
apply += WeightedUnbakedBlockStateModel(modelLoader, applyData.unsafeCast())
|
||||||
}
|
}
|
||||||
|
|
||||||
modelData["when"]?.compoundCast()?.let {
|
modelData["when"]?.toJsonObject()?.let {
|
||||||
val or = it["OR"]
|
val or = it["OR"]
|
||||||
if (or is List<*>) {
|
if (or is List<*>) {
|
||||||
for (orData in or) {
|
for (orData in or) {
|
||||||
|
@ -14,11 +14,11 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.models.unbaked.element
|
package de.bixilon.minosoft.gui.rendering.models.unbaked.element
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
||||||
import de.bixilon.minosoft.data.direction.Directions
|
import de.bixilon.minosoft.data.direction.Directions
|
||||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.toVec3
|
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.toVec3
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import glm_.vec3.Vec3
|
import glm_.vec3.Vec3
|
||||||
|
|
||||||
data class UnbakedElement(
|
data class UnbakedElement(
|
||||||
@ -37,7 +37,7 @@ data class UnbakedElement(
|
|||||||
val from = data["from"].toVec3() / BLOCK_RESOLUTION
|
val from = data["from"].toVec3() / BLOCK_RESOLUTION
|
||||||
val to = data["to"].toVec3() / BLOCK_RESOLUTION
|
val to = data["to"].toVec3() / BLOCK_RESOLUTION
|
||||||
|
|
||||||
data["faces"].asCompound().let {
|
data["faces"].asJsonObject().let {
|
||||||
for ((directionString, faceData) in it) {
|
for ((directionString, faceData) in it) {
|
||||||
val direction = Directions[directionString]
|
val direction = Directions[directionString]
|
||||||
val (fallbackUVStart, fallbackUVEnd) = direction.getFallbackUV(from, to)
|
val (fallbackUVStart, fallbackUVEnd) = direction.getFallbackUV(from, to)
|
||||||
@ -48,7 +48,7 @@ data class UnbakedElement(
|
|||||||
return UnbakedElement(
|
return UnbakedElement(
|
||||||
from = from,
|
from = from,
|
||||||
to = to,
|
to = to,
|
||||||
rotation = data["rotation"]?.compoundCast()?.let { return@let UnbakedElementRotation(data = it) },
|
rotation = data["rotation"]?.toJsonObject()?.let { return@let UnbakedElementRotation(data = it) },
|
||||||
shade = data["shade"]?.toBoolean() ?: true,
|
shade = data["shade"]?.toBoolean() ?: true,
|
||||||
faces = faces,
|
faces = faces,
|
||||||
)
|
)
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.sound
|
package de.bixilon.minosoft.gui.rendering.sound
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.minosoft.assets.util.FileUtil.readJsonObject
|
import de.bixilon.minosoft.assets.util.FileUtil.readJsonObject
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.sound.sounds.Sound
|
import de.bixilon.minosoft.gui.rendering.sound.sounds.Sound
|
||||||
import de.bixilon.minosoft.gui.rendering.sound.sounds.SoundType
|
import de.bixilon.minosoft.gui.rendering.sound.sounds.SoundType
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class SoundManager(
|
class SoundManager(
|
||||||
@ -21,7 +21,7 @@ class SoundManager(
|
|||||||
|
|
||||||
for ((name, data) in soundsIndex) {
|
for ((name, data) in soundsIndex) {
|
||||||
val resourceLocation = name.toResourceLocation()
|
val resourceLocation = name.toResourceLocation()
|
||||||
sounds[resourceLocation] = SoundType(resourceLocation, data.asCompound())
|
sounds[resourceLocation] = SoundType(resourceLocation, data.asJsonObject())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
package de.bixilon.minosoft.protocol.packets.s2c.play
|
package de.bixilon.minosoft.protocol.packets.s2c.play
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.minosoft.data.entities.block.DefaultBlockEntityMetaDataFactory
|
import de.bixilon.minosoft.data.entities.block.DefaultBlockEntityMetaDataFactory
|
||||||
import de.bixilon.minosoft.modding.event.events.BlockEntityMetaDataChangeEvent
|
import de.bixilon.minosoft.modding.event.events.BlockEntityMetaDataChangeEvent
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
@ -22,7 +23,6 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_21W37A
|
|||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
|
|
||||||
class BlockEntityMetaDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
class BlockEntityMetaDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
||||||
@ -36,7 +36,7 @@ class BlockEntityMetaDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
} else {
|
} else {
|
||||||
buffer.connection.registries.blockEntityMetaDataTypeRegistry[buffer.readUnsignedByte()].resourceLocation
|
buffer.connection.registries.blockEntityMetaDataTypeRegistry[buffer.readUnsignedByte()].resourceLocation
|
||||||
}
|
}
|
||||||
val nbt = buffer.readNBT().asCompound()
|
val nbt = buffer.readNBT().asJsonObject()
|
||||||
|
|
||||||
override fun handle(connection: PlayConnection) {
|
override fun handle(connection: PlayConnection) {
|
||||||
connection.world.getBlockEntity(position)?.updateNBT(nbt) ?: let {
|
connection.world.getBlockEntity(position)?.updateNBT(nbt) ?: let {
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
*/
|
*/
|
||||||
package de.bixilon.minosoft.protocol.packets.s2c.play
|
package de.bixilon.minosoft.protocol.packets.s2c.play
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.IntUtil.toInt
|
import de.bixilon.kutil.primitive.IntUtil.toInt
|
||||||
import de.bixilon.minosoft.data.entities.block.BlockEntity
|
import de.bixilon.minosoft.data.entities.block.BlockEntity
|
||||||
import de.bixilon.minosoft.data.world.ChunkData
|
import de.bixilon.minosoft.data.world.ChunkData
|
||||||
@ -39,8 +41,6 @@ import de.bixilon.minosoft.util.chunk.ChunkUtil
|
|||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import glm_.vec2.Vec2i
|
import glm_.vec2.Vec2i
|
||||||
import glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -88,7 +88,7 @@ class ChunkDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
if (buffer.versionId >= V_18W44A) {
|
if (buffer.versionId >= V_18W44A) {
|
||||||
heightMap = buffer.readNBT()?.compoundCast()
|
heightMap = buffer.readNBT()?.toJsonObject()
|
||||||
}
|
}
|
||||||
if (!isFullChunk && buffer.versionId < V_21W37A) {
|
if (!isFullChunk && buffer.versionId < V_21W37A) {
|
||||||
this.chunkData.biomeSource = SpatialBiomeArray(buffer.readBiomeArray())
|
this.chunkData.biomeSource = SpatialBiomeArray(buffer.readBiomeArray())
|
||||||
@ -118,7 +118,7 @@ class ChunkDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
val blockEntities: MutableMap<Vec3i, BlockEntity> = mutableMapOf()
|
val blockEntities: MutableMap<Vec3i, BlockEntity> = mutableMapOf()
|
||||||
val positionOffset = Vec3i.of(chunkPosition, dimension.lowestSection, Vec3i.EMPTY)
|
val positionOffset = Vec3i.of(chunkPosition, dimension.lowestSection, Vec3i.EMPTY)
|
||||||
for (i in 0 until buffer.readVarInt()) {
|
for (i in 0 until buffer.readVarInt()) {
|
||||||
val nbt = buffer.readNBT().asCompound()
|
val nbt = buffer.readNBT().asJsonObject()
|
||||||
val position = Vec3i(nbt["x"]?.toInt() ?: continue, nbt["y"]?.toInt() ?: continue, nbt["z"]?.toInt() ?: continue) - positionOffset
|
val position = Vec3i(nbt["x"]?.toInt() ?: continue, nbt["y"]?.toInt() ?: continue, nbt["z"]?.toInt() ?: continue) - positionOffset
|
||||||
val resourceLocation = (nbt["id"]?.toResourceLocation() ?: continue).fix()
|
val resourceLocation = (nbt["id"]?.toResourceLocation() ?: continue).fix()
|
||||||
val type = buffer.connection.registries.blockEntityTypeRegistry[resourceLocation] ?: let {
|
val type = buffer.connection.registries.blockEntityTypeRegistry[resourceLocation] ?: let {
|
||||||
@ -138,7 +138,7 @@ class ChunkDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
val xz = buffer.readUnsignedByte()
|
val xz = buffer.readUnsignedByte()
|
||||||
val y = buffer.readShort()
|
val y = buffer.readShort()
|
||||||
val type = buffer.connection.registries.blockEntityTypeRegistry[buffer.readVarInt()]
|
val type = buffer.connection.registries.blockEntityTypeRegistry[buffer.readVarInt()]
|
||||||
val nbt = buffer.readNBT()?.asCompound() ?: continue
|
val nbt = buffer.readNBT()?.asJsonObject() ?: continue
|
||||||
val entity = type.build(buffer.connection)
|
val entity = type.build(buffer.connection)
|
||||||
entity.updateNBT(nbt)
|
entity.updateNBT(nbt)
|
||||||
blockEntities[Vec3i(xz shr 4, y, xz and 0x0F)] = entity
|
blockEntities[Vec3i(xz shr 4, y, xz and 0x0F)] = entity
|
||||||
|
@ -14,6 +14,8 @@ package de.bixilon.minosoft.protocol.packets.s2c.play
|
|||||||
|
|
||||||
import com.google.common.collect.HashBiMap
|
import com.google.common.collect.HashBiMap
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.minosoft.data.Difficulties
|
import de.bixilon.minosoft.data.Difficulties
|
||||||
import de.bixilon.minosoft.data.abilities.Gamemodes
|
import de.bixilon.minosoft.data.abilities.Gamemodes
|
||||||
import de.bixilon.minosoft.data.registries.DefaultRegistries
|
import de.bixilon.minosoft.data.registries.DefaultRegistries
|
||||||
@ -38,8 +40,6 @@ import de.bixilon.minosoft.util.BitByte
|
|||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
||||||
|
|
||||||
class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
||||||
@ -104,12 +104,12 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
if (buffer.versionId < ProtocolVersions.V_20W21A) {
|
if (buffer.versionId < ProtocolVersions.V_20W21A) {
|
||||||
dimensionProperties = buffer.connection.registries.dimensionRegistry[buffer.readInt()].type
|
dimensionProperties = buffer.connection.registries.dimensionRegistry[buffer.readInt()].type
|
||||||
} else {
|
} else {
|
||||||
val dimensionCodec = buffer.readNBT().asCompound()
|
val dimensionCodec = buffer.readNBT().asJsonObject()
|
||||||
dimensions = parseDimensionCodec(dimensionCodec, buffer.versionId)
|
dimensions = parseDimensionCodec(dimensionCodec, buffer.versionId)
|
||||||
dimensionProperties = if (buffer.versionId < ProtocolVersions.V_1_16_2_PRE3) {
|
dimensionProperties = if (buffer.versionId < ProtocolVersions.V_1_16_2_PRE3) {
|
||||||
dimensions[buffer.readResourceLocation()]!!.type
|
dimensions[buffer.readResourceLocation()]!!.type
|
||||||
} else {
|
} else {
|
||||||
DimensionProperties.deserialize(buffer.readNBT().asCompound())
|
DimensionProperties.deserialize(buffer.readNBT().asJsonObject())
|
||||||
}
|
}
|
||||||
world = buffer.readResourceLocation()
|
world = buffer.readResourceLocation()
|
||||||
}
|
}
|
||||||
@ -183,7 +183,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
val listTag: MutableList<Map<*, *>> = if (versionId < ProtocolVersions.V_20W28A) {
|
val listTag: MutableList<Map<*, *>> = if (versionId < ProtocolVersions.V_20W28A) {
|
||||||
nbt["dimension"]?.listCast()
|
nbt["dimension"]?.listCast()
|
||||||
} else {
|
} else {
|
||||||
nbt["minecraft:dimension_type"]?.compoundCast()?.get("value")?.listCast()
|
nbt["minecraft:dimension_type"]?.toJsonObject()?.get("value")?.listCast()
|
||||||
}!!
|
}!!
|
||||||
for (tag in listTag) {
|
for (tag in listTag) {
|
||||||
val dimensionResourceLocation = ResourceLocation(tag[if (versionId < ProtocolVersions.V_1_16_PRE3) {
|
val dimensionResourceLocation = ResourceLocation(tag[if (versionId < ProtocolVersions.V_1_16_PRE3) {
|
||||||
@ -192,9 +192,9 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
"name"
|
"name"
|
||||||
}].unsafeCast())
|
}].unsafeCast())
|
||||||
val dimensionPropertyTag = if (versionId < ProtocolVersions.V_1_16_PRE3 || versionId >= ProtocolVersions.V_1_16_2_PRE1) {
|
val dimensionPropertyTag = if (versionId < ProtocolVersions.V_1_16_PRE3 || versionId >= ProtocolVersions.V_1_16_2_PRE1) {
|
||||||
tag["element"].asCompound()
|
tag["element"].asJsonObject()
|
||||||
} else {
|
} else {
|
||||||
tag.asCompound()
|
tag.asJsonObject()
|
||||||
}
|
}
|
||||||
dimensionMap[dimensionResourceLocation] = Dimension.deserialize(null, dimensionResourceLocation, dimensionPropertyTag)
|
dimensionMap[dimensionResourceLocation] = Dimension.deserialize(null, dimensionResourceLocation, dimensionPropertyTag)
|
||||||
}
|
}
|
||||||
|
@ -12,16 +12,16 @@
|
|||||||
*/
|
*/
|
||||||
package de.bixilon.minosoft.protocol.packets.s2c.play
|
package de.bixilon.minosoft.protocol.packets.s2c.play
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
||||||
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
|
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
|
||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
|
|
||||||
class NBTQueryResponseS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
class NBTQueryResponseS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
||||||
val transactionId: Int = buffer.readVarInt()
|
val transactionId: Int = buffer.readVarInt()
|
||||||
val nbt: Map<String, Any> = buffer.readNBT().asCompound()
|
val nbt: Map<String, Any> = buffer.readNBT().asJsonObject()
|
||||||
|
|
||||||
override fun log(reducedLog: Boolean) {
|
override fun log(reducedLog: Boolean) {
|
||||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "NBT query response (transactionId=$transactionId nbt=$nbt)" }
|
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "NBT query response (transactionId=$transactionId nbt=$nbt)" }
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
package de.bixilon.minosoft.protocol.packets.s2c.play
|
package de.bixilon.minosoft.protocol.packets.s2c.play
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.minosoft.data.Difficulties
|
import de.bixilon.minosoft.data.Difficulties
|
||||||
import de.bixilon.minosoft.data.abilities.Gamemodes
|
import de.bixilon.minosoft.data.abilities.Gamemodes
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
@ -25,7 +26,6 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
|
|||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import glm_.vec3.Vec3d
|
import glm_.vec3.Vec3d
|
||||||
|
|
||||||
class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
||||||
@ -60,7 +60,7 @@ class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
buffer.connection.registries.dimensionRegistry[buffer.readResourceLocation()]!!.type
|
buffer.connection.registries.dimensionRegistry[buffer.readResourceLocation()]!!.type
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
DimensionProperties.deserialize(buffer.readNBT().asCompound()) // current dimension data
|
DimensionProperties.deserialize(buffer.readNBT().asJsonObject()) // current dimension data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (buffer.versionId < ProtocolVersions.V_19W11A) {
|
if (buffer.versionId < ProtocolVersions.V_19W11A) {
|
||||||
|
@ -35,7 +35,7 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_19W36A
|
|||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_13_2_PRE1
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_13_2_PRE1
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_9_1_PRE1
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_9_1_PRE1
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_20W28A
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_20W28A
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.toMutableJsonObject
|
||||||
import glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
|
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ class PlayInByteBuffer : InByteBuffer {
|
|||||||
if (!connection.version.flattened) {
|
if (!connection.version.flattened) {
|
||||||
metaData = readUnsignedShort()
|
metaData = readUnsignedShort()
|
||||||
}
|
}
|
||||||
val nbt = readNBTTag(versionId < V_14W28B)?.compoundCast()
|
val nbt = readNBTTag(versionId < V_14W28B)?.toMutableJsonObject()
|
||||||
return ItemStack(
|
return ItemStack(
|
||||||
item = connection.registries.itemRegistry[id shl 16 or metaData],
|
item = connection.registries.itemRegistry[id shl 16 or metaData],
|
||||||
connection = connection,
|
connection = connection,
|
||||||
@ -136,7 +136,7 @@ class PlayInByteBuffer : InByteBuffer {
|
|||||||
item = connection.registries.itemRegistry[readVarInt()],
|
item = connection.registries.itemRegistry[readVarInt()],
|
||||||
connection = connection,
|
connection = connection,
|
||||||
count = readUnsignedByte(),
|
count = readUnsignedByte(),
|
||||||
nbt = readNBT()?.compoundCast() ?: mutableMapOf(),
|
nbt = readNBT()?.toMutableJsonObject() ?: mutableMapOf(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.protocol.status
|
package de.bixilon.minosoft.protocol.status
|
||||||
|
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||||
import de.bixilon.kutil.primitive.IntUtil.toInt
|
import de.bixilon.kutil.primitive.IntUtil.toInt
|
||||||
import de.bixilon.minosoft.data.text.ChatComponent
|
import de.bixilon.minosoft.data.text.ChatComponent
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class ServerStatus(
|
class ServerStatus(
|
||||||
@ -38,11 +38,11 @@ class ServerStatus(
|
|||||||
private set
|
private set
|
||||||
|
|
||||||
init {
|
init {
|
||||||
data["version"]?.compoundCast()?.let {
|
data["version"]?.toJsonObject()?.let {
|
||||||
protocolId = it["protocol"]?.toInt()
|
protocolId = it["protocol"]?.toInt()
|
||||||
serverBrand = it["name"]?.toString()
|
serverBrand = it["name"]?.toString()
|
||||||
}
|
}
|
||||||
data["players"]?.compoundCast()?.let {
|
data["players"]?.toJsonObject()?.let {
|
||||||
usedSlots = it["online"]?.toInt()
|
usedSlots = it["online"]?.toInt()
|
||||||
slots = it["max"]?.toInt()
|
slots = it["max"]?.toInt()
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.util.account.microsoft
|
|||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
import de.bixilon.kutil.json.JsonUtil.asJsonList
|
import de.bixilon.kutil.json.JsonUtil.asJsonList
|
||||||
|
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||||
import de.bixilon.kutil.primitive.LongUtil.toLong
|
import de.bixilon.kutil.primitive.LongUtil.toLong
|
||||||
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
||||||
import de.bixilon.minosoft.data.accounts.types.MicrosoftAccount
|
import de.bixilon.minosoft.data.accounts.types.MicrosoftAccount
|
||||||
@ -27,7 +28,6 @@ import de.bixilon.minosoft.util.http.HTTP2.postJson
|
|||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
import de.bixilon.minosoft.util.logging.LogLevels
|
import de.bixilon.minosoft.util.logging.LogLevels
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
|
|
||||||
import de.bixilon.minosoft.util.url.URLProtocolStreamHandlers
|
import de.bixilon.minosoft.util.url.URLProtocolStreamHandlers
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
import java.net.URLConnection
|
import java.net.URLConnection
|
||||||
@ -92,7 +92,7 @@ object MicrosoftOAuthUtils {
|
|||||||
if (response.statusCode != 200) {
|
if (response.statusCode != 200) {
|
||||||
throw LoginException(response.statusCode, "Could not authenticate with xbox live token", response.body.toString())
|
throw LoginException(response.statusCode, "Could not authenticate with xbox live token", response.body.toString())
|
||||||
}
|
}
|
||||||
return Pair(response.body["Token"].unsafeCast(), response.body["DisplayClaims"].asCompound()["xui"].asJsonList()[0].asCompound()["uhs"].unsafeCast())
|
return Pair(response.body["Token"].unsafeCast(), response.body["DisplayClaims"].asJsonObject()["xui"].asJsonList()[0].asJsonObject()["uhs"].unsafeCast())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getXSTSToken(xBoxLiveToken: String): String {
|
fun getXSTSToken(xBoxLiveToken: String): String {
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
package de.bixilon.minosoft.util.nbt.tag
|
package de.bixilon.minosoft.util.nbt.tag
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||||
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.json.MutableJsonObject
|
||||||
|
|
||||||
object NBTUtil {
|
object NBTUtil {
|
||||||
|
|
||||||
@ -34,14 +36,17 @@ object NBTUtil {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Any?.compoundCast(): MutableMap<String, Any>? {
|
@Deprecated("Will be in Kutil 1.4")
|
||||||
return this.nullCast()
|
fun Any?.asMutableJsonObject(): MutableJsonObject {
|
||||||
|
return this.unsafeCast()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Any?.asCompound(): MutableMap<String, Any> {
|
@Deprecated("Will be in Kutil 1.4")
|
||||||
return this.compoundCast()!!
|
fun Any?.toMutableJsonObject(): MutableJsonObject? {
|
||||||
|
return this?.nullCast()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun <T> Any?.listCast(): MutableList<T>? {
|
fun <T> Any?.listCast(): MutableList<T>? {
|
||||||
try {
|
try {
|
||||||
return this as MutableList<T>
|
return this as MutableList<T>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user