Skip to content

Commit 2e247d4

Browse files
committed
Work on integration of Common Storage Library and side tangent to get rare candy animation integration code updated to 1.6
1 parent 7ea013c commit 2e247d4

File tree

12 files changed

+366
-436
lines changed

12 files changed

+366
-436
lines changed

common/src/main/java/generations/gg/generations/core/generationscore/common/client/model/RareCandyAnimationFactory.kt renamed to common/src/main/java/generations/gg/generations/core/generationscore/common/client/model/GenerationsClientMolangFunctions.kt

Lines changed: 25 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@ import com.bedrockk.molang.runtime.MoParams
44
import com.cobblemon.mod.common.api.molang.ObjectValue
55
import com.cobblemon.mod.common.client.ClientMoLangFunctions
66
import com.cobblemon.mod.common.client.render.models.blockbench.PosableModel
7-
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
8-
import com.cobblemon.mod.common.client.render.models.blockbench.PoseableEntityState
97
import com.cobblemon.mod.common.client.render.models.blockbench.animation.ActiveAnimation
108
import com.cobblemon.mod.common.client.render.models.blockbench.animation.PrimaryAnimation
11-
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
129
import com.cobblemon.mod.common.client.render.models.blockbench.wavefunction.WaveFunction
1310
import com.cobblemon.mod.common.util.asResource
1411
import com.cobblemon.mod.common.util.getBooleanOrNull
15-
import generations.gg.generations.core.generationscore.common.client.render.CobblemonInstanceProvider
1612
import generations.gg.generations.core.generationscore.common.client.render.rarecandy.CobblemonInstance
1713
import generations.gg.generations.core.generationscore.common.client.render.rarecandy.ModelRegistry
1814
import gg.generations.rarecandy.renderer.animation.Animation
@@ -22,18 +18,8 @@ import java.util.function.Function
2218
import java.util.function.Supplier
2319

