Skip to content

Commit 22e554a

Browse files
committed
Implment the reins of unity, fix galaxy rendering, update rare candy, make memories and plat register in pokemonshdowdown., hopefully got genesect form cahnge working?
1 parent d3f3528 commit 22e554a

7 files changed

Lines changed: 184 additions & 39 deletions

File tree

common/src/main/java/generations/gg/generations/core/generationscore/common/client/render/rarecandy/Pipelines.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ object Pipelines {
9494
.supplyMat4("modelMatrix") { it.instance().transformationMatrix() }
9595
.supplyMat4("projectionMatrix") { RenderSystem.getProjectionMatrix() }
9696
.supplyMat4s("boneTransforms") { ctx -> ctx.instance.instanceOrNull<AnimatedObjectInstance>()?.transforms ?: AnimationController.NO_ANIMATION }
97-
.supplyVec2("uvOffset") { it.transform.offset() }
98-
.supplyVec2("uvScale") { it.transform.scale() }
97+
.supplyVec2("uvOffset") { it.transform.offset() ?: Transform.DEFAULT_OFFSET }
98+
.supplyVec2("uvScale") { it.transform.scale() ?: Transform.DEFAULT_SCALE }
9999
.supplyTexture("diffuse", 0) {
100100
it.getTextureOrOther("diffuse") { ITextureLoader.instance().nuetralFallback }
101101
}
@@ -156,7 +156,7 @@ object Pipelines {
156156
"layered" -> builder.layered()
157157
}
158158

159-
if (effect == "paradox") {
159+
if (effect == "paradox" || effect == "galaxy") {
160160
builder.paradox(color)
161161
}
162162

@@ -416,9 +416,6 @@ private fun Pipeline.Builder.shader(
416416
): Pipeline.Builder {
417417
var shader = read(manager, "shaders/animated.fs.glsl", "process" shader effect, "color" shader color)
418418

419-
println("===============================================================================")
420-
println(shader)
421-
println("===============================================================================")
422419
return this.shader(
423420
read(manager, "shaders/animated.vs.glsl", "vert" shader extension),
424421
shader

common/src/main/java/generations/gg/generations/core/generationscore/common/util/PokemonFunctions.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package generations.gg.generations.core.generationscore.common.util
22

3+
import com.cobblemon.mod.common.api.moves.Moves
34
import com.cobblemon.mod.common.api.net.Encodable
45
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
56
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
@@ -59,6 +60,18 @@ fun Pokemon.embedPokemon(pokemon: Pokemon, needsToBeInWorld: Boolean = true): Bo
5960
}
6061
}
6162

63+
fun Pokemon.removeMove(moveName: String) {
64+
65+
for(move in moveSet) {
66+
if(move.template.name == moveName) {
67+
val index = moveSet.indexOf(move)
68+
moveSet.setMove(index, null)
69+
}
70+
}
71+
72+
benchedMoves.remove(Moves.getByNameOrDummy(moveName))
73+
}
74+
6275
fun Pokemon.hasEmbeddedPokemon(): Boolean {
6376
return this.persistentData.contains(DataKeys.EMBEDDED_POKEMON)
6477
}

common/src/main/java/generations/gg/generations/core/generationscore/common/world/item/GenerationsItems.kt

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -601,10 +601,10 @@ object GenerationsItems {
601601
@JvmField val WHITE_FLUTE = registerHeldItem("white_flute")
602602
@JvmField val WIDE_LENS = registerHeldItem("wide_lens")
603603
@JvmField val ZOOM_LENS = registerHeldItem("zoom_lens")
604-
@JvmField val BURN_DRIVE = registerHeldItem("burn_drive")
605-
@JvmField val CHILL_DRIVE = registerHeldItem("chill_drive")
606-
@JvmField val DOUSE_DRIVE = registerHeldItem("douse_drive")
607-
@JvmField val SHOCK_DRIVE = registerHeldItem("shock_drive")
604+
@JvmField val BURN_DRIVE = registerDrive("burn_drive", "burn")
605+
@JvmField val CHILL_DRIVE = registerDrive("chill_drive", "chill")
606+
@JvmField val DOUSE_DRIVE = registerDrive("douse_drive", "douse")
607+
@JvmField val SHOCK_DRIVE = registerDrive("shock_drive", "shock")
608608

609609
//Incense
610610
@JvmField val FULL_INCENSE = registerHeldItem("full_incense")
@@ -665,23 +665,23 @@ object GenerationsItems {
665665
@JvmField val TYRANITARITE = registerHeldItem("tyranitarite")
666666
@JvmField val VENUSAURITE = registerHeldItem("venusaurite")
667667

668-
@JvmField val BUG_MEMORY_DRIVE = registerMemoryDrive("bug_memory_drive", ElementalTypes.BUG)
669-
@JvmField val DARK_MEMORY_DRIVE = registerMemoryDrive("dark_memory_drive", ElementalTypes.DARK)
670-
@JvmField val DRAGON_MEMORY_DRIVE = registerMemoryDrive("dragon_memory_drive", ElementalTypes.DRAGON)
671-
@JvmField val ELECTRIC_MEMORY_DRIVE = registerMemoryDrive("electric_memory_drive", ElementalTypes.ELECTRIC)
672-
@JvmField val FAIRY_MEMORY_DRIVE = registerMemoryDrive("fairy_memory_drive", ElementalTypes.FAIRY)
673-
@JvmField val FIGHTING_MEMORY_DRIVE = registerMemoryDrive("fighting_memory_drive", ElementalTypes.FIGHTING)
674-
@JvmField val FIRE_MEMORY_DRIVE = registerMemoryDrive("fire_memory_drive", ElementalTypes.FIRE)
675-
@JvmField val FLYING_MEMORY_DRIVE = registerMemoryDrive("flying_memory_drive", ElementalTypes.FLYING)
676-
@JvmField val GHOST_MEMORY_DRIVE = registerMemoryDrive("ghost_memory_drive", ElementalTypes.GHOST)
677-
@JvmField val GRASS_MEMORY_DRIVE = registerMemoryDrive("grass_memory_drive", ElementalTypes.GRASS)
678-
@JvmField val GROUND_MEMORY_DRIVE = registerMemoryDrive("ground_memory_drive", ElementalTypes.GROUND)
679-
@JvmField val ICE_MEMORY_DRIVE = registerMemoryDrive("ice_memory_drive", ElementalTypes.ICE)
680-
@JvmField val POISON_MEMORY_DRIVE = registerMemoryDrive("poison_memory_drive", ElementalTypes.POISON)
681-
@JvmField val PSYCHIC_MEMORY_DRIVE = registerMemoryDrive("psychic_memory_drive", ElementalTypes.PSYCHIC)
682-
@JvmField val ROCK_MEMORY_DRIVE = registerMemoryDrive("rock_memory_drive", ElementalTypes.ROCK)
683-
@JvmField val STEEL_MEMORY_DRIVE = registerMemoryDrive("steel_memory_drive", ElementalTypes.STEEL)
684-
@JvmField val WATER_MEMORY_DRIVE = registerMemoryDrive("water_memory_drive", ElementalTypes.WATER)
668+
@JvmField val BUG_MEMORY_DRIVE = registerMemory("bug_memory_drive", ElementalTypes.BUG)
669+
@JvmField val DARK_MEMORY_DRIVE = registerMemory("dark_memory_drive", ElementalTypes.DARK)
670+
@JvmField val DRAGON_MEMORY_DRIVE = registerMemory("dragon_memory_drive", ElementalTypes.DRAGON)
671+
@JvmField val ELECTRIC_MEMORY_DRIVE = registerMemory("electric_memory_drive", ElementalTypes.ELECTRIC)
672+
@JvmField val FAIRY_MEMORY_DRIVE = registerMemory("fairy_memory_drive", ElementalTypes.FAIRY)
673+
@JvmField val FIGHTING_MEMORY_DRIVE = registerMemory("fighting_memory_drive", ElementalTypes.FIGHTING)
674+
@JvmField val FIRE_MEMORY_DRIVE = registerMemory("fire_memory_drive", ElementalTypes.FIRE)
675+
@JvmField val FLYING_MEMORY_DRIVE = registerMemory("flying_memory_drive", ElementalTypes.FLYING)
676+
@JvmField val GHOST_MEMORY_DRIVE = registerMemory("ghost_memory_drive", ElementalTypes.GHOST)
677+
@JvmField val GRASS_MEMORY_DRIVE = registerMemory("grass_memory_drive", ElementalTypes.GRASS)
678+
@JvmField val GROUND_MEMORY_DRIVE = registerMemory("ground_memory_drive", ElementalTypes.GROUND)
679+
@JvmField val ICE_MEMORY_DRIVE = registerMemory("ice_memory_drive", ElementalTypes.ICE)
680+
@JvmField val POISON_MEMORY_DRIVE = registerMemory("poison_memory_drive", ElementalTypes.POISON)
681+
@JvmField val PSYCHIC_MEMORY_DRIVE = registerMemory("psychic_memory_drive", ElementalTypes.PSYCHIC)
682+
@JvmField val ROCK_MEMORY_DRIVE = registerMemory("rock_memory_drive", ElementalTypes.ROCK)
683+
@JvmField val STEEL_MEMORY_DRIVE = registerMemory("steel_memory_drive", ElementalTypes.STEEL)
684+
@JvmField val WATER_MEMORY_DRIVE = registerMemory("water_memory_drive", ElementalTypes.WATER)
685685

686686
@JvmField val DRACO_PLATE = registerPlate("draco_plate", ElementalTypes.DRAGON)
687687
@JvmField val DREAD_PLATE = registerPlate("dread_plate", ElementalTypes.DARK)
@@ -870,7 +870,7 @@ object GenerationsItems {
870870
@JvmField val INERT_RELIC_SONG = createRelicSong(true)
871871
@JvmField val RED_CHAIN = register("red_chain", { RedChainItem(it.stacksTo(1)) }, LEGENDARY_ITEMS)
872872
@JvmField val DNA_SPLICERS = register("dna_splicers", { DnaSplicer(it) }, LEGENDARY_ITEMS)
873-
@JvmField val REINS_OF_UNITY = register("reins_of_unity", ::Item, LEGENDARY_ITEMS)
873+
@JvmField val REINS_OF_UNITY = register("reins_of_unity", { ReinsOfUnityItem(it.stacksTo(1)) }, LEGENDARY_ITEMS)
874874
@JvmField val N_SOLARIZER = register("n_solarizer", { NecroizerItemItem(it, "solgaleo", "sunsteelstrike", "duskmane")}, LEGENDARY_ITEMS)
875875
@JvmField val N_LUNARIZER = register("n_lunarizer", { NecroizerItemItem(it, "lunala", "moongeistbeam", "dawnwings") }, LEGENDARY_ITEMS)
876876
@JvmField val LEGEND_FINDER = register("legend_finder", ::Item, LEGENDARY_ITEMS)
@@ -1515,8 +1515,9 @@ object GenerationsItems {
15151515

15161516
private fun registerMail(name: String, type: MailType): RegistrySupplier<MailItem> = register(name, type::createMailItem, POKEMAIL)
15171517

1518-
private fun registerPlate(name: String, type: ElementalType): RegistrySupplier<FormChangingItem> = register(name, { createFormChangingItem(it, "type", type.name, cobblemonResource("arceus")) }, FORM_ITEMS)
1519-
private fun registerMemoryDrive(name: String, type: ElementalType): RegistrySupplier<FormChangingItem> = register(name, { createFormChangingItem(it, "type", type.name, cobblemonResource("silvally")) }, FORM_ITEMS)
1518+
private fun registerPlate(name: String, type: ElementalType): RegistrySupplier<FormChangingItem> = register(name, { createFormChangingItem(it, "type", type.name, cobblemonResource("arceus")).also { CobblemonHeldItemManager.registerRemap(it, name.replace("_", "")) } }, FORM_ITEMS)
1519+
private fun registerDrive(name: String, type: String): RegistrySupplier<FormChangingItem> = register(name, { createFormChangingItem(it, "drive", type, cobblemonResource("genesect")).also { CobblemonHeldItemManager.registerRemap(it, name.replace("_", "")) } }, FORM_ITEMS)
1520+
private fun registerMemory(name: String, type: ElementalType): RegistrySupplier<FormChangingItem> = register(name, { createFormChangingItem(it, "type", type.name, cobblemonResource("silvally")).also { CobblemonHeldItemManager.registerRemap(it, name.replace("_", "".replace("drive", ""))) } }, FORM_ITEMS)
15201521

15211522
private fun registerCap(name: String): RegistrySupplier<FormChangingItem> = register("${name}_cap", { createFormChangingItem(it, "pikachu_cap", name) }, FORM_ITEMS)
15221523

common/src/main/java/generations/gg/generations/core/generationscore/common/world/item/NecroizerItemItem.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,8 @@ class NecroizerItemItem(private val properties: Properties, private val species:
4242
feature.apply(entity)
4343
player.sendSystemMessage("generations_core.ability.formchange".asTranslated(entity.pokemon.getDisplayName().string), true)
4444

45-
for(move in entity.pokemon.moveSet) {
46-
if(move.template.name == this.move) {
47-
val index = entity.pokemon.moveSet.indexOf(move)
48-
entity.pokemon.moveSet.setMove(index, null)
49-
}
50-
}
5145

52-
entity.pokemon.benchedMoves.remove(Moves.getByNameOrDummy(this.move))
46+
entity.pokemon.removeMove(move)
5347

5448
entity.pokemon.dembedPokemon()?.run { player.party().add(this) }
5549
return true
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package generations.gg.generations.core.generationscore.common.world.item
2+
3+
import com.cobblemon.mod.common.api.moves.BenchedMove
4+
import com.cobblemon.mod.common.api.moves.Moves
5+
import com.cobblemon.mod.common.api.pokemon.feature.ChoiceSpeciesFeatureProvider
6+
import com.cobblemon.mod.common.api.pokemon.feature.IntSpeciesFeatureProvider
7+
import com.cobblemon.mod.common.api.text.plus
8+
import com.cobblemon.mod.common.api.text.text
9+
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
10+
import com.cobblemon.mod.common.pokemon.Pokemon
11+
import com.cobblemon.mod.common.util.asTranslated
12+
import com.cobblemon.mod.common.util.party
13+
import generations.gg.generations.core.generationscore.common.util.*
14+
import net.minecraft.ChatFormatting
15+
import net.minecraft.network.chat.Component
16+
import net.minecraft.server.level.ServerPlayer
17+
import net.minecraft.sounds.SoundEvent
18+
import net.minecraft.sounds.SoundEvents
19+
import net.minecraft.sounds.SoundSource
20+
import net.minecraft.world.entity.item.ItemEntity
21+
import net.minecraft.world.item.ItemStack
22+
import net.minecraft.world.level.Level
23+
import net.minecraft.world.phys.Vec3
24+
25+
class ReinsOfUnityItem(properties: Properties): PokemonStoringItem(properties) {
26+
private fun getFormAndMove(pokemon: Pokemon): Pair<String, String>? {
27+
return when {
28+
pokemon.isSpecies("spectrier") -> "shadow" to "astralbarrage"
29+
pokemon.isSpecies("glastrier") -> "ice" to " glaciallance"
30+
else -> null
31+
}
32+
}
33+
34+
override fun processInteraction(player: ServerPlayer, entity: PokemonEntity, stack: ItemStack): Boolean {
35+
36+
val pokemon = entity.pokemon
37+
val pokemonInStack = stack.getPokemon()
38+
39+
if (pokemonInStack == null) {
40+
if(pokemon.isSpecies("spectrier") || pokemon.isSpecies("glastrier")) {
41+
if (pokemon.removeIfBelongs(player)) {
42+
stack.savePokemon(pokemon)
43+
val list = mutableListOf<Component>()
44+
list.add(pokemon)
45+
stack.setLore(list)
46+
stack.setHoverName(super.getName(stack).copy() + getPokemonText(stack))
47+
48+
player.level().playSound(null, entity, SoundEvents.ENDERMAN_TELEPORT, SoundSource.MASTER, 1.0f, 1.0f)
49+
50+
player.sendSystemMessage("generations_core.pokemon.encoded".asTranslated(pokemon.getDisplayName().string))
51+
52+
player.cooldowns.addCooldown(this, 20)
53+
54+
return true
55+
}
56+
} else if(pokemon.isSpecies("calyrex")) {
57+
val dembeded: Pokemon = entity.pokemon.dembedPokemon()?.also { player.party().add(it) } ?: return false
58+
59+
val move = getFormAndMove(dembeded)?.second?.also { entity.pokemon.removeMove(it) } ?: return false
60+
61+
val provider = entity.pokemon.getProviderOrNull<ChoiceSpeciesFeatureProvider>("calyrex_rider") ?: return false
62+
val feature = provider.getOrCreate(entity.pokemon)
63+
64+
feature.value = "false"
65+
feature.apply(entity)
66+
67+
player.sendSystemMessage(
68+
"generations_core.pokemon.defused".asTranslated(
69+
dembeded.getDisplayName().string,
70+
pokemon.getDisplayName().string
71+
)
72+
)
73+
74+
return true
75+
}
76+
} else if (pokemon.isSpecies("calyrex")) {
77+
78+
val provider = entity.pokemon.getProviderOrNull<ChoiceSpeciesFeatureProvider>("calyrex_rider") ?: return false
79+
val feature = provider.getOrCreate(entity.pokemon)
80+
81+
if (!entity.pokemon.hasEmbeddedPokemon()) {
82+
if (feature.value.isBlank() || feature.value == "false") {
83+
84+
val data = getFormAndMove(pokemonInStack) ?: return false
85+
86+
val form = data.first
87+
val move = data.second
88+
89+
feature.value = form
90+
feature.apply(entity)
91+
92+
Moves.getByName(move)?.run { entity.pokemon.benchedMoves.add(BenchedMove(this, 0)) }
93+
94+
pokemon.embedPokemon(pokemonInStack, needsToBeInWorld = false)
95+
stack.removePokemon()
96+
97+
player.sendSystemMessage(
98+
"generations_core.pokemon.fused".asTranslated(
99+
pokemon.getDisplayName().string,
100+
pokemonInStack.getDisplayName().string
101+
)
102+
)
103+
104+
return true
105+
}
106+
}
107+
}
108+
109+
return false
110+
}
111+
112+
113+
114+
override fun getPokemonText(stack: ItemStack): Component {
115+
116+
var color = ChatFormatting.WHITE
117+
stack.getPokemon()?.run {
118+
if(this.isSpecies("spectrier")) color = ChatFormatting.DARK_PURPLE
119+
}
120+
121+
return stack.getPokemon()?.getDisplayName()?.let { " (".text() + it + ")".text() }?.withStyle(color) ?: Component.empty()
122+
}
123+
}

common/src/main/resources/assets/generations_core/shaders/process/galaxy.lib.glsl

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,21 @@
11
const float darkenFactor = 0.3;
2+
uniform sampler2D paradoxMask;
3+
uniform int frame;
4+
5+
float getParadoxIntensity() {
6+
vec2 effectTexCoord = vec2(texCoord0);
7+
8+
if(frame >= 0) {
9+
effectTexCoord *= 4.0;
10+
effectTexCoord = fract(effectTexCoord);
11+
12+
effectTexCoord *= (0.25);
13+
effectTexCoord.x += (frame % 4)/4.0;
14+
effectTexCoord.y += (frame/4)/4.0;
15+
}
16+
17+
return clamp(texture(paradoxMask, effectTexCoord).r * 2, 0.0, 1.0);
18+
}
219

320
vec4 process(vec4 inColor) {
421
float brightness = dot(inColor.rgb, vec3(0.2126, 0.7152, 0.0722));
@@ -8,5 +25,5 @@ vec4 process(vec4 inColor) {
825
vec3 gradientColor = mix(lightGradientColor1, lightGradientColor2, smoothstep(gradientThreshold, 1.0, brightness));
926
inColor.rgb *= darkenFactor;
1027
inColor.rgb = mix(inColor.rgb, gradientColor, smoothstep(gradientThreshold, 1.0, brightness));
11-
return inColor;
28+
return mix(inColor, vec4(1.0), getParadoxIntensity());
1229
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ parchment=2023.09.03
2525

2626
WTHIT=8.15.2+
2727
rei=12.0.674
28-
rareCandy=2.11.23
28+
rareCandy=2.11.24
2929

3030
# Set the socket timeout to 5 minutes
3131
systemProp.org.gradle.internal.http.connectionTimeout=120000

0 commit comments

Comments
 (0)