From 64666e8e60fa86616ae2a3670b1bb7e7f05edd52 Mon Sep 17 00:00:00 2001 From: Sollace Date: Thu, 21 Mar 2019 17:03:59 +0200 Subject: [PATCH] Added butterflies --- .../unicopia/entity/EntityButterfly.java | 224 ++++++++++++++++++ .../unicopia/init/UEntities.java | 22 +- .../unicopia/mixin/FieldAccessor.java | 2 +- .../unicopia/mixin/MixinEntity.java | 1 + .../unicopia/model/ModelButterfly.java | 91 +++++++ .../unicopia/render/RenderButterfly.java | 37 +++ .../resources/assets/unicopia/lang/en_US.lang | 1 + .../textures/entity/butterfly/blue.png | Bin 0 -> 2923 bytes .../textures/entity/butterfly/brimstone.png | Bin 0 -> 3362 bytes .../textures/entity/butterfly/butterfly.png | Bin 0 -> 2855 bytes .../textures/entity/butterfly/green.png | Bin 0 -> 2907 bytes .../textures/entity/butterfly/hedylidae.png | Bin 0 -> 3419 bytes .../textures/entity/butterfly/lime.png | Bin 0 -> 3389 bytes .../textures/entity/butterfly/lycaenidae.png | Bin 0 -> 3490 bytes .../textures/entity/butterfly/magenta.png | Bin 0 -> 2890 bytes .../textures/entity/butterfly/monarch.png | Bin 0 -> 3537 bytes .../textures/entity/butterfly/nymphalidae.png | Bin 0 -> 3437 bytes .../textures/entity/butterfly/pink.png | Bin 0 -> 2911 bytes .../textures/entity/butterfly/purple.png | Bin 0 -> 2898 bytes .../textures/entity/butterfly/red.png | Bin 0 -> 2912 bytes .../entity/butterfly/white_monarch.png | Bin 0 -> 3537 bytes .../textures/entity/butterfly/yellow.png | Bin 0 -> 2927 bytes 22 files changed, 373 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/entity/EntityButterfly.java create mode 100644 src/main/java/com/minelittlepony/unicopia/model/ModelButterfly.java create mode 100644 src/main/java/com/minelittlepony/unicopia/render/RenderButterfly.java create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/blue.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/brimstone.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/butterfly.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/green.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/hedylidae.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/lime.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/lycaenidae.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/magenta.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/monarch.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/nymphalidae.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/pink.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/purple.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/red.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/white_monarch.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/butterfly/yellow.png diff --git a/src/main/java/com/minelittlepony/unicopia/entity/EntityButterfly.java b/src/main/java/com/minelittlepony/unicopia/entity/EntityButterfly.java new file mode 100644 index 00000000..1c0fcae4 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/entity/EntityButterfly.java @@ -0,0 +1,224 @@ +package com.minelittlepony.unicopia.entity; + +import java.util.Random; + +import com.minelittlepony.unicopia.Unicopia; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.IMob; +import net.minecraft.entity.passive.EntityAmbientCreature; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.network.datasync.EntityDataManager; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome.SpawnListEntry; + +public class EntityButterfly extends EntityAmbientCreature { + + public static final SpawnListEntry SPAWN_ENTRY = new SpawnListEntry(EntityButterfly.class, 15, 9, 15); + + private static final DataParameter RESTING = EntityDataManager.createKey(EntityButterfly.class, DataSerializers.BOOLEAN); + + private static final DataParameter VARIANT = EntityDataManager.createKey(EntityButterfly.class, DataSerializers.VARINT); + + private BlockPos hoveringPosition; + + public EntityButterfly(World world) { + super(world); + + preventEntitySpawning = false; + width = 0.1F; + height = 0.1F; + + setVariaty(Variant.random(world.rand)); + setResting(true); + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(2); + } + + @Override + protected void entityInit() { + super.entityInit(); + dataManager.register(VARIANT, Variant.BUTTERFLY.ordinal()); + dataManager.register(RESTING, false); + } + + @Override + public boolean canBePushed() { + return false; + } + + @Override + protected void collideWithEntity(Entity entity) { + } + + @Override + protected void collideWithNearbyEntities() { + } + + @Override + public void onUpdate() { + super.onUpdate(); + + motionY *= 0.6; + } + + public boolean isResting() { + return dataManager.get(RESTING); + } + + public void setResting(boolean resting) { + dataManager.set(RESTING, resting); + } + + public Variant getVariety() { + Variant[] values = Variant.values(); + return values[dataManager.get(VARIANT) % values.length]; + } + + public void setVariaty(Variant variant) { + dataManager.set(VARIANT, variant.ordinal()); + } + + protected boolean isAggressor(Entity e) { + if (e instanceof EntityButterfly) { + return false; + } + + if (e instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer)e; + + if (player.isCreative() || player.isSpectator()) { + return false; + } + + if (player.isSprinting() || player.isSwingInProgress || player.moveForward > 0 || player.moveStrafing > 0) { + return true; + } + } else if (!IMob.VISIBLE_MOB_SELECTOR.test(e)) { + return false; + } + + return Math.abs(e.motionX) > 0 || Math.abs(e.motionZ) > 0; + } + + protected void updateAITasks() { + super.updateAITasks(); + + BlockPos pos = getPosition(); + BlockPos below = pos.down(); + + if (isResting()) { + if (world.getBlockState(below).isNormalCube()) { + if (world.getEntitiesWithinAABBExcludingEntity(this, getEntityBoundingBox().grow(7)).stream().anyMatch(this::isAggressor)) { + setResting(false); + } + } else { + setResting(false); + } + + } else { + + // invalidate the hovering position + if (hoveringPosition != null && (!world.isAirBlock(hoveringPosition) || hoveringPosition.getY() < 1)) { + hoveringPosition = null; + } + + // select a new hovering position + if (hoveringPosition == null || rand.nextInt(30) == 0 || hoveringPosition.distanceSq(posX, posY, posZ) < 4) { + hoveringPosition = new BlockPos(posX + rand.nextInt(7) - rand.nextInt(7), posY + rand.nextInt(6) - 2, posZ + rand.nextInt(7) - rand.nextInt(7)); + } + + // hover casually towards the chosen position + + double changedX = hoveringPosition.getX() + 0.5D - posX; + double changedY = hoveringPosition.getY() + 0.1D - posY; + double changedZ = hoveringPosition.getZ() + 0.5D - posZ; + + motionX += (Math.signum(changedX) * 0.5D - motionX) * 0.10000000149011612D; + motionY += (Math.signum(changedY) * 0.699999988079071D - motionY) * 0.10000000149011612D; + motionZ += (Math.signum(changedZ) * 0.5D - motionZ) * 0.10000000149011612D; + + float f = (float)(MathHelper.atan2(motionZ, motionX) * (180 / Math.PI)) - 90; + + moveForward = 0.5F; + rotationYaw += MathHelper.wrapDegrees(f - rotationYaw); + + if (rand.nextInt(100) == 0 && world.getBlockState(below).isNormalCube()) { + setResting(true); + } + } + } + + @Override + protected boolean canTriggerWalking() { + return false; + } + + @Override + public void fall(float distance, float damageMultiplier) { + } + + @Override + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) { + } + + @Override + public boolean doesEntityNotTriggerPressurePlate() { + return true; + } + + @Override + public boolean getCanSpawnHere() { + if (posY < world.getSeaLevel()) { + return false; + } + + return world.getLightFromNeighbors(getPosition()) > 7 + && super.getCanSpawnHere(); + } + + @Override + public float getEyeHeight() { + return height / 2; + } + + public static enum Variant { + BUTTERFLY, + YELLOW, + LIME, + RED, + GREEN, + BLUE, + PURPLE, + MAGENTA, + PINK, + HEDYLIDAE, + LYCAENIDAE, + NYMPHALIDAE, + MONARCH, + WHITE_MONARCH, + BRIMSTONE; + + private final ResourceLocation skin = new ResourceLocation(Unicopia.MODID, "textures/entity/butterfly/" + name().toLowerCase() + ".png"); + + public ResourceLocation getSkin() { + return skin; + } + + static Variant random(Random rand) { + Variant[] values = values(); + return values[rand.nextInt(values.length)]; + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/init/UEntities.java b/src/main/java/com/minelittlepony/unicopia/init/UEntities.java index e955160c..cd231436 100644 --- a/src/main/java/com/minelittlepony/unicopia/init/UEntities.java +++ b/src/main/java/com/minelittlepony/unicopia/init/UEntities.java @@ -1,6 +1,7 @@ package com.minelittlepony.unicopia.init; import com.minelittlepony.unicopia.Unicopia; +import com.minelittlepony.unicopia.entity.EntityButterfly; import com.minelittlepony.unicopia.entity.EntityCloud; import com.minelittlepony.unicopia.entity.EntityConstructionCloud; import com.minelittlepony.unicopia.entity.EntityCuccoon; @@ -12,6 +13,7 @@ import com.minelittlepony.unicopia.entity.EntityProjectile; import com.minelittlepony.unicopia.entity.EntityWildCloud; import com.minelittlepony.unicopia.forgebullshit.BiomeBS; import com.minelittlepony.unicopia.forgebullshit.EntityType; +import com.minelittlepony.unicopia.render.RenderButterfly; import com.minelittlepony.unicopia.render.RenderCloud; import com.minelittlepony.unicopia.render.RenderCuccoon; import com.minelittlepony.unicopia.render.RenderGem; @@ -22,27 +24,30 @@ import com.minelittlepony.unicopia.render.RenderSpellbook; import net.minecraft.entity.EnumCreatureType; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeEnd; +import net.minecraft.world.biome.BiomeForest; import net.minecraft.world.biome.BiomeHell; +import net.minecraft.world.biome.BiomeHills; +import net.minecraft.world.biome.BiomePlains; +import net.minecraft.world.biome.BiomeRiver; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.registry.EntityEntry; import net.minecraftforge.registries.IForgeRegistry; public class UEntities { - private static final int BRUSHES_ROYALBLUE = 0x4169E1; - private static final int BRUSHES_CHARTREUSE = 0x7FFF00; static void init(IForgeRegistry registry) { EntityType builder = EntityType.builder(Unicopia.MODID); registry.registerAll( - builder.creature(EntityCloud.class, "cloud").withEgg(BRUSHES_ROYALBLUE, BRUSHES_CHARTREUSE), + builder.creature(EntityCloud.class, "cloud").withEgg(0x4169e1, 0x7fff00), builder.creature(EntityWildCloud.class, "wild_cloud"), builder.creature(EntityRacingCloud.class, "racing_cloud"), builder.creature(EntityConstructionCloud.class, "construction_cloud"), builder.creature(EntitySpell.class, "magic_spell"), builder.creature(EntitySpellbook.class, "spellbook"), builder.creature(EntityRainbow.Spawner.class, "rainbow_spawner"), - builder.creature(EntityCuccoon.class, "cuccoon").withEgg(0, 0), + builder.creature(EntityCuccoon.class, "cuccoon"), + builder.creature(EntityButterfly.class, "butterfly").withEgg(0x222200, 0xaaeeff), builder.projectile(EntityRainbow.class, "rainbow", 500, 5), builder.projectile(EntityProjectile.class, "thrown_item", 100, 10) ); @@ -54,6 +59,7 @@ public class UEntities { RenderingRegistry.registerEntityRenderingHandler(EntityProjectile.class, RenderProjectile::new); RenderingRegistry.registerEntityRenderingHandler(EntitySpellbook.class, RenderSpellbook::new); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, RenderRainbow::new); + RenderingRegistry.registerEntityRenderingHandler(EntityButterfly.class, RenderButterfly::new); RenderingRegistry.registerEntityRenderingHandler(EntityCuccoon.class, RenderCuccoon::new); } @@ -63,7 +69,15 @@ public class UEntities { BiomeBS.addSpawnEntry(biome, EnumCreatureType.AMBIENT, EntityWildCloud.class, b -> BiomeManager.oceanBiomes.contains(b) ? EntityWildCloud.SPAWN_ENTRY_LAND : EntityWildCloud.SPAWN_ENTRY_OCEAN ); + BiomeBS.addSpawnEntry(biome, EnumCreatureType.CREATURE, EntityRainbow.Spawner.class, b -> EntityRainbow.SPAWN_ENTRY); } + + if (biome instanceof BiomePlains + || biome instanceof BiomeRiver + || biome instanceof BiomeHills + || biome instanceof BiomeForest) { + BiomeBS.addSpawnEntry(biome, EnumCreatureType.AMBIENT, EntityButterfly.class, b -> EntityButterfly.SPAWN_ENTRY); + } } } diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/FieldAccessor.java b/src/main/java/com/minelittlepony/unicopia/mixin/FieldAccessor.java index 141dfe75..5e0fe3b1 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/FieldAccessor.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/FieldAccessor.java @@ -2,7 +2,7 @@ package com.minelittlepony.unicopia.mixin; import java.lang.reflect.Field; -public class FieldAccessor { +class FieldAccessor { private boolean init; private Field field; diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java index 2367cdf0..ae326af7 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java @@ -18,6 +18,7 @@ public interface MixinEntity { return PLAYER_MODEL_FLAG; } } + abstract class Shulker { private static final FieldAccessor __peekAmount = new FieldAccessor<>(EntityShulker.class, 8); diff --git a/src/main/java/com/minelittlepony/unicopia/model/ModelButterfly.java b/src/main/java/com/minelittlepony/unicopia/model/ModelButterfly.java new file mode 100644 index 00000000..95a6678b --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/model/ModelButterfly.java @@ -0,0 +1,91 @@ +package com.minelittlepony.unicopia.model; + +import com.minelittlepony.unicopia.entity.EntityButterfly; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.MathHelper; + +public class ModelButterfly extends ModelBase { + + private ModelRenderer body; + + private ModelRenderer leftWingInner; + private ModelRenderer leftWingOuter; + + private ModelRenderer rightWingInner; + private ModelRenderer rightWingOuter; + + public ModelButterfly() { + textureWidth = 64; + textureHeight = 64; + init(); + + } + + void init() { + this.boxList.clear(); + + body = new ModelRenderer(this, 0, 0); + body.rotationPointZ = -10; + body.rotationPointY = 12; + + rightWingInner = new ModelRenderer(this, 42, 0); + rightWingInner.rotateAngleZ = -0.2F; + rightWingInner.addBox(-13, -5, 0, 10, 19, 1); + + body.addChild(rightWingInner); + + rightWingOuter = new ModelRenderer(this, 24, 16); + rightWingOuter.setRotationPoint(-13, 10, 0.1F); + rightWingOuter.rotateAngleZ = -0.2F; + rightWingOuter.addBox(0, 0, 0, 10, 12, 1); + + rightWingInner.addChild(rightWingOuter); + + leftWingInner = new ModelRenderer(this, 42, 0); + leftWingInner.mirror = true; + leftWingInner.rotateAngleZ = 0.2F; + leftWingInner.addBox(2, -5, 0, 10, 19, 1); + + body.addChild(leftWingInner); + + leftWingOuter = new ModelRenderer(this, 24, 16); + leftWingOuter.mirror = true; + leftWingOuter.rotateAngleZ = -0.2F; + leftWingOuter.setRotationPoint(2, 10, 0.1F); + leftWingOuter.addBox(0, 0, 0, 10, 12, 1); + + leftWingInner.addChild(leftWingOuter); + } + + @Override + public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { + + setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn); + + GlStateManager.disableLighting(); + + body.render(scale); + + GlStateManager.enableLighting(); + } + + @Override + public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entity) { + + float flap = MathHelper.cos(ageInTicks) * (float)Math.PI / 4; + + if (((EntityButterfly)entity).isResting()) { + body.rotateAngleX = 0.8F; + flap = MathHelper.cos(ageInTicks / 10) * (float)Math.PI / 6 + 0.7F; + } else { + body.rotateAngleX = ((float)Math.PI / 4) + MathHelper.cos(ageInTicks * 0.1F) * 0.15F; + } + + rightWingInner.rotateAngleY = flap; + leftWingInner.rotateAngleY = -flap; + } +} \ No newline at end of file diff --git a/src/main/java/com/minelittlepony/unicopia/render/RenderButterfly.java b/src/main/java/com/minelittlepony/unicopia/render/RenderButterfly.java new file mode 100644 index 00000000..d42d9945 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/render/RenderButterfly.java @@ -0,0 +1,37 @@ +package com.minelittlepony.unicopia.render; + +import com.minelittlepony.unicopia.entity.EntityButterfly; +import com.minelittlepony.unicopia.model.ModelButterfly; + +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; + +public class RenderButterfly extends RenderLiving { + + public RenderButterfly(RenderManager rm) { + super(rm, new ModelButterfly(), 0.25F); + } + + @Override + protected ResourceLocation getEntityTexture(EntityButterfly entity) { + return entity.getVariety().getSkin(); + } + + @Override + protected void preRenderCallback(EntityButterfly entity, float ticks) { + GlStateManager.scale(0.35F, 0.35F, 0.35F); + } + + @Override + protected void applyRotations(EntityButterfly entity, float age, float yaw, float ticks) { + + if (!entity.isResting()) { + GlStateManager.translate(0, MathHelper.cos(age / 3F) / 10F, 0); + } + + super.applyRotations(entity, age, yaw, ticks); + } +} diff --git a/src/main/resources/assets/unicopia/lang/en_US.lang b/src/main/resources/assets/unicopia/lang/en_US.lang index 3f0635de..bf497e36 100644 --- a/src/main/resources/assets/unicopia/lang/en_US.lang +++ b/src/main/resources/assets/unicopia/lang/en_US.lang @@ -172,6 +172,7 @@ entity.construction_cloud.name=Construction Cloud entity.cloud.name=Cloud entity.spell.name=Magic entity.spellbook.name=Spellbook +entity.butterfly.name=Butterfly toxicity.safe.name=Safe toxicity.mild.name=Mildly Toxic diff --git a/src/main/resources/assets/unicopia/textures/entity/butterfly/blue.png b/src/main/resources/assets/unicopia/textures/entity/butterfly/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..05f741bd79a1afd4d11f5df63530ee526c43fedf GIT binary patch literal 2923 zcmV-x3zYPUP) z?!6VRTwXwuB)0dOxq|Ao`wTURfhs^9I8*HBM7St*z3 z*$$QvgYR5+uF-5ENfNRwv)}HJ%NgVh<3#d8h?MZ)dnm&CUsowlUjV>%J(4(KX0n2r zGuUnKP%Nb48ivMHVf0a7|G|%v;qmW&{6p#RJr4?f65hB{KUo0Vaq#^Bvmz0PGO}vW zY_&1XR0vs?0f?gLRBC_o+5*k}a74svrHpRqBuRqf_KBm2zpigkumn>RGi+`*c(A=e zZE~8mwY3rQ*RNkEh>{U84hwM_$S0k!grHI`(f6TT5_Gyfs+9@)-WSToag3rUCyxF> z%+8opCe#t~jb@AW%^iF%BuQdqS*EP}sKGv+-Oq5EpHtBi{Ps4Bi;E-I8MJ7WT5ILm=~vv5%Pyg@4fb)$xLl_M1bSa{hxo6P7?$H7;!+@K*oUW<3eGgsN>3bg4 zO8JNYZ(OOLI3GVM8eQ*91dt6w!**N@Bc0|9!@&1_e(}o>c>lvcVCFQYt9jo4@DKdr zmmi?23Q3ZnY3d+fn7|SONtUpLN!~KE(YI}fr-`$$0%_^RX+WY_u;_GcbX_BFi7aW+ zlz4EnbixRNfbE^VELqywZD3g@vaGP*?jXz@nx@ihwNDI;53_)Sao|YIy!>|Z!sV;S z2E)gV0V)GiR#lZsxs+vi0C(3K++SM<;8OhsUanVh9GBVJG+`Lh?sS=+s*YrLo*&@( z0g9qL(a0<>FCUo>p9Z8iuPr>Z!_X1{N+JND?Pyt><2>BVPcsrmzKo)zuC=!MN!Gsb z&tGTdliz2*r{4N`HVXi3Z*6k$_hZchr|C3|2SW_w!C6636h684Da-d)Qa4z9g@0PO zN*G0a^~%?I_4RL3uh+T#U;iqtul_0f-*M#6EE7D4x4!>vZr)hp_Hu{Y%N=gsSmLek zfBWpr5D8h9kR*vqUwefpib+WL_dkA0=Y!uq)j%qrw&UHk25&4Dd1JB2-L=MKO8=CuX(nk^o;RgY6 z9OHQ&rD8Enl4KLF?@=li==(l~u3_LIgy6f^F7ng%caJD?W%no2FzNmIf-kaY-*EBR$A&O(-IN{#k)|sE3CXUlv57YA`NsuHN=^IOFg5moi ziXx{Y2e_R*a)v?Ac90~ABuSX8mI;E8Zm)-FnzY*;bY0Ktg0U*_ynsT%A_&r)K`0?Y z2sSRio#=&0W@@t|>FY-yeMI}cccjI|#YYn0an=vV2Eq9YMLUe5*~pSOrrf$xX3db{{R8o9rAVV3<@|6_!F5G7eb zW9YYYtM5wBLICwbsf6zb=(>tdAKP̉@KpxxQ&)0ng(-ds){Ad%)eFji$!9))6M)JK$s>Ir4pX+v$NO0 z&<%tz@%(@=3{eMb2}xpP_BgMQzVY&Wy0M|_wD#M~4yM1p=Tj;cXm`3JRuBXMpKoq4 zJy|^vEF-$Moy{gdcKrL*t@AAaz`|VdOfR}}%%)g7t z!p$2?tlYcL{9G;Td+W{$!?OCVJ1bw5v*(J>jR;3dVv1(4@X{p~Ub>VCar4GfR{uXp z^te5R=ZX9g0aota&nh!R!Vfl%`tU&!hQAl)iq9Q+IOYY3gZp{Immd!A{v00p=aKjk z3mA@mquI)~!y3(2W(C8xgXAAvdK(I@Ig+j7+^=XMV26Uv|@!c7Cpwk({5aofr_$JLw~Nz)2%_ zR_*6rfQOCXS+$QX;Jga(WiLoPDW0czFvb{Tj4{R-V~jDz7-Nhv#u#IaF~&av{vY+b VkhU-S!0iA4002ovPDHLkV1k9+ucQC~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/butterfly/brimstone.png b/src/main/resources/assets/unicopia/textures/entity/butterfly/brimstone.png new file mode 100644 index 0000000000000000000000000000000000000000..b19268ad85a2d5140924866ecdf8c50eaee911ca GIT binary patch literal 3362 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/butterfly/butterfly.png b/src/main/resources/assets/unicopia/textures/entity/butterfly/butterfly.png new file mode 100644 index 0000000000000000000000000000000000000000..7dcebd916c70edd093c7ea2f91195f51207defdd GIT binary patch literal 2855 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 FV1k2xs_p;) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/butterfly/hedylidae.png b/src/main/resources/assets/unicopia/textures/entity/butterfly/hedylidae.png new file mode 100644 index 0000000000000000000000000000000000000000..c53c52c87a76dbbc714e7a3566044f48f940a68a GIT binary patch literal 3419 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 P00000NkvXXu0mjf-txUX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/butterfly/pink.png b/src/main/resources/assets/unicopia/textures/entity/butterfly/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f080ad068f8fb38ec7beab5c6662816cb8f6cd GIT binary patch literal 2911 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 JPDHLkV1fZQsY3t& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/butterfly/purple.png b/src/main/resources/assets/unicopia/textures/entity/butterfly/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8c7e1bb7cfd7d8e1357c31bc54351b8d0b16fd GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/butterfly/red.png b/src/main/resources/assets/unicopia/textures/entity/butterfly/red.png new file mode 100644 index 0000000000000000000000000000000000000000..380ad7fcfaf9500d1cbadf7e5d58e2bc124784a0 GIT binary patch literal 2912 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 Z@CPGqhU4KZ41E9q002ovPDHLkV1nvGo(up0 literal 0 HcmV?d00001