mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-20 22:26:24 -04:00
Compare commits
1
Commits
1.8.2
...
form-registry
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0ffa4c565 |
@@ -9,6 +9,7 @@ architectury {
|
||||
|
||||
repositories {
|
||||
maven(url = "https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/")
|
||||
maven(url = "https://maven.impactdev.net/repository/development/")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -38,6 +39,8 @@ dependencies {
|
||||
// modCompileOnly 'com.caoccao.javet:javet:1.0.6' // Linux or Windows
|
||||
// modCompileOnly 'com.caoccao.javet:javet-macos:1.0.6' // Mac OS (x86_64 Only)
|
||||
// modCompileOnly group: 'commons-io', name: 'commons-io', version: '2.6'
|
||||
|
||||
implementation("net.impactdev:json:1.0.0")
|
||||
}
|
||||
|
||||
publishing {
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.cobblemon.mod.common.api.pokemon
|
||||
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.api.abilities.AbilityPool
|
||||
import com.cobblemon.mod.common.api.abilities.AbilityTemplate
|
||||
import com.cobblemon.mod.common.api.ai.SleepDepth
|
||||
import com.cobblemon.mod.common.api.conditional.RegistryLikeCondition
|
||||
import com.cobblemon.mod.common.api.data.DataRegistry
|
||||
import com.cobblemon.mod.common.api.data.JsonDataRegistry
|
||||
import com.cobblemon.mod.common.api.drop.DropEntry
|
||||
import com.cobblemon.mod.common.api.drop.ItemDropMethod
|
||||
import com.cobblemon.mod.common.api.entity.EntityDimensionsAdapter
|
||||
import com.cobblemon.mod.common.api.moves.MoveTemplate
|
||||
import com.cobblemon.mod.common.api.moves.adapters.MoveTemplateAdapter
|
||||
import com.cobblemon.mod.common.api.pokemon.effect.ShoulderEffect
|
||||
import com.cobblemon.mod.common.api.pokemon.effect.adapter.ShoulderEffectAdapter
|
||||
import com.cobblemon.mod.common.api.pokemon.egg.EggGroup
|
||||
import com.cobblemon.mod.common.api.pokemon.evolution.Evolution
|
||||
import com.cobblemon.mod.common.api.pokemon.evolution.PreEvolution
|
||||
import com.cobblemon.mod.common.api.pokemon.evolution.requirement.EvolutionRequirement
|
||||
import com.cobblemon.mod.common.api.pokemon.experience.ExperienceGroup
|
||||
import com.cobblemon.mod.common.api.pokemon.experience.ExperienceGroupAdapter
|
||||
import com.cobblemon.mod.common.api.pokemon.moves.Learnset
|
||||
import com.cobblemon.mod.common.api.pokemon.stats.Stat
|
||||
import com.cobblemon.mod.common.api.reactive.SimpleObservable
|
||||
import com.cobblemon.mod.common.api.spawning.condition.TimeRange
|
||||
import com.cobblemon.mod.common.api.types.ElementalType
|
||||
import com.cobblemon.mod.common.api.types.adapters.ElementalTypeAdapter
|
||||
import com.cobblemon.mod.common.pokemon.FormData
|
||||
import com.cobblemon.mod.common.pokemon.evolution.adapters.CobblemonEvolutionAdapter
|
||||
import com.cobblemon.mod.common.pokemon.evolution.adapters.CobblemonPreEvolutionAdapter
|
||||
import com.cobblemon.mod.common.pokemon.evolution.adapters.CobblemonRequirementAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.AbilityPoolAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.AbilityTemplateAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.BiomeLikeConditionAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.BlockLikeConditionAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.BoxAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.DropEntryAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.EggGroupAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.IdentifierAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.IntRangeAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.ItemLikeConditionAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.LazySetAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.LearnsetAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.NbtCompoundAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.TimeRangeAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.pokemonPropertiesShortAdapter
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import net.minecraft.block.Block
|
||||
import net.minecraft.entity.EntityDimensions
|
||||
import net.minecraft.item.Item
|
||||
import net.minecraft.nbt.NbtCompound
|
||||
import net.minecraft.resource.ResourceType
|
||||
import net.minecraft.server.network.ServerPlayerEntity
|
||||
import net.minecraft.util.Identifier
|
||||
import net.minecraft.util.math.Box
|
||||
import net.minecraft.world.biome.Biome
|
||||
|
||||
object PokemonForms : JsonDataRegistry<FormData> {
|
||||
|
||||
override val id = cobblemonResource("forms")
|
||||
override val type = ResourceType.SERVER_DATA
|
||||
|
||||
override val gson: Gson = GsonBuilder()
|
||||
.registerTypeAdapter(Stat::class.java, Cobblemon.statProvider.typeAdapter)
|
||||
.registerTypeAdapter(ElementalType::class.java, ElementalTypeAdapter)
|
||||
.registerTypeAdapter(AbilityTemplate::class.java, AbilityTemplateAdapter)
|
||||
.registerTypeAdapter(ShoulderEffect::class.java, ShoulderEffectAdapter)
|
||||
.registerTypeAdapter(MoveTemplate::class.java, MoveTemplateAdapter)
|
||||
.registerTypeAdapter(ExperienceGroup::class.java, ExperienceGroupAdapter)
|
||||
.registerTypeAdapter(EntityDimensions::class.java, EntityDimensionsAdapter)
|
||||
.registerTypeAdapter(Learnset::class.java, LearnsetAdapter)
|
||||
.registerTypeAdapter(Evolution::class.java, CobblemonEvolutionAdapter)
|
||||
.registerTypeAdapter(Box::class.java, BoxAdapter)
|
||||
.registerTypeAdapter(AbilityPool::class.java, AbilityPoolAdapter)
|
||||
.registerTypeAdapter(EvolutionRequirement::class.java, CobblemonRequirementAdapter)
|
||||
.registerTypeAdapter(PreEvolution::class.java, CobblemonPreEvolutionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(Set::class.java, Evolution::class.java).type, LazySetAdapter(Evolution::class))
|
||||
.registerTypeAdapter(IntRange::class.java, IntRangeAdapter)
|
||||
.registerTypeAdapter(PokemonProperties::class.java, pokemonPropertiesShortAdapter)
|
||||
.registerTypeAdapter(Identifier::class.java, IdentifierAdapter)
|
||||
.registerTypeAdapter(TimeRange::class.java, TimeRangeAdapter)
|
||||
.registerTypeAdapter(ItemDropMethod::class.java, ItemDropMethod.adapter)
|
||||
.registerTypeAdapter(SleepDepth::class.java, SleepDepth.adapter)
|
||||
.registerTypeAdapter(DropEntry::class.java, DropEntryAdapter)
|
||||
.registerTypeAdapter(NbtCompound::class.java, NbtCompoundAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Biome::class.java).type, BiomeLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Block::class.java).type, BlockLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Item::class.java).type, ItemLikeConditionAdapter)
|
||||
.registerTypeAdapter(EggGroup::class.java, EggGroupAdapter)
|
||||
.disableHtmlEscaping()
|
||||
.enableComplexMapKeySerialization()
|
||||
.create()
|
||||
|
||||
override val typeToken: TypeToken<FormData> = TypeToken.get(FormData::class.java)
|
||||
override val resourcePath: String = "forms"
|
||||
|
||||
override val observable = SimpleObservable<PokemonForms>()
|
||||
|
||||
override fun reload(data: Map<Identifier, FormData>) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
override fun sync(player: ServerPlayerEntity) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
@@ -84,6 +84,8 @@ class FormData(
|
||||
private var _dynamaxBlocked: Boolean? = null,
|
||||
@SerializedName("eggGroups")
|
||||
private val _eggGroups: Set<EggGroup>? = null,
|
||||
@SerializedName("eggCycles")
|
||||
private val _eggCycles: Int? = null,
|
||||
@SerializedName("height")
|
||||
private var _height: Float? = null,
|
||||
@SerializedName("weight")
|
||||
@@ -156,6 +158,9 @@ class FormData(
|
||||
val eggGroups: Set<EggGroup>
|
||||
get() = _eggGroups ?: species.eggGroups
|
||||
|
||||
val eggCycles: Int
|
||||
get() = _eggCycles ?: species.eggCycles
|
||||
|
||||
/**
|
||||
* The height in decimeters
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.cobblemon.mod.common.util
|
||||
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.google.gson.JsonObject
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.io.File
|
||||
import java.io.FileReader
|
||||
import java.io.FileWriter
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
import kotlin.io.path.absolute
|
||||
import kotlin.io.path.nameWithoutExtension
|
||||
|
||||
internal class FormScrapper {
|
||||
|
||||
@Test
|
||||
fun scrap() {
|
||||
val root = Paths.get("src")
|
||||
.resolve("main")
|
||||
.resolve("resources")
|
||||
.resolve("data")
|
||||
.resolve("cobblemon")
|
||||
.resolve("species")
|
||||
.absolute()
|
||||
|
||||
val target = root.parent
|
||||
.resolve("rewrites")
|
||||
|
||||
val gson = GsonBuilder().setPrettyPrinting().create()
|
||||
|
||||
val species = target.resolve("species")
|
||||
val forms = target.resolve("forms")
|
||||
|
||||
for (directory in root.toFile().list { dir, name -> Files.isDirectory(root.resolve(name))}) {
|
||||
val d = root.resolve(directory)
|
||||
Files.walk(d).use { stream ->
|
||||
stream.filter{ !it.equals(d) }.forEach {
|
||||
val name = it.fileName.nameWithoutExtension
|
||||
val json = gson.fromJson(FileReader(it.toFile()), JsonObject::class.java)
|
||||
|
||||
val rewrite = JsonObject()
|
||||
json.keySet().stream()
|
||||
.filter { key -> !key.equals("forms") && !key.equals("evolutions")}
|
||||
.forEach { key ->
|
||||
rewrite.add(key, json.get(key))
|
||||
}
|
||||
|
||||
var writer = FileWriter(this.createFile(species.resolve(directory).resolve("$name.json")))
|
||||
writer.use {
|
||||
writer.write(gson.toJson(rewrite))
|
||||
}
|
||||
|
||||
val formList = json.getAsJsonArray("forms")
|
||||
for (child in formList) {
|
||||
val obj = child as JsonObject
|
||||
val formName = obj.get("name").asString
|
||||
|
||||
writer = FileWriter(this.createFile(forms.resolve(directory).resolve(name).resolve("$formName.json")))
|
||||
writer.use {
|
||||
writer.write(gson.toJson(child))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun createFile(target: Path): File {
|
||||
if(!Files.exists(target)) {
|
||||
Files.createDirectories(target.parent)
|
||||
Files.createFile(target)
|
||||
}
|
||||
|
||||
return target.toFile()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user