From 5c99adeaa8763bd62a041db5db4a9c4141bd8d04 Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Fri, 29 Dec 2023 14:52:42 +0100 Subject: [PATCH 1/5] feat: no sky thing :trolley: --- .../me/theclashfruit/arctic/mixin/WorldRendererAccessor.java | 2 ++ .../java/me/theclashfruit/arctic/mixin/WorldRendererMixin.java | 2 ++ src/main/resources/arctic.mixins.json | 3 +-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererAccessor.java b/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererAccessor.java index 5ee0817..23b80e2 100644 --- a/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererAccessor.java +++ b/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererAccessor.java @@ -5,6 +5,8 @@ import net.minecraft.client.world.ClientWorld; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; +// add in future + @Mixin(WorldRenderer.class) public interface WorldRendererAccessor { @Accessor("world") diff --git a/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererMixin.java b/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererMixin.java index 706f4f0..735e794 100644 --- a/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererMixin.java +++ b/src/main/java/me/theclashfruit/arctic/mixin/WorldRendererMixin.java @@ -12,6 +12,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +// add in future + @Mixin(WorldRenderer.class) public class WorldRendererMixin { @Nullable diff --git a/src/main/resources/arctic.mixins.json b/src/main/resources/arctic.mixins.json index 992c531..b6a8c6b 100644 --- a/src/main/resources/arctic.mixins.json +++ b/src/main/resources/arctic.mixins.json @@ -6,8 +6,7 @@ "mixins": [ ], "client": [ - "WorldRendererAccessor", - "WorldRendererMixin" + ], "injectors": { "defaultRequire": 1 From 9f8a92f4f3f1bcae3faefb0776c37334fde6342e Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Fri, 29 Dec 2023 15:45:57 +0100 Subject: [PATCH 2/5] feat: finish stuff --- .../arctic/client/ArcticClient.java | 12 ++ .../client/entity/penguin/CardboardModel.java | 25 +++ .../entity/penguin/CardboardRenderer.java | 20 +++ .../arctic/client/entity/seal/SealModel.java | 25 +++ .../client/entity/seal/SealRenderer.java | 20 +++ .../arctic/entity/ArcticEntities.java | 40 ++++- .../entity/penguin/CardboardEntity.java | 53 ++++++ .../arctic/entity/seal/SealEntity.java | 70 ++++++++ .../arctic/item/ArcticItems.java | 16 +- .../arctic/world/ArcticEntityGeneration.java | 20 +++ .../penguin/baby_emperor.animation.json | 101 +---------- .../penguin/cardboard.animation.json | 7 + .../animations/seal/seal.animation.json | 7 + .../arctic/geo/penguin/cardboard.geo.json | 47 ++++++ .../assets/arctic/geo/seal/seal.geo.json | 158 ++++++++++++++++++ .../resources/assets/arctic/lang/en_us.json | 5 +- .../resources/assets/arctic/lang/hu_hu.json | 4 - .../arctic/models/item/seal_spawn_egg.json | 3 + .../arctic/textures/entity/penguin/hululu.png | Bin 0 -> 12860 bytes .../arctic/textures/entity/seal/seal.png | Bin 0 -> 1999 bytes 20 files changed, 525 insertions(+), 108 deletions(-) create mode 100644 src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardModel.java create mode 100644 src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardRenderer.java create mode 100644 src/main/java/me/theclashfruit/arctic/client/entity/seal/SealModel.java create mode 100644 src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java create mode 100644 src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java create mode 100644 src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java create mode 100644 src/main/resources/assets/arctic/animations/penguin/cardboard.animation.json create mode 100644 src/main/resources/assets/arctic/animations/seal/seal.animation.json create mode 100644 src/main/resources/assets/arctic/geo/penguin/cardboard.geo.json create mode 100644 src/main/resources/assets/arctic/geo/seal/seal.geo.json delete mode 100644 src/main/resources/assets/arctic/lang/hu_hu.json create mode 100644 src/main/resources/assets/arctic/models/item/seal_spawn_egg.json create mode 100644 src/main/resources/assets/arctic/textures/entity/penguin/hululu.png create mode 100644 src/main/resources/assets/arctic/textures/entity/seal/seal.png diff --git a/src/main/java/me/theclashfruit/arctic/client/ArcticClient.java b/src/main/java/me/theclashfruit/arctic/client/ArcticClient.java index b106c7b..9cd77bf 100644 --- a/src/main/java/me/theclashfruit/arctic/client/ArcticClient.java +++ b/src/main/java/me/theclashfruit/arctic/client/ArcticClient.java @@ -1,6 +1,8 @@ package me.theclashfruit.arctic.client; import me.theclashfruit.arctic.client.entity.penguin.BabyEmperorRenderer; +import me.theclashfruit.arctic.client.entity.penguin.CardboardRenderer; +import me.theclashfruit.arctic.client.entity.seal.SealRenderer; import me.theclashfruit.arctic.entity.ArcticEntities; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; @@ -15,5 +17,15 @@ public class ArcticClient implements ClientModInitializer { ArcticEntities.BABY_EMPEROR, BabyEmperorRenderer::new ); + + EntityRendererRegistry.register( + ArcticEntities.SEAL, + SealRenderer::new + ); + + EntityRendererRegistry.register( + ArcticEntities.CARDBOARD, + CardboardRenderer::new + ); } } \ No newline at end of file diff --git a/src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardModel.java b/src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardModel.java new file mode 100644 index 0000000..101726c --- /dev/null +++ b/src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardModel.java @@ -0,0 +1,25 @@ +package me.theclashfruit.arctic.client.entity.penguin; + +import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; +import me.theclashfruit.arctic.entity.penguin.CardboardEntity; +import net.minecraft.util.Identifier; +import software.bernie.geckolib.model.GeoModel; + +import static me.theclashfruit.arctic.Arctic.MOD_ID; + +public class CardboardModel extends GeoModel { + @Override + public Identifier getModelResource(CardboardEntity animatable) { + return new Identifier(MOD_ID, "geo/penguin/cardboard.geo.json"); + } + + @Override + public Identifier getTextureResource(CardboardEntity animatable) { + return new Identifier(MOD_ID, "textures/entity/penguin/hululu.png"); + } + + @Override + public Identifier getAnimationResource(CardboardEntity animatable) { + return new Identifier(MOD_ID, "animations/penguin/cardboard.animation.json"); + } +} diff --git a/src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardRenderer.java b/src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardRenderer.java new file mode 100644 index 0000000..2ddc0e1 --- /dev/null +++ b/src/main/java/me/theclashfruit/arctic/client/entity/penguin/CardboardRenderer.java @@ -0,0 +1,20 @@ +package me.theclashfruit.arctic.client.entity.penguin; + +import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; +import me.theclashfruit.arctic.entity.penguin.CardboardEntity; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.util.Identifier; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +import static me.theclashfruit.arctic.Arctic.MOD_ID; + +public class CardboardRenderer extends GeoEntityRenderer { + public CardboardRenderer(EntityRendererFactory.Context ctx) { + super(ctx, new CardboardModel()); + } + + @Override + public Identifier getTextureLocation(CardboardEntity animatable) { + return new Identifier(MOD_ID, "textures/entity/penguin/hululu.png"); + } +} diff --git a/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealModel.java b/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealModel.java new file mode 100644 index 0000000..34e561e --- /dev/null +++ b/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealModel.java @@ -0,0 +1,25 @@ +package me.theclashfruit.arctic.client.entity.seal; + +import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; +import me.theclashfruit.arctic.entity.seal.SealEntity; +import net.minecraft.util.Identifier; +import software.bernie.geckolib.model.GeoModel; + +import static me.theclashfruit.arctic.Arctic.MOD_ID; + +public class SealModel extends GeoModel { + @Override + public Identifier getModelResource(SealEntity animatable) { + return new Identifier(MOD_ID, "geo/seal/seal.geo.json"); + } + + @Override + public Identifier getTextureResource(SealEntity animatable) { + return new Identifier(MOD_ID, "textures/entity/seal/seal.png"); + } + + @Override + public Identifier getAnimationResource(SealEntity animatable) { + return new Identifier(MOD_ID, "animations/seal/seal.animation.json"); + } +} diff --git a/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java b/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java new file mode 100644 index 0000000..bab6676 --- /dev/null +++ b/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java @@ -0,0 +1,20 @@ +package me.theclashfruit.arctic.client.entity.seal; + +import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; +import me.theclashfruit.arctic.entity.seal.SealEntity; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.util.Identifier; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +import static me.theclashfruit.arctic.Arctic.MOD_ID; + +public class SealRenderer extends GeoEntityRenderer { + public SealRenderer(EntityRendererFactory.Context ctx) { + super(ctx, new SealModel()); + } + + @Override + public Identifier getTextureLocation(SealEntity animatable) { + return new Identifier(MOD_ID, "textures/entity/seal/seal.png"); + } +} diff --git a/src/main/java/me/theclashfruit/arctic/entity/ArcticEntities.java b/src/main/java/me/theclashfruit/arctic/entity/ArcticEntities.java index 2489c7e..7362e28 100644 --- a/src/main/java/me/theclashfruit/arctic/entity/ArcticEntities.java +++ b/src/main/java/me/theclashfruit/arctic/entity/ArcticEntities.java @@ -1,6 +1,8 @@ package me.theclashfruit.arctic.entity; import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; +import me.theclashfruit.arctic.entity.penguin.CardboardEntity; +import me.theclashfruit.arctic.entity.seal.SealEntity; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder; import net.minecraft.entity.EntityDimensions; @@ -15,7 +17,19 @@ import static me.theclashfruit.arctic.Arctic.MOD_ID; public class ArcticEntities { public static final EntityType BABY_EMPEROR = FabricEntityTypeBuilder .create(SpawnGroup.CREATURE, BabyEmperorEntity::new) - .dimensions(EntityDimensions.fixed(0.8f, 1f)) + .dimensions(EntityDimensions.fixed(0.75f, 1f)) + .build(); + + public static final EntityType SEAL = FabricEntityTypeBuilder + .create(SpawnGroup.CREATURE, SealEntity::new) + .dimensions(EntityDimensions.fixed(1f, 0.5f)) + .build(); + + // WAHT? + + public static final EntityType CARDBOARD = FabricEntityTypeBuilder + .create(SpawnGroup.CREATURE, CardboardEntity::new) + .dimensions(EntityDimensions.fixed(0.7f, 2f)) .build(); public static void registerEntities() { @@ -25,9 +39,33 @@ public class ArcticEntities { BABY_EMPEROR ); + Registry.register( + Registries.ENTITY_TYPE, + new Identifier(MOD_ID, "seal"), + SEAL + ); + FabricDefaultAttributeRegistry.register( ArcticEntities.BABY_EMPEROR, BabyEmperorEntity.createBabyEmperorAttributes() ); + + FabricDefaultAttributeRegistry.register( + ArcticEntities.SEAL, + SealEntity.createSealAttributes() + ); + + // WAHT? + + Registry.register( + Registries.ENTITY_TYPE, + new Identifier(MOD_ID, "cardboard"), + CARDBOARD + ); + + FabricDefaultAttributeRegistry.register( + ArcticEntities.CARDBOARD, + CardboardEntity.createCardboardAttributes() + ); } } diff --git a/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java b/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java new file mode 100644 index 0000000..d93be08 --- /dev/null +++ b/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java @@ -0,0 +1,53 @@ +package me.theclashfruit.arctic.entity.penguin; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.attribute.DefaultAttributeContainer; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.passive.AnimalEntity; +import net.minecraft.entity.passive.PassiveEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.object.PlayState; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class CardboardEntity extends AnimalEntity implements GeoEntity { + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public CardboardEntity(EntityType entityType, World world) { + super(entityType, world); + } + + public static DefaultAttributeContainer.Builder createCardboardAttributes() { + return AnimalEntity.createMobAttributes() + .add(EntityAttributes.GENERIC_MAX_HEALTH, 0) + .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0); + } + + @Nullable + @Override + public PassiveEntity createChild(ServerWorld world, PassiveEntity entity) { + return null; + } + + protected PlayState predicate(final AnimationState event) { + return PlayState.STOP; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "controller", 0, this::predicate)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } +} diff --git a/src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java b/src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java new file mode 100644 index 0000000..fb3d145 --- /dev/null +++ b/src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java @@ -0,0 +1,70 @@ +package me.theclashfruit.arctic.entity.seal; + +import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.ai.goal.*; +import net.minecraft.entity.attribute.DefaultAttributeContainer; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.passive.AnimalEntity; +import net.minecraft.entity.passive.PassiveEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.object.PlayState; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class SealEntity extends AnimalEntity implements GeoEntity { + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public SealEntity(EntityType entityType, World world) { + super(entityType, world); + } + + public static DefaultAttributeContainer.Builder createSealAttributes() { + return AnimalEntity.createMobAttributes() + .add(EntityAttributes.GENERIC_MAX_HEALTH, 15.0D) + .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.25D); + } + + @Nullable + @Override + public PassiveEntity createChild(ServerWorld world, PassiveEntity entity) { + return null; + } + + @Override + protected void initGoals() { + this.goalSelector.add(0, new SwimGoal(this)); + this.goalSelector.add(0, new EscapeDangerGoal(this, 0.65D)); + this.goalSelector.add(1, new LookAroundGoal(this)); + this.goalSelector.add(1, new WanderAroundGoal(this, 0.55D)); + this.goalSelector.add(2, new LookAtEntityGoal(this, PlayerEntity.class, 6.0F)); + } + + protected PlayState predicate(final AnimationState event) { + if(event.isMoving()) + return event.setAndContinue( + RawAnimation.begin().thenLoop("animation.seal.walk") + ); + + return PlayState.STOP; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "controller", 0, this::predicate)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } +} diff --git a/src/main/java/me/theclashfruit/arctic/item/ArcticItems.java b/src/main/java/me/theclashfruit/arctic/item/ArcticItems.java index 0ee4dc0..91d3be7 100644 --- a/src/main/java/me/theclashfruit/arctic/item/ArcticItems.java +++ b/src/main/java/me/theclashfruit/arctic/item/ArcticItems.java @@ -16,16 +16,28 @@ import static me.theclashfruit.arctic.Arctic.MOD_ID; public class ArcticItems { public static final Item BABY_EMPEROR_SPAWN_EGG = new SpawnEggItem( ArcticEntities.BABY_EMPEROR, - 0xB00B69, - 0xffffff, + 0xF2F2F2, + 0x2E2E2E, + new FabricItemSettings() + ); + + public static final Item SEAL_SPAWN_EGG = new SpawnEggItem( + ArcticEntities.SEAL, + 0xE3F2FC, + 0x737f87, new FabricItemSettings() ); public static void registerItems() { Registry.register(Registries.ITEM, new Identifier(MOD_ID, "baby_emperor_spawn_egg"), BABY_EMPEROR_SPAWN_EGG); + Registry.register(Registries.ITEM, new Identifier(MOD_ID, "seal_spawn_egg"), SEAL_SPAWN_EGG); ItemGroupEvents.modifyEntriesEvent(ItemGroups.SPAWN_EGGS).register(content -> { content.addAfter(Items.AXOLOTL_SPAWN_EGG, BABY_EMPEROR_SPAWN_EGG); }); + + ItemGroupEvents.modifyEntriesEvent(ItemGroups.SPAWN_EGGS).register(content -> { + content.addAfter(Items.SALMON_SPAWN_EGG, SEAL_SPAWN_EGG); + }); } } diff --git a/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java b/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java index 1b36994..798753d 100644 --- a/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java +++ b/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java @@ -24,11 +24,31 @@ public class ArcticEntityGeneration { 6 ); + BiomeModifications.addSpawn( + BiomeSelectors.includeByKey( + BiomeKeys.FROZEN_OCEAN, + BiomeKeys.DEEP_FROZEN_OCEAN, + BiomeKeys.SNOWY_BEACH + ), + SpawnGroup.CREATURE, + ArcticEntities.SEAL, + 50, + 1, + 3 + ); + SpawnRestriction.register( ArcticEntities.BABY_EMPEROR, SpawnRestriction.Location.NO_RESTRICTIONS, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, AnimalEntity::isValidNaturalSpawn ); + + SpawnRestriction.register( + ArcticEntities.SEAL, + SpawnRestriction.Location.NO_RESTRICTIONS, + Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, + AnimalEntity::isValidNaturalSpawn + ); } } diff --git a/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json b/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json index d2f338c..b90976a 100644 --- a/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json +++ b/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json @@ -1,106 +1,7 @@ { "format_version": "1.8.0", "animations": { - "animation.FM-Penguin.new": { - "animation_length": 1.75, - "bones": { - "RightArm": { - "rotation": { - "0.0": { - "vector": [0, 0, 0] - }, - "0.5": { - "vector": [0, 0, 0], - "easing": "easeInBack" - }, - "1.0": { - "vector": [0, 0, -30], - "easing": "easeInBack" - }, - "1.5": { - "vector": [0, 0, 5], - "easing": "easeInBack" - }, - "1.75": { - "vector": [0, 0, 0], - "easing": "easeInBack" - } - } - }, - "LeftArm": { - "rotation": { - "0.0": { - "vector": [0, 0, 0] - }, - "0.5": { - "vector": [0, 0, 25], - "easing": "easeInBack" - }, - "1.0": { - "vector": [0, 0, -5], - "easing": "easeInBack" - }, - "1.25": { - "vector": [0, 0, 0], - "easing": "easeInBack" - } - } - } - } - }, - "animation.baby_emperor.walk": { - "animation_length": 0.83333, - "bones": { - "LeftFoot": { - "rotation": { - "0.0": { - "vector": [0, 0, 0] - }, - "0.0833": { - "vector": [-5, 0, 0] - }, - "0.3333": { - "vector": [0, 0, 0] - } - }, - "position": { - "0.0": { - "vector": [0, 0, 0] - }, - "0.1667": { - "vector": [0, 0, -0.5] - }, - "0.4167": { - "vector": [0, 0, 0] - } - } - }, - "RightFoot": { - "rotation": { - "0.4167": { - "vector": [0, 0, 0] - }, - "0.5": { - "vector": [-5, 0, 0] - }, - "0.75": { - "vector": [0, 0, 0] - } - }, - "position": { - "0.4167": { - "vector": [0, 0, 0] - }, - "0.5833": { - "vector": [0, 0, -0.5] - }, - "0.8333": { - "vector": [0, 0, 0] - } - } - } - } - } + }, "geckolib_format_version": 2 } \ No newline at end of file diff --git a/src/main/resources/assets/arctic/animations/penguin/cardboard.animation.json b/src/main/resources/assets/arctic/animations/penguin/cardboard.animation.json new file mode 100644 index 0000000..b90976a --- /dev/null +++ b/src/main/resources/assets/arctic/animations/penguin/cardboard.animation.json @@ -0,0 +1,7 @@ +{ + "format_version": "1.8.0", + "animations": { + + }, + "geckolib_format_version": 2 +} \ No newline at end of file diff --git a/src/main/resources/assets/arctic/animations/seal/seal.animation.json b/src/main/resources/assets/arctic/animations/seal/seal.animation.json new file mode 100644 index 0000000..b90976a --- /dev/null +++ b/src/main/resources/assets/arctic/animations/seal/seal.animation.json @@ -0,0 +1,7 @@ +{ + "format_version": "1.8.0", + "animations": { + + }, + "geckolib_format_version": 2 +} \ No newline at end of file diff --git a/src/main/resources/assets/arctic/geo/penguin/cardboard.geo.json b/src/main/resources/assets/arctic/geo/penguin/cardboard.geo.json new file mode 100644 index 0000000..59232ef --- /dev/null +++ b/src/main/resources/assets/arctic/geo/penguin/cardboard.geo.json @@ -0,0 +1,47 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.Arctic-Penguin-HululuCardboard", + "texture_width": 64, + "texture_height": 163, + "visible_bounds_width": 3, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "bb_main", + "pivot": [0, 0, 0], + "cubes": [ + { + "origin": [0, 0, -8], + "size": [2, 38, 16], + "pivot": [0, 0, 0], + "rotation": [-89.99996, 87.5, -89.99996], + "uv": { + "north": {"uv": [0, 0], "uv_size": [8, 7]}, + "east": {"uv": [0, 0], "uv_size": [7, 8]}, + "south": {"uv": [0, 0], "uv_size": [9, 9]}, + "west": {"uv": [0, 0], "uv_size": [64, 163]}, + "up": {"uv": [0, 0], "uv_size": [5, 4]}, + "down": {"uv": [0, 6], "uv_size": [8, -6]} + } + } + ] + }, + { + "name": "bone", + "pivot": [0, 0, 7], + "rotation": [35, 0, 0], + "cubes": [ + {"origin": [-6, 0, 5], "size": [2, 12, 2], "uv": [0, 0]}, + {"origin": [4, 0, 5], "size": [2, 12, 2], "uv": [0, 0]}, + {"origin": [-4, 4, 5], "size": [8, 3, 2], "uv": [0, 0]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/arctic/geo/seal/seal.geo.json b/src/main/resources/assets/arctic/geo/seal/seal.geo.json new file mode 100644 index 0000000..907ab7c --- /dev/null +++ b/src/main/resources/assets/arctic/geo/seal/seal.geo.json @@ -0,0 +1,158 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.Arctic-Seal", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 4, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "Head", + "pivot": [0, 1.75, 0], + "rotation": [-6, 5, 0], + "cubes": [ + {"origin": [-5, 2.75, -11.5], "size": [10, 8, 10], "uv": [0, 28]} + ] + }, + { + "name": "Nose", + "parent": "Head", + "pivot": [0, 1.5, 0], + "cubes": [ + {"origin": [-1, 4.5, -12], "size": [2, 1, 1], "uv": [9, 15]} + ] + }, + { + "name": "Whiskas", + "parent": "Head", + "pivot": [0, 1.75, 0] + }, + { + "name": "Left", + "parent": "Whiskas", + "pivot": [-2, 3.5, -11.5], + "rotation": [0, -5, -7.5], + "cubes": [ + { + "origin": [-6.75, 3.25, -11.52], + "size": [5, 0.5, 0], + "uv": { + "north": {"uv": [8, 11], "uv_size": [-6, 1]}, + "east": {"uv": [1, 10], "uv_size": [0, 3]}, + "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "west": {"uv": [6, 10], "uv_size": [0, 3]}, + "up": {"uv": [1, 10], "uv_size": [5, 0]}, + "down": {"uv": [6, 10], "uv_size": [5, 0]} + } + }, + { + "origin": [-6.75, 4, -11.52], + "size": [5, 0.5, 0], + "pivot": [-2, 3.5, -11.5], + "rotation": [0, 0, 5], + "uv": { + "north": {"uv": [8, 11], "uv_size": [-6, 1]}, + "east": {"uv": [1, 10], "uv_size": [0, 3]}, + "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "west": {"uv": [6, 10], "uv_size": [0, 3]}, + "up": {"uv": [1, 10], "uv_size": [5, 0]}, + "down": {"uv": [6, 10], "uv_size": [5, 0]} + } + }, + { + "origin": [-6.75, 2.5, -11.52], + "size": [5, 0.5, 0], + "pivot": [-2, 3.5, -11.5], + "rotation": [0, 0, -5], + "uv": { + "north": {"uv": [8, 11], "uv_size": [-6, 1]}, + "east": {"uv": [1, 10], "uv_size": [0, 3]}, + "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "west": {"uv": [6, 10], "uv_size": [0, 3]}, + "up": {"uv": [1, 10], "uv_size": [5, 0]}, + "down": {"uv": [6, 10], "uv_size": [5, 0]} + } + } + ] + }, + { + "name": "Right", + "parent": "Whiskas", + "pivot": [2, 3.5, -11.5], + "rotation": [0, 5, 7.5], + "cubes": [ + { + "origin": [1.75, 4, -11.52], + "size": [5, 0.5, 0], + "pivot": [2, 3.5, -11.5], + "rotation": [0, 0, -5], + "uv": { + "north": {"uv": [2, 11], "uv_size": [6, 1]}, + "east": {"uv": [1, 6], "uv_size": [0, 3]}, + "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "west": {"uv": [6, 6], "uv_size": [0, 3]}, + "up": {"uv": [1, 6], "uv_size": [5, 0]}, + "down": {"uv": [6, 6], "uv_size": [5, 0]} + } + }, + { + "origin": [1.75, 3.25, -11.52], + "size": [5, 0.5, 0], + "uv": { + "north": {"uv": [2, 11], "uv_size": [6, 1]}, + "east": {"uv": [1, 6], "uv_size": [0, 3]}, + "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "west": {"uv": [6, 6], "uv_size": [0, 3]}, + "up": {"uv": [1, 6], "uv_size": [5, 0]}, + "down": {"uv": [6, 6], "uv_size": [5, 0]} + } + }, + { + "origin": [1.75, 2.5, -11.52], + "size": [5, 0.5, 0], + "pivot": [2, 3.5, -11.5], + "rotation": [0, 0, 5], + "uv": { + "north": {"uv": [2, 11], "uv_size": [6, 1]}, + "east": {"uv": [1, 6], "uv_size": [0, 3]}, + "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "west": {"uv": [6, 6], "uv_size": [0, 3]}, + "up": {"uv": [1, 6], "uv_size": [5, 0]}, + "down": {"uv": [6, 6], "uv_size": [5, 0]} + } + } + ] + }, + { + "name": "Body", + "pivot": [0, 10, 15.5], + "cubes": [ + {"origin": [-7, 0, -3.5], "size": [14, 7, 21], "uv": [0, 0]}, + {"origin": [-1.5, 6, 17], "size": [3, 1, 5], "uv": [-1, -1]} + ] + }, + { + "name": "bone2", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-10, 0, -5], "size": [4, 1.5, 7], "uv": [0, 46]}, + {"origin": [6, 0, -5], "size": [4, 1.5, 7], "uv": [17, 47]} + ] + }, + { + "name": "bone3", + "pivot": [0, 0, 15], + "cubes": [ + {"origin": [-10.5, 0, 11], "size": [4, 1.5, 7], "uv": [33, 39]}, + {"origin": [6.5, 0, 11], "size": [4, 1.5, 7], "uv": [30, 28]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/arctic/lang/en_us.json b/src/main/resources/assets/arctic/lang/en_us.json index da5ae55..8c2f705 100644 --- a/src/main/resources/assets/arctic/lang/en_us.json +++ b/src/main/resources/assets/arctic/lang/en_us.json @@ -1,4 +1,7 @@ { "modmenu.nameTranslation.arctic": "Arctic", - "modmenu.descriptionTranslation.arctic": "A mini overhaul of cold biomes." + "modmenu.descriptionTranslation.arctic": "A mini overhaul of cold biomes.", + + "item.arctic.baby_emperor_spawn_egg": "Baby Emperor Spawn Egg", + "item.arctic.seal_spawn_egg": "Seal Spawn Egg" } \ No newline at end of file diff --git a/src/main/resources/assets/arctic/lang/hu_hu.json b/src/main/resources/assets/arctic/lang/hu_hu.json deleted file mode 100644 index 4cd64fc..0000000 --- a/src/main/resources/assets/arctic/lang/hu_hu.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "modmenu.nameTranslation.arctic": "Sarkvidék", - "modmenu.descriptionTranslation.arctic": "Mini felújítása a hideg biomoknak." -} \ No newline at end of file diff --git a/src/main/resources/assets/arctic/models/item/seal_spawn_egg.json b/src/main/resources/assets/arctic/models/item/seal_spawn_egg.json new file mode 100644 index 0000000..d1aaa9d --- /dev/null +++ b/src/main/resources/assets/arctic/models/item/seal_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/resources/assets/arctic/textures/entity/penguin/hululu.png b/src/main/resources/assets/arctic/textures/entity/penguin/hululu.png new file mode 100644 index 0000000000000000000000000000000000000000..091ac08e387901f19141e53e63e29d683e399707 GIT binary patch literal 12860 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 Y+ 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 D1^@-y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/arctic/textures/entity/seal/seal.png b/src/main/resources/assets/arctic/textures/entity/seal/seal.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb20c38c5add507dcf66b4042b4adee7e830d0b GIT binary patch literal 1999 zcmcJQ`#;kQ1INE(3!B<#siWl@xm3cbsANOAG?Fy3u}PAMg`Ul2*}*cARF06%E$pm^ zNHN6@a|ts#gyeoZRAUZCF3a)!5zh~w_viI`|MdColjQ1RzZ0qs1pr{Dql2B>cGLeC z#U0yhJnJh20EG-kJB&LuXO2~uinK?3*y^oJG(l%fSAqi$q7aL~Gp%yezNAc4l1Die zdRPOLT%RRV3{d*|MCiaw%ehK^?BDj9;rk91A?+87=Q|EJmeRH~@8)LXs@d`{Ctzrx_q9^t>tzn6^%Gq6aLZ84TzfBfYjEKC9?C65 zu-@L?F|}1fYI0_0LRWs@)15Rk)+OjMq_e<1{fX+KeEbMZq=BBCu|56fVzIds2#1ex zMsRGj^d+pAQdB3{tGRuw2)669Wbq zK2DH7GOq}IQzIGD@S`Uk{#!BcV3`ObkP@o*Xc;C(?SI%_Air_l$h-xB-h3mCI_ecd zIq@yIm6w72AX;>n>d*RrWdaCM(AkMl(b8@&vxiqHAfLCdBMucgWhNS^f*MTHHLiJH zC^k=)%k%6P8d!(IZe!ziDFS;Kg6BT7oD6J$2E?I(@Qd_$vzl7&B4nk6X={3{R`01J zluV`m(50W`u6x;yP$k4%7VALh2BiDTE-gh%=LD4_aSbCJvR!VZk-GGuY-7V^z!*BgB=>v@YeSFSpoOf3`P$^+HfAyW=Zp zPXB?CXy0E?+LUqh!b07;$R&LrevA@eVP)kV6y5uUsCYFW@fI0UYkXT?=-sfeJ=#@g zc6Qdmgvd{ckCz|f)ApB?l+>#aUQVz}v&qjuLQ56I>fD8q#tpS^c;NF_a@)o-$*r}F-4&C?Ke?B(2) zfQ(9@f)HCbU0wNG(PaGs{(2y1wT~ZZ#>%3AEIl-B1zb7KjC*-)Z12p*-)+C1f@o*2 ze*dO2Oy!@?^azc+OqI3?Y{?3|=6e+@gKl|fy&IzUU}qs?$_=i9CR|!q8M15LTQk)E z(d2T9c2O-WmS?~yuG7f-lvMORbKDs0Ia-1UO!EVd``&W9uT{$-Fmz_4mlTS3aTm(R zj@>KeBpN0n!rND-g~+Amv~gSnvR*9W-LyJ>C z5k&cvjo%Qhp$)TW@2n&5M_3zdswn@&MUEcT3*T6`{hc&?BBVV7ezpa*AMv#PwmRZIW#>ZI2TF@@1Q z8Y|0pL278YKpymAErSQHg_TI>-0lPrHMy?QA1=Nzt$9z{{L)k^XbC1Ju&?>3xu{zx zFjvuqXjpwD`oJ~m**tOx++WFqRMRBfh#e!%Eb0KL91CIpX-?|tVt+5H59%PhyD()6 zXnH%ur4Q*b2jh7cEPhT~l4O&UGbi@0f2}mtK^S&Qmo7;X;{wO$JS_r&O9{$lEk??x z1H;E>RxQu@X$HZnL>G;{6?z2E2fp=|2YHl* zys6iAir5<0ouBMV3WtBFd1OuO^ai!A*+6(>uArk9ctfC?v_(@J3~sm=wQfN;L#tg* z;csCJ;6{I~En=#ChCb}JQPfUA{6CPkWwj+25W@VpX|{K0`=|lOb1rseHl( Date: Fri, 29 Dec 2023 15:50:15 +0100 Subject: [PATCH 3/5] fix: fix health for easteregg --- .../me/theclashfruit/arctic/entity/penguin/CardboardEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java b/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java index d93be08..ea3d788 100644 --- a/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java +++ b/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java @@ -27,7 +27,7 @@ public class CardboardEntity extends AnimalEntity implements GeoEntity { public static DefaultAttributeContainer.Builder createCardboardAttributes() { return AnimalEntity.createMobAttributes() - .add(EntityAttributes.GENERIC_MAX_HEALTH, 0) + .add(EntityAttributes.GENERIC_MAX_HEALTH, 10) .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0); } From 54207eebd95c86dc649de7faf815a058774e19e3 Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Fri, 29 Dec 2023 16:14:25 +0100 Subject: [PATCH 4/5] docs: add mr badge --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index adb956c..1775841 100644 --- a/README.md +++ b/README.md @@ -13,22 +13,22 @@ License (MIT)

