Skip to content

Commit dac8bd5

Browse files
committed
First Draft of 1.7 cobblemon port.
1 parent 17f2ed0 commit dac8bd5

34 files changed

+115
-157
lines changed

common/src/main/java/generations/gg/generations/core/generationscore/common/GenerationsDataProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class GenerationsDataProvider : DataProvider {
4949
}
5050
}
5151

52-
override fun <T : DataRegistry> register(registry: T): T {
52+
override fun <T : DataRegistry> register(registry: T, reloadable: Boolean /* TODO: Look up hwo cobblemon does this and if we need thsi still.*/): T {
5353
registries.add(registry)
5454
GenerationsCore.LOGGER.info("Registered the {} registry", registry.id)
5555
GenerationsCore.LOGGER.debug("Registered the {} registry of class {}", registry.id, registry.javaClass.canonicalName)

common/src/main/java/generations/gg/generations/core/generationscore/common/api/player/CurryDex.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package generations.gg.generations.core.generationscore.common.api.player
22

33
import com.cobblemon.mod.common.Cobblemon
4-
import com.cobblemon.mod.common.api.berry.Flavor
4+
import com.cobblemon.mod.common.api.cooking.Flavour
55
import com.cobblemon.mod.common.util.party
66
import com.google.gson.JsonObject
77
import com.mojang.serialization.Codec
@@ -71,7 +71,7 @@ class CurryDex @JvmOverloads constructor(var entries: MutableList<CurryDexEntry>
7171
}
7272
}
7373

74-
data class CurryDexEntry(var instant: Long, var pokemonName: String, var biome: ResourceKey<Biome>, var pos: BlockPos, var newEntry: Boolean = true, var type: CurryType= CurryType.None, var flavor: Flavor?, var rating: CurryTasteRating) {
74+
data class CurryDexEntry(var instant: Long, var pokemonName: String, var biome: ResourceKey<Biome>, var pos: BlockPos, var newEntry: Boolean = true, var type: CurryType= CurryType.None, var flavor: Flavour?, var rating: CurryTasteRating) {
7575

7676
companion object {
7777
@JvmField val CODEC: Codec<CurryDexEntry> = RecordCodecBuilder.create { instance ->
@@ -82,7 +82,7 @@ class CurryDex @JvmOverloads constructor(var entries: MutableList<CurryDexEntry>
8282
BlockPos.CODEC.fieldOf("pos").forGetter { it.pos },
8383
Codec.BOOL.fieldOf("newEntry").forGetter { it.newEntry },
8484
StringRepresentable.fromEnum(CurryType::values).fieldOf("type").forGetter { it.type },
85-
Codec.STRING.xmap({it.uppercase()}, {it.lowercase()}).xmap({ Flavor.valueOf(it) }, { it.name }).nullableCodec().fieldOf("flavor").forGetter { it.flavor },
85+
Codec.STRING.xmap({it.uppercase()}, {it.lowercase()}).xmap({ Flavour.valueOf(it) }, { it.name }).nullableCodec().fieldOf("flavor").forGetter { it.flavor },
8686
StringRepresentable.fromEnum(CurryTasteRating::values).fieldOf("rating").forGetter { it.rating },
8787
).apply(instance) { instant, pokemonName, biome, pos, newEntry, type, flavor, rating -> CurryDexEntry(instant, pokemonName, biome, pos, newEntry, type, flavor, rating) }
8888
}

common/src/main/java/generations/gg/generations/core/generationscore/common/battle/GenerationsInstructionProcessor.kt

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import com.cobblemon.mod.common.api.abilities.Ability
77
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
88
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
99
import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
10-
import com.cobblemon.mod.common.api.events.battles.BattleStartedPreEvent
10+
import com.cobblemon.mod.common.api.events.battles.BattleStartedEvent
1111
import com.cobblemon.mod.common.api.events.battles.instruction.TerastallizationEvent
12-
import com.cobblemon.mod.common.api.moves.Moves
1312
import com.cobblemon.mod.common.api.pokemon.feature.FlagSpeciesFeature
1413
import com.cobblemon.mod.common.api.pokemon.feature.SpeciesFeature
1514
import com.cobblemon.mod.common.api.pokemon.feature.StringSpeciesFeature
15+
import com.cobblemon.mod.common.api.pokemon.stats.BattleEvSource
1616
import com.cobblemon.mod.common.api.scheduling.afterOnServer
1717
import com.cobblemon.mod.common.api.tags.CobblemonItemTags
1818
import com.cobblemon.mod.common.battles.actor.PlayerBattleActor
@@ -143,7 +143,7 @@ object GenerationsInstructionProcessor {
143143
}
144144

145145
@JvmStatic
146-
fun preBattleChanges(battleStartedPreEvent: BattleStartedPreEvent) {
146+
fun preBattleChanges(battleStartedPreEvent: BattleStartedEvent.Pre) {
147147
val battle = battleStartedPreEvent.battle
148148
for (actor in battle.actors) {
149149
for (battlePokemon in actor.pokemonList) {
@@ -248,9 +248,9 @@ fun grantExp(battle: PokemonBattle, actor: BattleActor) {
248248

249249
if (player != null) {
250250
if (player.hasExpAll()) {
251-
grantExpAll(opponent, targetPokemon, true)
251+
grantExpAll(battle, opponent, targetPokemon)
252252
} else {
253-
grantExpCapture(opponent, targetPokemon, true)
253+
grantExpCapture(battle, opponent, targetPokemon)
254254
}
255255
}
256256
}
@@ -265,14 +265,14 @@ fun grantExp(battle: PokemonBattle, actor: BattleActor) {
265265
val player = opponent.uuid.getPlayer()
266266

267267
if (player != null && player.hasExpAll()) {
268-
grantExpAll(opponent, faintedOnly, true)
268+
grantExpAll(battle, opponent, faintedOnly)
269269
}
270270
}
271271
}
272272

273273

274274

275-
fun grantExpAll(opponent: BattleActor, faintedPokemonList: List<BattlePokemon>, conditionsMet: Boolean) {
275+
fun grantExpAll(battle: PokemonBattle, opponent: BattleActor, faintedPokemonList: List<BattlePokemon>) {
276276
val opponentNonFaintedPokemonList = opponent.pokemonList.filter {it.health > 0}
277277

278278
faintedPokemonList.forEach { faintedPokemon ->
@@ -282,17 +282,19 @@ fun grantExpAll(opponent: BattleActor, faintedPokemonList: List<BattlePokemon>,
282282
val experience = Cobblemon.experienceCalculator.calculate(opponentPokemon, faintedPokemon, multiplier)
283283
val grantedEvs = Cobblemon.evYieldCalculator.calculate(opponentPokemon, faintedPokemon)
284284

285-
if (experience > 0 && conditionsMet) {
285+
if (experience > 0) {
286286
opponent.awardExperience(opponentPokemon, experience)
287287
if (!facedFainted) {
288-
grantedEvs.forEach(opponentPokemon.effectedPokemon.evs::add)
288+
grantedEvs.forEach { stat, value -> opponentPokemon.effectedPokemon.evs.add(stat, value,
289+
BattleEvSource(battle, listOf(faintedPokemon), opponentPokemon.effectedPokemon))
290+
} //TODO: Decide how to handle
289291
}
290292
}
291293
}
292294
}
293295
}
294296

295-
fun grantExpCapture(opponent: BattleActor, caughtPokemon: List<BattlePokemon>, conditionsMet: Boolean) {
297+
fun grantExpCapture(battle: PokemonBattle, opponent: BattleActor, caughtPokemon: List<BattlePokemon>) {
296298
val opponentNonFaintedPokemonList = opponent.pokemonList.filter {it.health > 0}
297299

298300
for (opponentPokemon in opponentNonFaintedPokemonList) {
@@ -306,12 +308,14 @@ fun grantExpCapture(opponent: BattleActor, caughtPokemon: List<BattlePokemon>, c
306308

307309
val experience = Cobblemon.experienceCalculator.calculate(opponentPokemon, caughtPokemon.first(), multiplier)
308310

309-
if (experience > 0 && conditionsMet) {
311+
if (experience > 0) {
310312
opponent.awardExperience(opponentPokemon, experience)
311313
}
312314

313315
Cobblemon.evYieldCalculator.calculate(opponentPokemon, caughtPokemon.first()).forEach { (stat, amount) ->
314-
pokemon.evs.add(stat, amount)
316+
pokemon.evs.add(stat, amount, BattleEvSource(battle,
317+
listOf(caughtPokemon.first()), opponentPokemon.effectedPokemon)
318+
)
315319
}
316320
}
317321
}

common/src/main/java/generations/gg/generations/core/generationscore/common/client/BattleOverlayProxy.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,14 @@ import com.cobblemon.mod.common.client.render.drawScaledText
4444
import com.cobblemon.mod.common.client.render.drawScaledTextJustifiedRight
4545
import com.cobblemon.mod.common.client.render.getDepletableRedGreen
4646
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
47-
import com.cobblemon.mod.common.client.render.models.blockbench.repository.PokeBallModelRepository
48-
import com.cobblemon.mod.common.client.render.models.blockbench.repository.PokemonModelRepository
4947
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
48+
import com.cobblemon.mod.common.client.render.models.blockbench.repository.VaryingModelRepository
5049
import com.cobblemon.mod.common.entity.PoseType
5150
import com.cobblemon.mod.common.entity.pokeball.EmptyPokeBallEntity
5251
import com.cobblemon.mod.common.pokemon.Gender
5352
import com.cobblemon.mod.common.pokemon.Pokemon
5453
import com.cobblemon.mod.common.pokemon.Species
5554
import com.cobblemon.mod.common.pokemon.status.PersistentStatus
56-
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
5755
import com.cobblemon.mod.common.util.cobblemonResource
5856
import com.cobblemon.mod.common.util.lang
5957
import com.mojang.blaze3d.platform.Lighting
@@ -260,7 +258,6 @@ object BattleOverlayProxy {
260258
matrixStack = matrixStack,
261259
scale = 18F * (ballState?.scale ?: 1F) * if (isCompact) 0.65F else 1.0f,
262260
contextScale = species.getForm(state.currentAspects).baseScale,
263-
repository = PokemonModelRepository,
264261
reversed = reversed,
265262
state = state,
266263
partialTicks = partialTicks
@@ -435,8 +432,8 @@ object BattleOverlayProxy {
435432
reversed: Boolean = false
436433
) {
437434
val context = RenderContext()
438-
val model = PokeBallModelRepository.getPoser(state.pokeBall.name, state)
439-
val texture = PokeBallModelRepository.getTexture(state.pokeBall.name, state)
435+
val model = VaryingModelRepository.getPoser(state.pokeBall.name, state)
436+
val texture = VaryingModelRepository.getTexture(state.pokeBall.name, state)
440437
val renderType = RenderType.entityCutout(texture)//model.getLayer(texture)
441438

442439
RenderSystem.applyModelViewMatrix()

common/src/main/java/generations/gg/generations/core/generationscore/common/client/GenerationsCoreClient.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.cobblemon.mod.common.api.types.ElementalTypes
77
import com.cobblemon.mod.common.client.render.item.CobblemonBuiltinItemRendererRegistry
88
import com.cobblemon.mod.common.client.render.models.blockbench.pokeball.PokeBallModel
99
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Bone
10-
import com.cobblemon.mod.common.client.render.models.blockbench.repository.PokeBallModelRepository
1110
import com.cobblemon.mod.common.client.render.models.blockbench.repository.VaryingModelRepository
1211
import com.cobblemon.mod.common.platform.events.ClientPlayerEvent
1312
import com.cobblemon.mod.common.platform.events.PlatformEvents
@@ -137,16 +136,15 @@ object GenerationsCoreClient {
137136

138137
RareCandy.DEBUG_THREADS = true
139138

140-
PokeBallModelRepository.inbuilt("strange_ball", ::PokeBallModel)
139+
VaryingModelRepository.inbuilt("strange_ball", ::PokeBallModel)
141140

142141
VaryingModelRepository.registerFactory(".pk", { resourceLocation, resource ->
143142
ResourceLocation.fromNamespaceAndPath(resourceLocation.namespace, File(resourceLocation.path).getName()) to
144-
Function<Boolean, Bone> { bool ->
145-
(ModelPart(
146-
RareCandyBone.CUBE_LIST,
147-
mapOf("root" to RareCandyBone(resourceLocation))
148-
)) as Bone
149-
}
143+
(ModelPart(
144+
RareCandyBone.CUBE_LIST,
145+
mapOf("root" to RareCandyBone(resourceLocation))
146+
)) as Bone
147+
150148
})
151149
// VaryingModelRepository.registerFactory(".pk", { resourceLocation, resource) -> new Pair<>(, b -> (Bone) new ModelPart(RareCandyBone.Companion.getCUBE_LIST(), Map.of("root", new RareCandyBone(resourceLocation))}));
152150

common/src/main/java/generations/gg/generations/core/generationscore/common/client/InteractWheelGuiFactoryProxy.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.cobblemon.mod.common.api.events.CobblemonEvents
1313
import com.cobblemon.mod.common.api.events.pokemon.interaction.PokemonInteractionGUICreationEvent
1414
import com.cobblemon.mod.common.client.CobblemonClient
1515
import com.cobblemon.mod.common.client.gui.interact.battleRequest.BattleConfigureGUI
16+
import com.cobblemon.mod.common.client.gui.interact.wheel.InteractTypePokemon
1617
import com.cobblemon.mod.common.client.gui.interact.wheel.InteractWheelGUI
1718
import com.cobblemon.mod.common.client.gui.interact.wheel.InteractWheelOption
1819
import com.cobblemon.mod.common.client.gui.interact.wheel.Orientation
@@ -70,7 +71,7 @@ fun createPokemonInteractGui(pokemonID: UUID, canMountShoulder: Boolean, changeF
7071
tooltipText = "cobblemon.ui.interact.mount.shoulder",
7172
onPress = {
7273
if (canMountShoulder) {
73-
InteractPokemonPacket(pokemonID, true).sendToServer()
74+
InteractPokemonPacket(pokemonID, InteractTypePokemon.SHOULDER).sendToServer()
7475
closeGUI()
7576
}
7677
}
@@ -79,7 +80,7 @@ fun createPokemonInteractGui(pokemonID: UUID, canMountShoulder: Boolean, changeF
7980
iconResource = cobblemonResource("textures/gui/interact/icon_held_item.png"),
8081
tooltipText = "cobblemon.ui.interact.give.item",
8182
onPress = {
82-
InteractPokemonPacket(pokemonID, false).sendToServer()
83+
InteractPokemonPacket(pokemonID, InteractTypePokemon.HELD_ITEM).sendToServer()
8384
closeGUI()
8485
}
8586
)
@@ -95,14 +96,14 @@ fun createPokemonInteractGui(pokemonID: UUID, canMountShoulder: Boolean, changeF
9596
}
9697
)
9798
val options: Multimap<Orientation, InteractWheelOption> = ArrayListMultimap.create()
98-
options.put(Orientation.TOP_RIGHT, giveItem)
99+
options.put(Orientation.NORTHWEST, giveItem)
99100
if (canMountShoulder) {
100-
options.put(Orientation.TOP_LEFT, mountShoulder)
101+
options.put(Orientation.NORTHEAST, mountShoulder)
101102
}
102103
if (changeFormData.first) {
103-
options.put(Orientation.BOTTOM_RIGHT, changeForm)
104+
options.put(Orientation.SOUTHEAST, changeForm)
104105
}
105-
CobblemonEvents.POKEMON_INTERACTION_GUI_CREATION.post(PokemonInteractionGUICreationEvent(pokemonID, canMountShoulder, options))
106+
CobblemonEvents.POKEMON_INTERACTION_GUI_CREATION.post(PokemonInteractionGUICreationEvent(pokemonID, canMountShoulder, true, false /* TOODO: is the items given cosmetic in thsi context? */, false /* TODO: I'm not even sure about this part. */, options))
106107
return InteractWheelGUI(options, Component.translatable("cobblemon.ui.interact.pokemon"))
107108
}
108109

common/src/main/java/generations/gg/generations/core/generationscore/common/client/PokemonItemRendererProxy.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import com.cobblemon.mod.common.client.render.SpriteType
44
import com.cobblemon.mod.common.client.render.item.PokemonItemRenderer
55
import com.cobblemon.mod.common.client.render.item.PokemonItemRenderer.Companion.positions
66
import com.cobblemon.mod.common.client.render.models.blockbench.FloatingState
7-
import com.cobblemon.mod.common.client.render.models.blockbench.repository.PokemonModelRepository
87
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
8+
import com.cobblemon.mod.common.client.render.models.blockbench.repository.VaryingModelRepository
99
import com.cobblemon.mod.common.entity.PoseType
1010
import com.cobblemon.mod.common.item.PokemonItem
1111
import com.cobblemon.mod.common.util.math.fromEulerXYZDegrees
@@ -45,9 +45,10 @@ object PokemonItemRendererProxy {
4545
val state = FloatingState()
4646
state.currentAspects = aspects
4747
matrices.pushPose()
48-
val model = PokemonModelRepository.getPoser(species.resourceIdentifier, state)
48+
val model = VaryingModelRepository.getPoser(species.resourceIdentifier, state)
4949

50-
val sprite = model.rootPart.instanceOrNull<RareCandyBone>()?.let { RenderType.entityCutoutNoCull(PokemonModelRepository.getSprite(species.resourceIdentifier, state, SpriteType.PROFILE) ?: MissingTextureAtlasSprite.getLocation()) }
50+
val sprite = model.rootPart.instanceOrNull<RareCandyBone>()?.let { RenderType.entityCutoutNoCull(
51+
VaryingModelRepository.getSprite(species.resourceIdentifier, state, SpriteType.PROFILE) ?: MissingTextureAtlasSprite.getLocation()) }
5152

5253
if(sprite == null) {
5354

@@ -59,7 +60,7 @@ object PokemonItemRendererProxy {
5960
state.currentModel = model
6061
}
6162

62-
val renderLayer = if(sprite == null) RenderType.entityCutout(PokemonModelRepository.getTexture(species.resourceIdentifier, state)) else sprite
63+
val renderLayer = if(sprite == null) RenderType.entityCutout(VaryingModelRepository.getTexture(species.resourceIdentifier, state)) else sprite
6364

6465
val transformations = if(sprite == null) positions[mode]!! else positionsSprite[mode]!!
6566

@@ -103,7 +104,7 @@ object PokemonItemRendererProxy {
103104
model.withLayerContext(
104105
vertexConsumers,
105106
state,
106-
PokemonModelRepository.getLayers(species.resourceIdentifier, state)
107+
VaryingModelRepository.getLayers(species.resourceIdentifier, state)
107108
) {
108109
model.render(context, matrices, buffer, packedLight, OverlayTexture.NO_OVERLAY, color)
109110
}

common/src/main/java/generations/gg/generations/core/generationscore/common/client/entity/StatueClientDelegate.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@ package generations.gg.generations.core.generationscore.common.client.entity
33
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
44
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
55
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
6-
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
7-
import com.cobblemon.mod.common.client.render.models.blockbench.repository.PokemonModelRepository
8-
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
6+
import com.cobblemon.mod.common.client.render.models.blockbench.repository.VaryingModelRepository
97
import com.cobblemon.mod.common.entity.PosableEntity
108
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
119
import generations.gg.generations.core.generationscore.common.client.render.CobblemonInstanceProvider
12-
import generations.gg.generations.core.generationscore.common.client.render.rarecandy.CobblemonInstance
1310
import generations.gg.generations.core.generationscore.common.client.render.rarecandy.StatueInstance
1411
import generations.gg.generations.core.generationscore.common.world.entity.StatueSideDelegate
1512
import generations.gg.generations.core.generationscore.common.world.entity.statue.StatueEntity
@@ -42,7 +39,7 @@ class StatueClientDelegate(entity: StatueEntity) : StatueSideDelegate, PosableSt
4239

4340
var species = properties.species?.asIdentifierDefaultingNamespace() ?: return
4441

45-
this.currentModel = PokemonModelRepository.getPoser(species, this)
42+
this.currentModel = VaryingModelRepository.getPoser(species, this)
4643
currentModel!!.updateLocators(entity, this)
4744

4845
val currentPoseType = entity.getCurrentPoseType()
@@ -55,7 +52,7 @@ class StatueClientDelegate(entity: StatueEntity) : StatueSideDelegate, PosableSt
5552

5653
var species = properties.species?.asIdentifierDefaultingNamespace()
5754

58-
currentModel = species?.let { PokemonModelRepository.getPoser(it, this) }
55+
currentModel = species?.let { VaryingModelRepository.getPoser(it, this) }
5956

6057
if(currentModel != null) {
6158
this.currentAspects = properties.aspects

0 commit comments

Comments
 (0)