Compare commits

...
Author SHA1 Message Date
Landon Wills e52d007e6e This should avoid some unnecessary animation overhead 2026-11-12 15:26:38 -05:00
Landon Wills 1110c62b14 Fix particles that use local space and are bound to pokemon locators 2026-11-12 15:24:39 -05:00
Landon Wills 7ff0585e49 Add is_alive molang function. Useful to terminate particles 2026-11-12 15:01:53 -05:00
Hiroku 99e72339db Remove rogue println, closes #2147 2026-11-08 10:32:42 +10:00
Hiroku 10c9931d2c Merge branch 'weight-tweak-tweak' into 'main'
add `spawnable_position` to weight rule component's "weight" expression

Closes #2145

See merge request cable-mc/cobblemon!2521
2026-11-07 08:20:09 +00:00
Hiroku 0e55165570 Merge branch 'main' into 'main'
Main - fixs #2142, unown name issue.

See merge request cable-mc/cobblemon!2523
2026-11-07 08:19:02 +00:00
Matthew Baerg b6b87621a5 Update file CHANGELOG.md 2026-11-07 04:42:37 +00:00
Matthew Baerg 71b01d562b Update file CHANGELOG.md 2026-11-07 04:39:00 +00:00
Matthew Baerg 21eb66e69b Update file unown.json 2026-11-07 03:31:36 +00:00
Matthew Baerg 8b04e57a1d Update file unown.json 2026-11-07 02:35:21 +00:00
Hiroku 1ff3b7ee96 Updated molang dep for some library fixes 2026-11-07 12:07:03 +10:00
spacky 8a2d6096e3 update changelog 2026-11-03 09:02:01 -08:00
spacky 2645b5e375 add spawnable_position to weight rule component's "weight" expression 2026-11-03 08:03:14 -08:00
25 changed files with 45 additions and 69 deletions

No files matched your search