-

- curseforge + modrinth + +

From e9592f8300f62125f29f0228760544178c0e11a4 Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Fri, 29 Dec 2023 20:36:37 +0100 Subject: [PATCH 5/5] feat, fix: few changes and fixes to mobs --- build.gradle | 3 ++ .../penguins/babyEmperor/babyEmperor.bbmodel | 2 +- .../client/entity/seal/SealRenderer.java | 11 ++++ .../entity/penguin/BabyEmperorEntity.java | 42 ++++++++++++--- .../entity/penguin/CardboardEntity.java | 2 +- .../arctic/entity/seal/SealEntity.java | 48 ++++++++++++++---- .../arctic/world/ArcticEntityGeneration.java | 25 ++++++--- .../resources/assets/arctic/lang/en_us.json | 6 ++- .../textures/entity/penguin/baby_emperor.png | Bin 4007 -> 4048 bytes 9 files changed, 113 insertions(+), 26 deletions(-) diff --git a/build.gradle b/build.gradle index da062ce..3ab2bc6 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,9 @@ dependencies { // Development Runtime Mods. modLocalRuntime("maven.modrinth:modmenu:${project.modmenu_version}") + + modLocalRuntime("maven.modrinth:wthit:fabric-10.0.1") + modLocalRuntime("maven.modrinth:badpackets:fabric-0.5.4") } processResources { diff --git a/rawModels/penguins/babyEmperor/babyEmperor.bbmodel b/rawModels/penguins/babyEmperor/babyEmperor.bbmodel index d9fcfb1..721a267 100644 --- a/rawModels/penguins/babyEmperor/babyEmperor.bbmodel +++ b/rawModels/penguins/babyEmperor/babyEmperor.bbmodel @@ -1 +1 @@ -{"meta":{"format_version":"4.9","model_format":"animated_entity_model","box_uv":true},"name":"BabyEmperor","model_identifier":"Arctic-Penguin-BabyEmperor","front_gui_light":false,"visible_box":[2,2.5,0.75],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-3.75,0.55,-2.8],"to":[3.75,10.549999999999999,3.2],"autouv":0,"color":3,"rotation":[-1,0,0],"origin":[0,0,0],"faces":{"north":{"uv":[6,6,13,16],"texture":0},"east":{"uv":[0,6,6,16],"texture":0},"south":{"uv":[19,6,26,16],"texture":0},"west":{"uv":[13,6,19,16],"texture":0},"up":{"uv":[13,6,6,0],"texture":0},"down":{"uv":[20,0,13,6],"texture":0}},"type":"cube","uuid":"b20628e3-5ab5-0edc-6799-2e9b04f662bf"},{"name":"Head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-3,10.5,-2.75],"to":[3,15.5,2.75],"autouv":0,"color":3,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[5,21,11,26],"texture":0},"east":{"uv":[0,21,5,26],"texture":0},"south":{"uv":[16,21,22,26],"texture":0},"west":{"uv":[11,21,16,26],"texture":0},"up":{"uv":[11,21,5,16],"texture":0},"down":{"uv":[17,16,11,21],"texture":0}},"type":"cube","uuid":"1c7b5536-f047-10c1-48f6-feb1a3113908"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0.5,0,-4.25],"to":[3.5,1,2.25],"autouv":0,"color":4,"rotation":[-2.5,-2.5,0],"origin":[0,0,0],"uv_offset":[28,0],"faces":{"north":{"uv":[34,6,37,7],"texture":0},"east":{"uv":[28,6,34,7],"texture":0},"south":{"uv":[43,6,46,7],"texture":0},"west":{"uv":[37,6,43,7],"texture":0},"up":{"uv":[37,6,34,0],"texture":0},"down":{"uv":[40,0,37,6],"texture":0}},"type":"cube","uuid":"e10c74e6-1a4e-1f26-95f3-680abf8a7075"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-3.5,0,-4.25],"to":[-0.5,1,2.25],"autouv":0,"color":4,"rotation":[-2.5,2.5,0],"origin":[0,0,0],"uv_offset":[0,28],"faces":{"north":{"uv":[6,34,9,35],"texture":0},"east":{"uv":[0,34,6,35],"texture":0},"south":{"uv":[15,34,18,35],"texture":0},"west":{"uv":[9,34,15,35],"texture":0},"up":{"uv":[9,34,6,28],"texture":0},"down":{"uv":[12,28,9,34],"texture":0}},"type":"cube","uuid":"72861e72-6fc2-ccfa-7e96-f1ced2addcd8"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,0.5,2.5],"to":[1.5,1.5,4.5],"autouv":0,"color":5,"rotation":[5,0,0],"origin":[0,0.5,2.5],"uv_offset":[22,0],"faces":{"north":{"uv":[24,2,27,3],"texture":0},"east":{"uv":[22,2,24,3],"texture":0},"south":{"uv":[29,2,32,3],"texture":0},"west":{"uv":[27,2,29,3],"texture":0},"up":{"uv":[27,2,24,0],"texture":0},"down":{"uv":[30,0,27,2],"texture":0}},"type":"cube","uuid":"6974287c-b248-b492-6642-543044c18141"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,11.35,-4],"to":[1,12.35,-2],"autouv":0,"color":1,"rotation":[-7.5,0,0],"origin":[0,11.6,-2],"uv_offset":[22,3],"faces":{"north":{"uv":[24,5,26,6],"texture":0},"east":{"uv":[22,5,24,6],"texture":0},"south":{"uv":[28,5,30,6],"texture":0},"west":{"uv":[26,5,28,6],"texture":0},"up":{"uv":[26,5,24,3],"texture":0},"down":{"uv":[28,3,26,5],"texture":0}},"type":"cube","uuid":"26fedd74-33e7-cd82-00e3-8faef88de0c2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.25,2.2,-1.5],"to":[-3.25,10.45,2],"autouv":0,"color":0,"rotation":[2.5,0,-5],"origin":[-4,10.5,0],"uv_offset":[26,13],"faces":{"north":{"uv":[29,16,30,24],"texture":0},"east":{"uv":[26,16,29,24],"texture":0},"south":{"uv":[33,16,34,24],"texture":0},"west":{"uv":[30,16,33,24],"texture":0},"up":{"uv":[30,16,29,13],"texture":0},"down":{"uv":[31,13,30,16],"texture":0}},"type":"cube","uuid":"3805fe48-c6b2-e6ff-c063-dadd8e30ddce"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.25,2.2,-1.5],"to":[4.25,10.45,2],"autouv":0,"color":0,"rotation":[2.5,0,5],"origin":[4,10.5,0],"uv_offset":[19,23],"faces":{"north":{"uv":[22,26,23,34],"texture":0},"east":{"uv":[19,26,22,34],"texture":0},"south":{"uv":[26,26,27,34],"texture":0},"west":{"uv":[23,26,26,34],"texture":0},"up":{"uv":[23,26,22,23],"texture":0},"down":{"uv":[24,23,23,26],"texture":0}},"type":"cube","uuid":"0dd9672b-e7ca-a84d-dc03-e733582a3748"}],"outliner":[{"name":"Body","origin":[0,0,0],"color":0,"uuid":"b595c362-341c-928f-1cd8-95081f9ca7ae","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["b20628e3-5ab5-0edc-6799-2e9b04f662bf",{"name":"Head","origin":[0,0,0],"color":0,"uuid":"06f7eace-9e10-6973-f7ba-c1e2a41b8559","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["1c7b5536-f047-10c1-48f6-feb1a3113908",{"name":"Beak","origin":[0,11.6,-2],"color":0,"uuid":"7d20eddc-d2fc-c2f5-c27e-d729a0611caf","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["26fedd74-33e7-cd82-00e3-8faef88de0c2"]}]},{"name":"Tail","origin":[0,0.5,2.5],"color":0,"uuid":"0781137a-fc61-3fad-53fd-bcabb5aa5b03","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["6974287c-b248-b492-6642-543044c18141"]},{"name":"Arms","origin":[4,10.5,0],"color":0,"uuid":"72211629-9c8c-bd30-c0b0-8184f37bbca4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"RightArm","origin":[-4,10.5,0],"color":0,"uuid":"4a95eca0-acca-531e-ff14-3cc6216b07ce","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["3805fe48-c6b2-e6ff-c063-dadd8e30ddce"]},{"name":"LeftArm","origin":[4,10.5,0],"color":0,"uuid":"b86b624c-d0ea-a221-9450-76327e1f5e89","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["0dd9672b-e7ca-a84d-dc03-e733582a3748"]}]},{"name":"Foots","origin":[0,0,0],"color":0,"uuid":"333c2834-4928-962f-3487-f9a00d80fcb2","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"LeftFoot","origin":[0,0,0],"color":0,"uuid":"586e5424-1b24-7287-3b59-d8dfe9d75d49","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["72861e72-6fc2-ccfa-7e96-f1ced2addcd8"]},{"name":"RightFoot","origin":[0,0,0],"color":0,"uuid":"658c5447-869e-8dd9-53aa-852a31af4cc4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["e10c74e6-1a4e-1f26-95f3-680abf8a7075"]}]}]}],"textures":[{"path":"/home/nyan/documents/Blockbench/Penguin/texture.png","name":"texture.png","folder":"block","namespace":"","id":"0","width":128,"height":128,"uv_width":64,"uv_height":64,"particle":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"2a6e3a5c-c2fc-e3f7-381d-79ef81a6d118","relative_path":"../../../../../Penguin/texture.png","source":"data:image/png;base64,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"}],"animations":[{"uuid":"6e138e8a-3e53-b63d-c037-68b3b6b17f9f","name":"animation.FM-Penguin.new","loop":"once","override":false,"length":1.75,"snapping":24,"selected":false,"saved":false,"path":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"4a95eca0-acca-531e-ff14-3cc6216b07ce":{"name":"RightArm","type":"bone","keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"7fa1524c-8815-16a9-a5be-0eb3fed62464","time":0,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0]},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":-30}],"uuid":"b5f0c4e4-4645-bca9-ef28-944035b34769","time":1,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"d87aafa3-15cf-7204-5276-a345a4d30e57","time":0.5,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":5}],"uuid":"3b98a707-c5e0-8ba0-e4c6-f67d4bdbf563","time":1.5,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":0}],"uuid":"932f454d-59b5-32cc-76c3-5adb6ac8469e","time":1.75,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"}]},"b86b624c-d0ea-a221-9450-76327e1f5e89":{"name":"LeftArm","type":"bone","keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"3cb1a103-48a5-4670-6cbf-4219250275b5","time":0,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0]},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":25}],"uuid":"1e7d3864-8f2d-9481-9dae-ada103355aaa","time":0.5,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":-5}],"uuid":"686e0e74-99c2-680c-51a6-47765e1dfb28","time":1,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":0}],"uuid":"09e90603-bb41-dec0-39bf-f74ecb656a8e","time":1.25,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"}]}}}],"display":{},"geckoSettings":{"formatVersion":2,"modSDK":"Forge 1.12 - 1.16","objectType":"OBJ_TYPE_ITEM_BLOCK","entityType":"Entity","javaPackage":"com.example.mod","animFileNamespace":"MODID","animFilePath":"animations/ANIMATIONFILE.json"}} \ No newline at end of file +{"meta":{"format_version":"4.9","model_format":"animated_entity_model","box_uv":true},"name":"BabyEmperor","model_identifier":"Arctic-Penguin-BabyEmperor","front_gui_light":false,"visible_box":[2,2.5,0.75],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-3.75,0.55,-2.8],"to":[3.75,10.549999999999999,3.2],"autouv":0,"color":3,"rotation":[-1,0,0],"origin":[0,0,0],"faces":{"north":{"uv":[6,6,13,16],"texture":0},"east":{"uv":[0,6,6,16],"texture":0},"south":{"uv":[19,6,26,16],"texture":0},"west":{"uv":[13,6,19,16],"texture":0},"up":{"uv":[13,6,6,0],"texture":0},"down":{"uv":[20,0,13,6],"texture":0}},"type":"cube","uuid":"b20628e3-5ab5-0edc-6799-2e9b04f662bf"},{"name":"Head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-3,10.5,-2.75],"to":[3,15.5,2.75],"autouv":0,"color":3,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[5,21,11,26],"texture":0},"east":{"uv":[0,21,5,26],"texture":0},"south":{"uv":[16,21,22,26],"texture":0},"west":{"uv":[11,21,16,26],"texture":0},"up":{"uv":[11,21,5,16],"texture":0},"down":{"uv":[17,16,11,21],"texture":0}},"type":"cube","uuid":"1c7b5536-f047-10c1-48f6-feb1a3113908"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0.5,0,-4.25],"to":[3.5,1,2.25],"autouv":0,"color":4,"rotation":[-2.5,-2.5,0],"origin":[0,0,0],"uv_offset":[28,0],"faces":{"north":{"uv":[34,6,37,7],"texture":0},"east":{"uv":[28,6,34,7],"texture":0},"south":{"uv":[43,6,46,7],"texture":0},"west":{"uv":[37,6,43,7],"texture":0},"up":{"uv":[37,6,34,0],"texture":0},"down":{"uv":[40,0,37,6],"texture":0}},"type":"cube","uuid":"e10c74e6-1a4e-1f26-95f3-680abf8a7075"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-3.5,0,-4.25],"to":[-0.5,1,2.25],"autouv":0,"color":4,"rotation":[-2.5,2.5,0],"origin":[0,0,0],"uv_offset":[0,28],"faces":{"north":{"uv":[6,34,9,35],"texture":0},"east":{"uv":[0,34,6,35],"texture":0},"south":{"uv":[15,34,18,35],"texture":0},"west":{"uv":[9,34,15,35],"texture":0},"up":{"uv":[9,34,6,28],"texture":0},"down":{"uv":[12,28,9,34],"texture":0}},"type":"cube","uuid":"72861e72-6fc2-ccfa-7e96-f1ced2addcd8"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,0.5,2.5],"to":[1.5,1.5,4.5],"autouv":0,"color":5,"rotation":[5,0,0],"origin":[0,0.5,2.5],"uv_offset":[22,0],"faces":{"north":{"uv":[24,2,27,3],"texture":0},"east":{"uv":[22,2,24,3],"texture":0},"south":{"uv":[29,2,32,3],"texture":0},"west":{"uv":[27,2,29,3],"texture":0},"up":{"uv":[27,2,24,0],"texture":0},"down":{"uv":[30,0,27,2],"texture":0}},"type":"cube","uuid":"6974287c-b248-b492-6642-543044c18141"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,11.35,-4],"to":[1,12.35,-2],"autouv":0,"color":1,"rotation":[-7.5,0,0],"origin":[0,11.6,-2],"uv_offset":[22,3],"faces":{"north":{"uv":[24,5,26,6],"texture":0},"east":{"uv":[22,5,24,6],"texture":0},"south":{"uv":[28,5,30,6],"texture":0},"west":{"uv":[26,5,28,6],"texture":0},"up":{"uv":[26,5,24,3],"texture":0},"down":{"uv":[28,3,26,5],"texture":0}},"type":"cube","uuid":"26fedd74-33e7-cd82-00e3-8faef88de0c2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.25,2.2,-1.5],"to":[-3.25,10.45,2],"autouv":0,"color":0,"rotation":[2.5,0,-5],"origin":[-4,10.5,0],"uv_offset":[26,13],"faces":{"north":{"uv":[29,16,30,24],"texture":0},"east":{"uv":[26,16,29,24],"texture":0},"south":{"uv":[33,16,34,24],"texture":0},"west":{"uv":[30,16,33,24],"texture":0},"up":{"uv":[30,16,29,13],"texture":0},"down":{"uv":[31,13,30,16],"texture":0}},"type":"cube","uuid":"3805fe48-c6b2-e6ff-c063-dadd8e30ddce"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.25,2.2,-1.5],"to":[4.25,10.45,2],"autouv":0,"color":0,"rotation":[2.5,0,5],"origin":[4,10.5,0],"uv_offset":[19,23],"faces":{"north":{"uv":[22,26,23,34],"texture":0},"east":{"uv":[19,26,22,34],"texture":0},"south":{"uv":[26,26,27,34],"texture":0},"west":{"uv":[23,26,26,34],"texture":0},"up":{"uv":[23,26,22,23],"texture":0},"down":{"uv":[24,23,23,26],"texture":0}},"type":"cube","uuid":"0dd9672b-e7ca-a84d-dc03-e733582a3748"}],"outliner":[{"name":"Body","origin":[0,0,0],"color":0,"uuid":"b595c362-341c-928f-1cd8-95081f9ca7ae","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["b20628e3-5ab5-0edc-6799-2e9b04f662bf",{"name":"Head","origin":[0,13,0],"color":0,"uuid":"06f7eace-9e10-6973-f7ba-c1e2a41b8559","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["1c7b5536-f047-10c1-48f6-feb1a3113908",{"name":"Beak","origin":[0,11.6,-2],"color":0,"uuid":"7d20eddc-d2fc-c2f5-c27e-d729a0611caf","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["26fedd74-33e7-cd82-00e3-8faef88de0c2"]}]},{"name":"Tail","origin":[0,0.5,2.5],"color":0,"uuid":"0781137a-fc61-3fad-53fd-bcabb5aa5b03","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["6974287c-b248-b492-6642-543044c18141"]},{"name":"Arms","origin":[4,10.5,0],"color":0,"uuid":"72211629-9c8c-bd30-c0b0-8184f37bbca4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"RightArm","origin":[-4,10.5,0],"color":0,"uuid":"4a95eca0-acca-531e-ff14-3cc6216b07ce","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["3805fe48-c6b2-e6ff-c063-dadd8e30ddce"]},{"name":"LeftArm","origin":[4,10.5,0],"color":0,"uuid":"b86b624c-d0ea-a221-9450-76327e1f5e89","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["0dd9672b-e7ca-a84d-dc03-e733582a3748"]}]},{"name":"Foots","origin":[0,0,0],"color":0,"uuid":"333c2834-4928-962f-3487-f9a00d80fcb2","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"LeftFoot","origin":[0,0,0],"color":0,"uuid":"586e5424-1b24-7287-3b59-d8dfe9d75d49","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["72861e72-6fc2-ccfa-7e96-f1ced2addcd8"]},{"name":"RightFoot","origin":[0,0,0],"color":0,"uuid":"658c5447-869e-8dd9-53aa-852a31af4cc4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["e10c74e6-1a4e-1f26-95f3-680abf8a7075"]}]}]}],"textures":[{"path":"/home/nyan/documents/Blockbench/Penguin/texture.png","name":"texture.png","folder":"block","namespace":"","id":"0","width":128,"height":128,"uv_width":64,"uv_height":64,"particle":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"2a6e3a5c-c2fc-e3f7-381d-79ef81a6d118","source":"data:image/png;base64,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","relative_path":"../../../../../../../../../home/nyan/documents/Blockbench/Penguin/texture.png"}],"animations":[{"uuid":"6e138e8a-3e53-b63d-c037-68b3b6b17f9f","name":"animation.FM-Penguin.new","loop":"once","override":false,"length":1.75,"snapping":24,"selected":true,"saved":false,"path":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"4a95eca0-acca-531e-ff14-3cc6216b07ce":{"name":"RightArm","type":"bone","keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"7fa1524c-8815-16a9-a5be-0eb3fed62464","time":0,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0]},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":-30}],"uuid":"b5f0c4e4-4645-bca9-ef28-944035b34769","time":1,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"d87aafa3-15cf-7204-5276-a345a4d30e57","time":0.5,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":5}],"uuid":"3b98a707-c5e0-8ba0-e4c6-f67d4bdbf563","time":1.5,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":0}],"uuid":"932f454d-59b5-32cc-76c3-5adb6ac8469e","time":1.75,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"}]},"b86b624c-d0ea-a221-9450-76327e1f5e89":{"name":"LeftArm","type":"bone","keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"3cb1a103-48a5-4670-6cbf-4219250275b5","time":0,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0]},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":25}],"uuid":"1e7d3864-8f2d-9481-9dae-ada103355aaa","time":0.5,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":-5}],"uuid":"686e0e74-99c2-680c-51a6-47765e1dfb28","time":1,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"},{"channel":"rotation","data_points":[{"x":0,"y":0,"z":0}],"uuid":"09e90603-bb41-dec0-39bf-f74ecb656a8e","time":1.25,"color":-1,"interpolation":"linear","bezier_linked":true,"bezier_left_time":[-0.1,-0.1,-0.1],"bezier_left_value":[0,0,0],"bezier_right_time":[0.1,0.1,0.1],"bezier_right_value":[0,0,0],"easing":"easeInBack"}]}}}],"geckoSettings":{"formatVersion":2,"modSDK":"Forge 1.12 - 1.16","objectType":"OBJ_TYPE_ITEM_BLOCK","entityType":"Entity","javaPackage":"com.example.mod","animFileNamespace":"MODID","animFilePath":"animations/ANIMATIONFILE.json"}} \ No newline at end of file diff --git a/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java b/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java index bab6676..b1db637 100644 --- a/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java +++ b/src/main/java/me/theclashfruit/arctic/client/entity/seal/SealRenderer.java @@ -2,7 +2,9 @@ package me.theclashfruit.arctic.client.entity.seal; import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; import me.theclashfruit.arctic.entity.seal.SealEntity; +import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; import software.bernie.geckolib.renderer.GeoEntityRenderer; @@ -17,4 +19,13 @@ public class SealRenderer extends GeoEntityRenderer { public Identifier getTextureLocation(SealEntity animatable) { return new Identifier(MOD_ID, "textures/entity/seal/seal.png"); } + + @Override + public void render(SealEntity entity, float entityYaw, float partialTick, MatrixStack poseStack, VertexConsumerProvider bufferSource, int packedLight) { + if(entity.isBaby()) { + poseStack.scale(0.5f, 0.5f, 0.5f); + } + + super.render(entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); + } } diff --git a/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java b/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java index bd9f5a6..760bf05 100644 --- a/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java +++ b/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java @@ -1,14 +1,26 @@ package me.theclashfruit.arctic.entity.penguin; +import me.theclashfruit.arctic.entity.seal.SealEntity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.ai.goal.*; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.PassiveEntity; +import net.minecraft.entity.passive.PolarBearEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Items; +import net.minecraft.recipe.Ingredient; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.tag.BiomeTags; +import net.minecraft.registry.tag.BlockTags; import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.biome.Biome; import org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.core.animatable.GeoAnimatable; @@ -42,17 +54,31 @@ public class BabyEmperorEntity extends AnimalEntity implements GeoEntity { @Override protected void initGoals() { this.goalSelector.add(0, new SwimGoal(this)); - this.goalSelector.add(0, new EscapeDangerGoal(this, 0.65D)); - this.goalSelector.add(1, new LookAroundGoal(this)); - this.goalSelector.add(1, new WanderAroundGoal(this, 0.55D)); - this.goalSelector.add(2, new LookAtEntityGoal(this, PlayerEntity.class, 6.0F)); + this.goalSelector.add(1, new EscapeDangerGoal(this, 1.0)); + + // this.goalSelector.add(3, new AnimalMateGoal(this, 0.85)); + // this.goalSelector.add(4, new TemptGoal(this, 1.2, Ingredient.ofItems(Items.SALMON), false)); + // this.goalSelector.add(5, new FollowParentGoal(this, 1.1)); + + this.goalSelector.add(6, new WanderAroundGoal(this, 0.85)); + this.goalSelector.add(7, new LookAtEntityGoal(this, PlayerEntity.class, 6.0f)); + this.goalSelector.add(8, new LookAroundGoal(this)); + } + + public static boolean canSpawn(EntityType type, WorldAccess world, SpawnReason spawnReason, BlockPos pos, Random random) { + RegistryEntry registryEntry = world.getBiome(pos); + + if (registryEntry.isIn(BiomeTags.POLAR_BEARS_SPAWN_ON_ALTERNATE_BLOCKS)) + return BabyEmperorEntity.isLightLevelValidForNaturalSpawn(world, pos) && world.getBlockState(pos.down()).isIn(BlockTags.POLAR_BEARS_SPAWNABLE_ON_ALTERNATE); + + return BabyEmperorEntity.isValidNaturalSpawn(type, world, spawnReason, pos, random); } protected PlayState predicate(final AnimationState event) { - if(event.isMoving()) - return event.setAndContinue( - RawAnimation.begin().thenLoop("animation.baby_emperor.walk") - ); +// if(event.isMoving()) +// return event.setAndContinue( +// RawAnimation.begin().thenLoop("animation.baby_emperor.walk") +// ); return PlayState.STOP; } diff --git a/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java b/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java index ea3d788..e5dd0c1 100644 --- a/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java +++ b/src/main/java/me/theclashfruit/arctic/entity/penguin/CardboardEntity.java @@ -27,7 +27,7 @@ public class CardboardEntity extends AnimalEntity implements GeoEntity { public static DefaultAttributeContainer.Builder createCardboardAttributes() { return AnimalEntity.createMobAttributes() - .add(EntityAttributes.GENERIC_MAX_HEALTH, 10) + .add(EntityAttributes.GENERIC_MAX_HEALTH, 20) .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0); } diff --git a/src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java b/src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java index fb3d145..040e139 100644 --- a/src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java +++ b/src/main/java/me/theclashfruit/arctic/entity/seal/SealEntity.java @@ -1,15 +1,28 @@ package me.theclashfruit.arctic.entity.seal; +import me.theclashfruit.arctic.entity.ArcticEntities; import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.ai.goal.*; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.PassiveEntity; +import net.minecraft.entity.passive.PolarBearEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.recipe.Ingredient; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.tag.BiomeTags; +import net.minecraft.registry.tag.BlockTags; import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.biome.Biome; import org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; @@ -37,23 +50,40 @@ public class SealEntity extends AnimalEntity implements GeoEntity { @Nullable @Override public PassiveEntity createChild(ServerWorld world, PassiveEntity entity) { - return null; + return ArcticEntities.SEAL.create(world); + } + + @Override + public boolean isBreedingItem(ItemStack stack) { + return stack.getItem() == Items.SALMON; } @Override protected void initGoals() { this.goalSelector.add(0, new SwimGoal(this)); - this.goalSelector.add(0, new EscapeDangerGoal(this, 0.65D)); - this.goalSelector.add(1, new LookAroundGoal(this)); - this.goalSelector.add(1, new WanderAroundGoal(this, 0.55D)); - this.goalSelector.add(2, new LookAtEntityGoal(this, PlayerEntity.class, 6.0F)); + this.goalSelector.add(1, new EscapeDangerGoal(this, 1.0)); + this.goalSelector.add(3, new AnimalMateGoal(this, 0.85)); + this.goalSelector.add(4, new TemptGoal(this, 1.2, Ingredient.ofItems(Items.SALMON), false)); + this.goalSelector.add(5, new FollowParentGoal(this, 1.1)); + this.goalSelector.add(6, new WanderAroundGoal(this, 0.85)); + this.goalSelector.add(7, new LookAtEntityGoal(this, PlayerEntity.class, 6.0f)); + this.goalSelector.add(8, new LookAroundGoal(this)); + } + + public static boolean canSpawn(EntityType type, WorldAccess world, SpawnReason spawnReason, BlockPos pos, Random random) { + RegistryEntry registryEntry = world.getBiome(pos); + + if (registryEntry.isIn(BiomeTags.POLAR_BEARS_SPAWN_ON_ALTERNATE_BLOCKS)) + return SealEntity.isLightLevelValidForNaturalSpawn(world, pos) && world.getBlockState(pos.down()).isIn(BlockTags.POLAR_BEARS_SPAWNABLE_ON_ALTERNATE); + + return SealEntity.isValidNaturalSpawn(type, world, spawnReason, pos, random); } protected PlayState predicate(final AnimationState event) { - if(event.isMoving()) - return event.setAndContinue( - RawAnimation.begin().thenLoop("animation.seal.walk") - ); +// if(event.isMoving()) +// return event.setAndContinue( +// RawAnimation.begin().thenLoop("animation.seal.walk") +// ); return PlayState.STOP; } diff --git a/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java b/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java index 798753d..b61167e 100644 --- a/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java +++ b/src/main/java/me/theclashfruit/arctic/world/ArcticEntityGeneration.java @@ -1,12 +1,25 @@ package me.theclashfruit.arctic.world; import me.theclashfruit.arctic.entity.ArcticEntities; +import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity; +import me.theclashfruit.arctic.entity.seal.SealEntity; import net.fabricmc.fabric.api.biome.v1.BiomeModifications; import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; +import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.SpawnRestriction; import net.minecraft.entity.passive.AnimalEntity; +import net.minecraft.entity.passive.PigEntity; +import net.minecraft.entity.passive.PolarBearEntity; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.tag.BiomeTags; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; import net.minecraft.world.Heightmap; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeKeys; public class ArcticEntityGeneration { @@ -39,16 +52,16 @@ public class ArcticEntityGeneration { SpawnRestriction.register( ArcticEntities.BABY_EMPEROR, - SpawnRestriction.Location.NO_RESTRICTIONS, - Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, - AnimalEntity::isValidNaturalSpawn + SpawnRestriction.Location.ON_GROUND, + Heightmap.Type.WORLD_SURFACE, + BabyEmperorEntity::canSpawn ); SpawnRestriction.register( ArcticEntities.SEAL, - SpawnRestriction.Location.NO_RESTRICTIONS, - Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, - AnimalEntity::isValidNaturalSpawn + SpawnRestriction.Location.ON_GROUND, + Heightmap.Type.WORLD_SURFACE, + SealEntity::canSpawn ); } } diff --git a/src/main/resources/assets/arctic/lang/en_us.json b/src/main/resources/assets/arctic/lang/en_us.json index 8c2f705..8c0560d 100644 --- a/src/main/resources/assets/arctic/lang/en_us.json +++ b/src/main/resources/assets/arctic/lang/en_us.json @@ -3,5 +3,9 @@ "modmenu.descriptionTranslation.arctic": "A mini overhaul of cold biomes.", "item.arctic.baby_emperor_spawn_egg": "Baby Emperor Spawn Egg", - "item.arctic.seal_spawn_egg": "Seal Spawn Egg" + "item.arctic.seal_spawn_egg": "Seal Spawn Egg", + + "entity.arctic.baby_emperor": "Baby Emperor", + "entity.arctic.seal": "Seal", + "entity.arctic.cardboard": "Hululu Cardboard" } \ No newline at end of file diff --git a/src/main/resources/assets/arctic/textures/entity/penguin/baby_emperor.png b/src/main/resources/assets/arctic/textures/entity/penguin/baby_emperor.png index b13b97113f7bef55ce139fc35c164804e108ebb8..4befd6436020b07b2f035f3f97f78e9c0fa6b814 100644 GIT binary patch literal 4048 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 literal 4007 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 wDz>GA