forked from mirrors/cobblemon
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dfc50bfaaa |
@@ -58,6 +58,7 @@ import com.cobblemon.mod.common.api.reactive.Observable
|
||||
import com.cobblemon.mod.common.api.reactive.SettableObservable
|
||||
import com.cobblemon.mod.common.api.reactive.SimpleObservable
|
||||
import com.cobblemon.mod.common.api.scheduling.afterOnServer
|
||||
import com.cobblemon.mod.common.api.storage.InvalidSpeciesException
|
||||
import com.cobblemon.mod.common.api.storage.StoreCoordinates
|
||||
import com.cobblemon.mod.common.api.storage.party.NPCPartyStore
|
||||
import com.cobblemon.mod.common.api.storage.party.PlayerPartyStore
|
||||
@@ -109,6 +110,7 @@ import com.cobblemon.mod.common.util.lang
|
||||
import com.cobblemon.mod.common.util.playSoundServer
|
||||
import com.cobblemon.mod.common.util.server
|
||||
import com.cobblemon.mod.common.util.setPositionSafely
|
||||
import com.cobblemon.mod.common.util.startWith
|
||||
import com.cobblemon.mod.common.util.toBlockPos
|
||||
import com.google.gson.JsonObject
|
||||
import com.mojang.datafixers.util.Pair
|
||||
@@ -134,6 +136,7 @@ import net.minecraft.network.chat.MutableComponent
|
||||
import net.minecraft.network.chat.contents.PlainTextContents
|
||||
import net.minecraft.network.codec.ByteBufCodecs
|
||||
import net.minecraft.network.codec.StreamCodec
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.tags.FluidTags
|
||||
@@ -154,6 +157,7 @@ import net.minecraft.world.level.block.WitherRoseBlock
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import kotlin.math.*
|
||||
import net.minecraft.util.Mth
|
||||
import java.util.regex.Pattern
|
||||
|
||||
enum class OriginalTrainerType : StringRepresentable {
|
||||
NONE, PLAYER, NPC;
|
||||
@@ -1653,11 +1657,29 @@ open class Pokemon : ShowdownIdentifiable {
|
||||
internal val SHEDINJA = cobblemonResource("shedinja")
|
||||
|
||||
fun loadFromNBT(registryAccess: RegistryAccess, compound: CompoundTag): Pokemon {
|
||||
return this.loadFrom(registryAccess.createSerializationContext(NbtOps.INSTANCE), compound).orThrow.first
|
||||
val result = this.loadFrom(registryAccess.createSerializationContext(NbtOps.INSTANCE), compound)
|
||||
result.error().ifPresent {
|
||||
if (it.message().startsWith("No species for ID")) {
|
||||
val matcher = Pattern.compile("[a-z0-9_.-]:[a-z0-9/._-]").matcher(it.message())
|
||||
matcher.find()
|
||||
throw InvalidSpeciesException(ResourceLocation.parse(matcher.group(0)))
|
||||
}
|
||||
}
|
||||
|
||||
return result.orThrow.first
|
||||
}
|
||||
|
||||
fun loadFromJSON(registryAccess: RegistryAccess, json: JsonObject): Pokemon {
|
||||
return this.loadFrom(registryAccess.createSerializationContext(JsonOps.INSTANCE), json).orThrow.first
|
||||
val result = this.loadFrom(registryAccess.createSerializationContext(JsonOps.INSTANCE), json)
|
||||
result.error().ifPresent {
|
||||
if (it.message().startsWith("No species for ID")) {
|
||||
val matcher = Pattern.compile("[a-z0-9_.-]:[a-z0-9/._-]").matcher(it.message())
|
||||
matcher.find()
|
||||
throw InvalidSpeciesException(ResourceLocation.parse(matcher.group(0)))
|
||||
}
|
||||
}
|
||||
|
||||
return result.orThrow.first
|
||||
}
|
||||
|
||||
private fun <T> loadFrom(ops: DynamicOps<T>, data: T): DataResult<Pair<Pokemon, T>> {
|
||||
|
||||
Reference in New Issue
Block a user