+7
View File
@@ -11,19 +11,26 @@
- Amethyst now grows from Typegem core blocks like typegems do
- Updated the recipe category for the Create compatibility EXP Candy recipe
- Added No Man's Lands' Honeyed Apple to the Leaves Leftovers tag
- Updated Unown's punctuation form names from `!` and `?` to `Exclamation` and `Question`, changing their visible form labels in tooltips and mod integrations.
### Fixes
- Fixed Ponigiri food values for AppleSkin integration
- Fixed errors emitted by typos in Parched Peat bog structure files
- Fixed Unown punctuation forms (? and !) resolving to duplicate Showdown IDs and colliding in form displays.
### Developer
- Fixed JsonArray to MoValue conversion not working properly.
### Molang & Datapacks
- `q.is_standing_on_blocks` now properly checks for non-full blocks like slabs, Mud or Soul Sand
- Added Molang functions to play footstep sounds based on the corresponding surface. These are intended to be used by Pokémon animations.
- Pokémon can now have their Minecraft footstep sounds silenced in their poser. This doesn't affect emitting game events.
- Fixed the Molang coalescing operator not working the way you'd expect a coalesce operator to.
- Added `v.spawnable_position` to the weight spawn rule component's "weight" expression
- Added `is_alive` function to entities. Can be useful for terminating particles bound to them.
### Particles
- Fixed local space settings for particles that are attached to Pokemon locators. Should fix a lot of jitters and rotation issues.
### Localization
- Updated translations for:
@@ -266,6 +266,9 @@ object EntityMoLangFunctions : AbstractMoLangFunctionHolder<Entity>() {
entity.noPhysics = intangible
DoubleValue.ONE
}
functions["is_alive"] = { params ->
if (entity.isAlive) DoubleValue.ONE else DoubleValue.ZERO
}
when (entity) {
is PosableEntity -> {
@@ -41,6 +41,7 @@ class WeightTweakRuleComponent : SpawnRuleComponent {
return if (spawnDetailSelector.selects(detail) && spawnablePositionSelector.selects(spawnablePosition)) {
runtime.environment.setSimpleVariable("spawn", detail.struct)
runtime.environment.setSimpleVariable("spawn_detail", detail.struct)
runtime.environment.setSimpleVariable("spawnable_position", spawnablePosition.getOrSetupStruct())
runtime.environment.setSimpleVariable("weight", DoubleValue(weight.toDouble()))
runtime.resolveFloat(this.weight)
} else {
@@ -169,7 +169,6 @@ class TypeGemCoreBlock(properties: Properties) : Block(properties) {
if (fullClusterCount == 0) {
if (gemCount < Cobblemon.config.typeGemMinGrowth && clusters.isNotEmpty()) {
println("Force set a cluster to FULL at size $gemCount")
val randomCluster = clusters.random()
level.setBlockAndUpdate(randomCluster.second, randomCluster.first.setValue(GROWTH_TYPE, GrowthType.FULL))
}
@@ -15,7 +15,9 @@ import com.cobblemon.mod.common.ModAPI
import com.cobblemon.mod.common.api.snowstorm.ParticleMaterial
import com.cobblemon.mod.common.api.snowstorm.ParticleMaterials
import com.cobblemon.mod.common.api.snowstorm.UVDetails
import com.cobblemon.mod.common.client.MountedPokemonAnimationRenderController
import com.cobblemon.mod.common.client.particle.ParticleStorm
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.util.math.geometry.transformDirection
import com.cobblemon.mod.common.util.resolveBoolean
import com.cobblemon.mod.common.util.resolveDouble
@@ -140,6 +142,19 @@ class SnowstormParticle(
}
}
/* Without this, locators will lag behind the animation because particles render before Pokemon.
* This is important for particles attached to locators using local position/rotation.
*
* In the future, we may want to make `MountedPokemonAnimationRenderController` a more
* generic utility for bedrock models if we see a case where other non-pokemon models (ie. NPCs)
* should emit particles in their animations that utilise local space.
*/
storm.entity?.let {
if (storm.effect.space.localPosition && it is PokemonEntity) {
MountedPokemonAnimationRenderController.setup(it, tickDelta)
}
}
applyRandoms()
setParticleAgeInRuntime()
storm.effect.curves.forEach { it.apply(runtime) }
@@ -147,11 +162,16 @@ class SnowstormParticle(
val vec3d = camera.position
// Interpolate because we are often between the ticks where these positions update.
val interpLocalX = Mth.lerp(tickDelta.toDouble(), prevLocalX, localX)
val interpLocalY = Mth.lerp(tickDelta.toDouble(), prevLocalY, localY)
val interpLocalZ = Mth.lerp(tickDelta.toDouble(), prevLocalZ, localZ)
val pos = if (storm.effect.space.localRotation) {
val pos = if (storm.effect.space.localPosition && storm.effect.space.localRotation) {
val vec = Vec3(interpLocalX, interpLocalY, interpLocalZ)
val rotated = storm.attachedMatrix.matrix.transformDirection(vec)
Vector3d(rotated.x, rotated.y, rotated.z)
} else if (storm.effect.space.localRotation) {
val interpRotation = Mth.lerp(tickDelta.toDouble(), 0.0, currentRotation.angle)
val vec = Vector3d(interpLocalX, interpLocalY, interpLocalZ)
oldAxisRotation.transform(vec)
@@ -160,9 +180,11 @@ class SnowstormParticle(
Vector3d(interpLocalX, interpLocalY, interpLocalZ)
}
val f = (pos.x + originPos.x - vec3d.x()).toFloat()
val g = (pos.y + originPos.y - vec3d.y()).toFloat()
val h = (pos.z + originPos.z - vec3d.z()).toFloat()
val origin = if (storm.effect.space.localPosition) storm.attachedMatrix.getOrigin() else originPos
val f = (pos.x + origin.x - vec3d.x()).toFloat()
val g = (pos.y + origin.y - vec3d.y()).toFloat()
val h = (pos.z + origin.z - vec3d.z()).toFloat()
val quaternion = storm.effect.particle.cameraMode.getRotation(
matrixWrapper = matrixWrapper,
prevAngle = oRoll,
@@ -231,7 +253,7 @@ class SnowstormParticle(
override fun tick() {
if (storm.effect.space.localPosition) {
originPos = matrixWrapper.getOrigin()
originPos = storm.attachedMatrix.getOrigin()
}
applyRandoms()
@@ -548,7 +548,7 @@
"battleOnly": false
},
{
"name": "!",
"name": "Exclamation",
"primaryType": "psychic",
"maleRatio": -1,
"height": 5,
@@ -563,7 +563,7 @@
"battleOnly": false
},
{
"name": "?",
"name": "Question",
"primaryType": "psychic",
"maleRatio": -1,
"height": 5,
Binary file not shown.
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.12</version>
</project>
Binary file not shown.
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.13</version>
</project>
Binary file not shown.
Binary file not shown.
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.15</version>
</project>
Binary file not shown.
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.16</version>
</project>
Binary file not shown.
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.18</version>
</project>
Binary file not shown.
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.19</version>
</project>
Binary file not shown.
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.20</version>
</project>
Binary file not shown.
@@ -4,5 +4,5 @@
<modelVersion>4.0.0</modelVersion>
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<version>1.1.14</version>
<version>1.1.21</version>
</project>
+3 -3
View File
@@ -3,10 +3,10 @@
<groupId>local.com.bedrockk</groupId>
<artifactId>molang</artifactId>
<versioning>
<release>1.1.20</release>
<release>1.1.21</release>
<versions>
<version>1.1.20</version>
<version>1.1.21</version>
</versions>
<lastUpdated>20231949390007</lastUpdated>
<lastUpdated>20231949390008</lastUpdated>
</versioning>
</metadata>
+1 -1
View File
@@ -14,7 +14,7 @@ architectury-plugin = "3.4-SNAPSHOT"
moddev = "1.0.11"
# Common
molang = "1.1.20"
molang = "1.1.21"
jei-api = "19.22.1.316"
appleskin-api = "mc1.21-3.0.5"