2420
object RareCandyAnimationFactory {
25-
data class ActiveRareCandyAnimation(private val animation: RareCandyAnimation): ActiveAnimation {
26-
private var startedSeconds = -1F
27-
override val isTransition: Boolean = false
28-
override var enduresPrimaryAnimations: Boolean = false
2921

30-
override val duration: Float
31-
get() = animation.duration
32-
33-
34-
}
35-
36-
fun <T : Entity> stateful(loc: String, name: String, transforms: Boolean): RareCandyAnimation<T> {
22+
fun <T : Entity> PosableModel.pkStateful(model: String, name: String) {
3723
val location = loc.asResource().withPrefix("bedrock/pokemon/models/")
3824

3925
return RareCandyAnimation(Supplier<Animation?> {
@@ -47,16 +33,13 @@ object RareCandyAnimationFactory {
4733

4834
fun stateless(model: PosableModel, loc: String, name: String): ActiveAnimation {
4935
val location = loc.asResource().withPrefix("bedrock/pokemon/models/")
50-
return RareCandyAnimation(
51-
{
52-
val objects = ModelRegistry[location]?.renderObject
53-
if (objects != null && objects.isReady) {
54-
(objects.objects[0] as AnimatedMeshObject).animations[name]
55-
}
56-
null
57-
},
58-
{ ModelRegistry[location]?.guiInstance },
59-
)
36+
return RareCandyAnimation {
37+
val objects = ModelRegistry[location]?.renderObject
38+
if (objects != null && objects.isReady) {
39+
(objects.objects[0] as AnimatedMeshObject).animations[name]
40+
}
41+
null
42+
}
6043
}
6144

6245
fun function(function: (PosableModel, MoParams) -> Any): Function<PosableModel, Function<MoParams, Any>> {
@@ -68,20 +51,21 @@ object RareCandyAnimationFactory {
6851

6952
var map = ClientMoLangFunctions.animationFunctions
7053

71-
map["pk_stateful"] = function { model, params ->
72-
val group = params.getString(0)
73-
val animation = params.getString(1)
74-
val anim = stateful<T>(group, animation, params.getBooleanOrNull(2) ?: false)
75-
ObjectValue(anim)
76-
}
77-
7854
map["pk_primary"] = function { model, params ->
7955
val group = params.getString(0)
8056
val animation = params.getString(1)
8157
val anim = stateful<T>(group, animation, params.getBooleanOrNull(2) ?: false)
8258

8359
val excludedLabels = mutableSetOf<String>()
84-
val curve: WaveFunction = { 2F }
60+
var curve: WaveFunction = { t ->
61+
if (t < 0.1) {
62+
t * 10
63+
} else if (t < 0.9) {
64+
1F
65+
} else {
66+
1F
67+
}
68+
}
8569

8670
for (index in 2 until params.params.size) {
8771
val label = params.getString(index) ?: continue
@@ -91,70 +75,23 @@ object RareCandyAnimationFactory {
9175
ObjectValue(PrimaryAnimation(animation = anim, excludedLabels = excludedLabels, curve = curve))
9276
}
9377

94-
map["pk"] = function { model, params ->
78+
map["pk_stateful"] = function { model, params ->
9579
val group = params.getString(0)
9680
val animation = params.getString(1)
97-
val anim = stateless(model, group, animation)
81+
val anim = stateful<T>(group, animation, params.getBooleanOrNull(2) ?: false)
9882
ObjectValue(anim)
9983
}
100-
}
101-
102-
103-
class RareCandyAnimation(
104-
private val animationSuppler: Supplier<Animation?>,
105-
private val instanceProvider: Supplier<CobblemonInstance?>,
106-
) {
107-
108-
109-
fun run(
110-
context: RenderContext,
111-
model: PosableModel,
112-
state: PosableState,
113-
limbSwing: Float,
114-
limbSwingAmount: Float,
115-
ageInTicks: Float,
116-
headYaw: Float,
117-
headPitch: Float,
118-
intensity: Float
119-
): Boolean {
120-
if (startedSeconds == -1F) {
121-
startedSeconds = state.animationSeconds
122-
}
123-
124-
125-
val instance = model.context.request(
126-
RenderContext.ENTITY
127-
)?.takeIf { it is CobblemonInstanceProvider }?.let { it as CobblemonInstanceProvider }?.instance
128-
?: instanceProvider.get()
129-
val animation = animationSuppler.get()
130-
131-
if (animation != null) {
132-
val currentSeconds = state.animationSeconds - startedSeconds
133-
val animationLength = animation.animationDuration / animation.ticksPerSecond
134-
135-
if(currentSeconds > animationLength) {
136-
return false
137-
}
138-
139-
if (instance != null) {
140-
instance.setAnimation(animation)
141-
142-
instance.matrixTransforms = animation.getFrameTransform((currentSeconds).toDouble())
143-
animation.getFrameOffset(instance.currentAnimation!!)
144-
}
14584

146-
return true
147-
}
14885

149-
return false
15086

87+
map["pk"] = function { model, params ->
88+
val group = params.getString(0)
89+
val animation = params.getString(1)
90+
val anim = stateless(model, group, animation)
91+
ObjectValue(anim)
15192
}
93+
}
15294

15395

154-
155-
override fun applyEffects(entity: T, state: PoseableEntityState<T>, previousSeconds: Float, newSeconds: Float) = run { }
156-
157-
fun asMolang() = ObjectValue(this)
158-
}
15996
}
16097

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package generations.gg.generations.core.generationscore.common.client.model
2+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package generations.gg.generations.core.generationscore.common.client.model
2+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package generations.gg.generations.core.generationscore.common.client.model
2+
3+
class RareCandyPoseAnimation {
4+
}

common/src/main/java/generations/gg/generations/core/generationscore/common/network/spawn/SpawnExtraDataEntityHandler.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package generations.gg.generations.core.generationscore.common.util
2+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package generations.gg.generations.core.generationscore.common.world.container.slots
2+
3+
class ItemStorageSlot {
4+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package generations.gg.generations.core.generationscore.common.world.item.components
2+

common/src/main/java/generations/gg/generations/core/generationscore/common/world/item/curry/CurryTasteRating.java

Lines changed: 0 additions & 51 deletions
This file was deleted.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package generations.gg.generations.core.generationscore.common.world.item.curry
2+
3+
import net.minecraft.ChatFormatting
4+
import net.minecraft.util.StringRepresentable
5+
import java.util.function.Consumer
6+
import java.util.stream.Stream
7+
8+
enum class CurryTasteRating(
9+
exp: Int,
10+
healthPercent: Double,
11+
healStatus: Boolean,
12+
restorePP: Boolean,
13+
private val textFormatting: ChatFormatting
14+
) :
15+
StringRepresentable {
16+
Unknown(0, 0, false, false, ChatFormatting.GRAY),
17+
Koffing(25, 0.25, false, false, ChatFormatting.DARK_RED),
18+
Wobbuffet(200, 0.5, false, false, ChatFormatting.RED),
19+
Milcery(1000, 1.0, true, false, ChatFormatting.WHITE),
20+
Copperajah(5000, 1.0, true, true, ChatFormatting.DARK_GREEN),
21+
Charizard(10000, 1.0, true, true, ChatFormatting.GREEN);
22+
23+
private val consumer =
24+
Consumer { curryData: CurryData ->
25+
curryData.setExperience(exp).setHealthPercentage(healthPercent).setCanHealStatus(healStatus)
26+
.setCanRestorePP(restorePP)
27+
}
28+
29+
fun configureData(data: CurryData) {
30+
consumer.accept(data)
31+
}
32+
33+
override fun getSerializedName(): String {
34+
return name.lowercase()
35+
}
36+
37+
companion object {
38+
fun fromId(id: Int): CurryTasteRating {
39+
return try {
40+
entries[id]
41+
} catch (e: Exception) {
42+
Koffing
43+
}
44+
}
45+
46+
fun get(name: String): CurryTasteRating {
47+
return Stream.of(*entries.toTypedArray()).filter { a: CurryTasteRating -> a.serializedName == name }
48+
.findAny().orElse(
49+
Unknown
50+
)
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)