diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfile.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfile.kt
index a24b5db90..94621178f 100644
--- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfile.kt
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfile.kt
@@ -18,6 +18,7 @@ import de.bixilon.minosoft.config.profile.ProfileManager
import de.bixilon.minosoft.config.profile.delegate.types.StringDelegate
import de.bixilon.minosoft.config.profile.profiles.Profile
import de.bixilon.minosoft.config.profile.profiles.entity.EntityProfileManager.latestVersion
+import de.bixilon.minosoft.config.profile.profiles.entity.animal.AnimalC
import de.bixilon.minosoft.config.profile.profiles.entity.features.FeaturesC
import de.bixilon.minosoft.config.profile.profiles.entity.general.GeneralC
import java.util.concurrent.atomic.AtomicInteger
@@ -40,6 +41,7 @@ class EntityProfile(
val general = GeneralC(this)
val features = FeaturesC(this)
+ val animal = AnimalC(this)
override fun toString(): String {
return EntityProfileManager.getName(this)
diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/animal/AnimalC.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/animal/AnimalC.kt
new file mode 100644
index 000000000..e8e6e2c09
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/animal/AnimalC.kt
@@ -0,0 +1,22 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020-2023 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.config.profile.profiles.entity.animal
+
+import de.bixilon.minosoft.config.profile.delegate.primitive.BooleanDelegate
+import de.bixilon.minosoft.config.profile.profiles.entity.EntityProfile
+
+class AnimalC(profile: EntityProfile) {
+
+ var randomScale by BooleanDelegate(profile, true)
+}
diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/model/animal/AnimalModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/model/animal/AnimalModel.kt
index b2bf58e0d..546e691a4 100644
--- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/model/animal/AnimalModel.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/model/animal/AnimalModel.kt
@@ -16,6 +16,7 @@ package de.bixilon.minosoft.gui.rendering.entities.model.animal
import de.bixilon.minosoft.gui.rendering.entities.feature.SkeletalFeature
import de.bixilon.minosoft.gui.rendering.entities.model.animator.HeadAnimator
import de.bixilon.minosoft.gui.rendering.entities.renderer.EntityRenderer
+import de.bixilon.minosoft.gui.rendering.entities.renderer.living.animal.AnimalRenderer
import de.bixilon.minosoft.gui.rendering.skeletal.baked.BakedSkeletalModel
class AnimalModel>(renderer: R, model: BakedSkeletalModel) : SkeletalFeature(renderer, model) {
@@ -25,4 +26,11 @@ class AnimalModel>(renderer: R, model: BakedSkeletalModel)
super.updatePosition()
head?.update()
}
+
+ override fun updateInstance() {
+ super.updateInstance()
+ if (renderer is AnimalRenderer<*>) {
+ instance.matrix.scaleAssign(renderer.scale)
+ }
+ }
}
diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/animal/AnimalRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/animal/AnimalRenderer.kt
index c9c27fb8f..323be5e14 100644
--- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/animal/AnimalRenderer.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/animal/AnimalRenderer.kt
@@ -13,14 +13,19 @@
package de.bixilon.minosoft.gui.rendering.entities.renderer.living.animal
+import de.bixilon.kutil.random.RandomUtil.nextFloat
import de.bixilon.minosoft.data.entities.entities.AgeableMob
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer
import de.bixilon.minosoft.gui.rendering.entities.model.animal.AnimalModel
import de.bixilon.minosoft.gui.rendering.entities.renderer.living.LivingEntityRenderer
+import kotlin.random.Random
+import kotlin.random.asJavaRandom
abstract class AnimalRenderer(renderer: EntitiesRenderer, entity: E) : LivingEntityRenderer(renderer, entity) {
protected abstract var model: AnimalModel<*>?
+ val scale = if (renderer.profile.animal.randomScale) Random.asJavaRandom().nextFloat(0.9f, 1.1f) else 1.0f
+
init {
entity.data.observe(AgeableMob.BABY) { unload() }