From 853af48b1337ebcd95ddec1ff928c52765fe2ee4 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Tue, 14 Nov 2023 18:17:58 +0100 Subject: [PATCH] random animal scale They look now way more diversed --- .../profile/profiles/entity/EntityProfile.kt | 2 ++ .../profile/profiles/entity/animal/AnimalC.kt | 22 +++++++++++++++++++ .../entities/model/animal/AnimalModel.kt | 8 +++++++ .../renderer/living/animal/AnimalRenderer.kt | 5 +++++ 4 files changed, 37 insertions(+) create mode 100644 src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/animal/AnimalC.kt 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() }