From 7fc17d9f79579b10e9a07a7f06ce2293a39f83dc Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 18 Sep 2022 14:16:28 +0200 Subject: [PATCH] Use separate textures for each race icon, display the number of spells active in the hud, and change the spell dismiss screen to reflect the location of placed spells --- .../com/minelittlepony/unicopia/Race.java | 5 ++ .../ability/magic/SpellContainer.java | 2 + .../ability/magic/spell/PlaceableSpell.java | 4 ++ .../client/gui/DismissSpellScreen.java | 55 +++++++++++++----- .../unicopia/client/gui/DrawableUtil.java | 9 ++- .../client/gui/LanSettingsScreen.java | 9 +-- .../unicopia/client/gui/TribeButton.java | 22 ++++--- .../client/gui/TribeSelectionScreen.java | 1 - .../unicopia/client/gui/UHud.java | 43 +++++++++----- .../SpellbookProfilePageContent.java | 17 +----- .../unicopia/network/datasync/EffectSync.java | 7 ++- .../assets/unicopia/textures/gui/icons.png | Bin 38235 -> 0 bytes .../unicopia/textures/gui/race/alicorn.png | Bin 0 -> 1269 bytes .../assets/unicopia/textures/gui/race/bat.png | Bin 0 -> 1643 bytes .../unicopia/textures/gui/race/changeling.png | Bin 0 -> 1251 bytes .../unicopia/textures/gui/race/earth.png | Bin 0 -> 1781 bytes .../unicopia/textures/gui/race/human.png | Bin 0 -> 1010 bytes .../unicopia/textures/gui/race/pegasus.png | Bin 0 -> 1342 bytes .../unicopia/textures/gui/race/unicorn.png | Bin 0 -> 1764 bytes 19 files changed, 107 insertions(+), 67 deletions(-) delete mode 100644 src/main/resources/assets/unicopia/textures/gui/icons.png create mode 100644 src/main/resources/assets/unicopia/textures/gui/race/alicorn.png create mode 100644 src/main/resources/assets/unicopia/textures/gui/race/bat.png create mode 100644 src/main/resources/assets/unicopia/textures/gui/race/changeling.png create mode 100644 src/main/resources/assets/unicopia/textures/gui/race/earth.png create mode 100644 src/main/resources/assets/unicopia/textures/gui/race/human.png create mode 100644 src/main/resources/assets/unicopia/textures/gui/race/pegasus.png create mode 100644 src/main/resources/assets/unicopia/textures/gui/race/unicorn.png diff --git a/src/main/java/com/minelittlepony/unicopia/Race.java b/src/main/java/com/minelittlepony/unicopia/Race.java index c12377e5..61277735 100644 --- a/src/main/java/com/minelittlepony/unicopia/Race.java +++ b/src/main/java/com/minelittlepony/unicopia/Race.java @@ -115,6 +115,11 @@ public final class Race implements Affine { return String.format("%s.race.%s", id.getNamespace(), id.getPath().toLowerCase()); } + public Identifier getIcon() { + Identifier id = REGISTRY.getId(this); + return new Identifier(id.getNamespace(), "textures/gui/race/" + id.getPath() + ".png"); + } + public boolean isPermitted(@Nullable PlayerEntity sender) { if (isOp() && (sender == null || !sender.getAbilities().creativeMode)) { return false; diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/SpellContainer.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/SpellContainer.java index 45737ed2..703965ac 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/SpellContainer.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/SpellContainer.java @@ -64,6 +64,8 @@ public interface SpellContainer { Stream stream(boolean update); + Stream stream(@Nullable SpellPredicate type, boolean update); + /** * Removes all effects currently active in this slot. */ diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/PlaceableSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/PlaceableSpell.java index b9f8c2ee..84864883 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/PlaceableSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/PlaceableSpell.java @@ -168,6 +168,10 @@ public class PlaceableSpell extends AbstractDelegatingSpell implements OrientedS return getWorld(source).map(castEntity::get); } + public Optional getPosition() { + return castEntity.getPosition(); + } + public Optional getParticleEffectAttachment(Caster source) { return particlEffect.update(getUuid(), source, spawner -> { source.getOriginVector().add(0, 5, 0); diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java b/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java index 25b96666..c2dc992d 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java @@ -11,11 +11,8 @@ import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.network.Channel; import com.minelittlepony.unicopia.network.MsgRemoveSpell; - import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.Drawable; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.Selectable; +import net.minecraft.client.gui.*; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.client.util.math.MatrixStack; @@ -24,7 +21,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.StringHelper; -import net.minecraft.util.math.Vector4f; +import net.minecraft.util.math.*; public class DismissSpellScreen extends GameGui { private final Pony pony = Pony.of(MinecraftClient.getInstance().player); @@ -41,11 +38,35 @@ public class DismissSpellScreen extends GameGui { double azimuth = 0; double ring = 2; + List placeableSpells = new ArrayList<>(); + for (Spell spell : pony.getSpellSlot().stream(true).toList()) { - addDrawableChild(new Entry(spell, 75 * ring - 25, azimuth)); + + if (spell instanceof PlaceableSpell placeable) { + if (placeable.getPosition().isPresent()) { + placeableSpells.add(placeable); + continue; + } + } + + addDrawableChild(new Entry(spell).ofRadial(75 * ring - 25, azimuth)); ring *= 1 + 0.03 / ring; azimuth += Math.PI / (8 * ring); } + + double minimalDistance = 75 * (ring - 1) - 25; + Vec3d origin = pony.getOriginVector(); + + placeableSpells.forEach(placeable -> { + placeable.getPosition().ifPresent(position -> { + Vec3d relativePos = position.subtract(origin); + Vec3d cartesian = relativePos + .normalize() + .multiply(minimalDistance + relativePos.length()) + .rotateY((pony.getEntity().getYaw() - 180) * MathHelper.RADIANS_PER_DEGREE); + addDrawableChild(new Entry(placeable).ofCartesian(cartesian)); + }); + }); } @Override @@ -63,8 +84,7 @@ public class DismissSpellScreen extends GameGui { DrawableUtil.drawArc(matrices, 160, 1600, 0, DrawableUtil.TAU, 0x00000020, false); super.render(matrices, mouseX, mouseY, delta); - - DrawableUtil.drawCircle(matrices, 2, 0, DrawableUtil.TAU, 0xFFAAFF99, false); + DrawableUtil.renderRaceIcon(matrices, pony.getSpecies(), 0, 0, 16); matrices.pop(); DrawableUtil.drawLine(matrices, mouseX, mouseY - 4, mouseX, mouseY + 4, 0xFFAAFF99); @@ -96,12 +116,20 @@ public class DismissSpellScreen extends GameGui { private final Vector4f copy = new Vector4f(); - public Entry(Spell spell, double radius, double azimuth) { + public Entry(Spell spell) { this.spell = spell; this.actualSpell = getActualSpell(); + } + public Entry ofRadial(double radius, double azimuth) { SphereModel.convertToCartesianCoord(this, radius, azimuth, azimuth); add(0, -(float)radius / 2F, 0, 0); + return this; + } + + public Entry ofCartesian(Vec3d pos) { + add((float)pos.x, (float)pos.z, (float)pos.y, 1); + return this; } private Spell getActualSpell() { @@ -135,17 +163,18 @@ public class DismissSpellScreen extends GameGui { var type = actualSpell.getType().withTraits(actualSpell.getTraits()); + DrawableUtil.drawLine(matrices, 0, 0, (int)getX(), (int)getY(), 0xFFAAFF99); DrawableUtil.renderItemIcon(actualSpell.isDead() ? UItems.BOTCHED_GEM.getDefaultStack() : type.getDefaultStack(), - copy.getX() - 8 + (copy.getX() - mouseX - 5) / 60D, - copy.getY() - 8 + (copy.getY() - mouseY - 5) / 60D, + copy.getX() - 8 + copy.getZ() / 20F, + copy.getY() - 8 + copy.getZ() / 20F, 1 ); + int color = actualSpell.getType().getColor() << 2; + matrices.push(); matrices.translate(getX(), getY(), 0); - int color = actualSpell.getType().getColor() << 2; - DrawableUtil.drawArc(matrices, 7, 8, 0, DrawableUtil.TAU, color | 0x00000088, false); if (isMouseOver(relativeMouseX, relativeMouseY)) { diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/DrawableUtil.java b/src/main/java/com/minelittlepony/unicopia/client/gui/DrawableUtil.java index 5552e902..edb7b19f 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/DrawableUtil.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/DrawableUtil.java @@ -1,8 +1,10 @@ package com.minelittlepony.unicopia.client.gui; +import com.minelittlepony.unicopia.Race; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.render.BufferBuilder; import net.minecraft.client.render.BufferRenderer; import net.minecraft.client.render.GameRenderer; @@ -44,6 +46,11 @@ public interface DrawableUtil { RenderSystem.applyModelViewMatrix(); } + static void renderRaceIcon(MatrixStack matrices, Race race, int x, int y, int size) { + RenderSystem.setShaderTexture(0, race.getIcon()); + DrawableHelper.drawTexture(matrices, x - size / 2, y - size / 2, 0, 0, 0, size, size, size, size); + } + static void drawLine(MatrixStack matrices, int x1, int y1, int x2, int y2, int color) { RenderSystem.enableBlend(); RenderSystem.disableTexture(); @@ -64,7 +71,7 @@ public interface DrawableUtil { bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, VertexFormats.POSITION_COLOR); bufferBuilder.vertex(matrix, x1, y1, 0).color(r, g, b, k).next(); bufferBuilder.vertex(matrix, x2, y2, 0).color(r, g, b, k).next(); - BufferRenderer.drawWithoutShader(bufferBuilder.end()); + BufferRenderer.drawWithShader(bufferBuilder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/LanSettingsScreen.java b/src/main/java/com/minelittlepony/unicopia/client/gui/LanSettingsScreen.java index 2ae15f2a..6fa16e87 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/LanSettingsScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/LanSettingsScreen.java @@ -146,14 +146,7 @@ public class LanSettingsScreen extends GameGui { } public static Style createStyle(Race race) { - int ordinal = Race.REGISTRY.getRawId(race); - return new Style() - .setIcon(new TextureSprite() - .setPosition(2, 2) - .setSize(16, 16) - .setTexture(TribeSelectionScreen.ICONS) - .setTextureOffset((16 * ordinal) % 256, (ordinal / 256) * 16) - ) + return new Style().setIcon(TribeButton.createSprite(race, 2, 2, 15)) .setTooltip(race.getTranslationKey(), 0, 10); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/TribeButton.java b/src/main/java/com/minelittlepony/unicopia/client/gui/TribeButton.java index 3cd4d45f..7fe3a956 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/TribeButton.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/TribeButton.java @@ -1,6 +1,7 @@ package com.minelittlepony.unicopia.client.gui; import com.minelittlepony.common.client.gui.element.Button; +import com.minelittlepony.common.client.gui.sprite.ISprite; import com.minelittlepony.common.client.gui.sprite.TextureSprite; import com.minelittlepony.unicopia.Race; import com.mojang.blaze3d.platform.GlStateManager; @@ -22,19 +23,8 @@ public class TribeButton extends Button { super(x, y, 70, 70); this.screenWidth = screenWidth; this.race = race; - int size = 32; - int textureSize = 512; - int ordinal = Race.REGISTRY.getRawId(race); - getStyle() - .setIcon(new TextureSprite() - .setPosition((70 - size) / 2, 0) - .setSize(size, size) - .setTextureSize(textureSize, textureSize) - .setTexture(TribeSelectionScreen.ICONS) - .setTextureOffset((size * ordinal) % textureSize, (ordinal / textureSize) * size) - ) - .setText(race.getTranslationKey()); + getStyle().setIcon(createSprite(race, (70 - 32) / 2, 0, 32)).setText(race.getTranslationKey()); } @Override @@ -77,4 +67,12 @@ public class TribeButton extends Button { renderForground(matrices, mc, mouseX, mouseY, foreColor | MathHelper.ceil(alpha * 255.0F) << 24); } + + public static ISprite createSprite(Race race, int x, int y, int size) { + return new TextureSprite() + .setPosition(x, y) + .setSize(size, size) + .setTextureSize(size, size) + .setTexture(race.getIcon()); + } } \ No newline at end of file diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java b/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java index 48a9ece2..0d12cee8 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java @@ -17,7 +17,6 @@ import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; public class TribeSelectionScreen extends GameGui implements HidesHud { - static final Identifier ICONS = Unicopia.id("textures/gui/icons.png"); static final Identifier TEXTURE = Unicopia.id("textures/gui/tribe_selection.png"); final Set allowedRaces; diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java index 02bac686..4415ae95 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java @@ -156,29 +156,40 @@ public class UHud extends DrawableHelper { } public void renderSpell(CustomisedSpellType spell, double x, double y) { - if (!spell.isEmpty()) { - Pony pony = Pony.of(client.player); + if (spell.isEmpty()) { + return; + } - if (spell.isOn(pony)) { - MatrixStack modelStack = new MatrixStack(); + Pony pony = Pony.of(client.player); + if (spell.isOn(pony)) { + MatrixStack modelStack = new MatrixStack(); + + modelStack.push(); + modelStack.translate(x + 5.5, y + 5.5, 0); + + int color = spell.type().getColor() | 0x000000FF; + double radius = 2 + Math.sin(client.player.age / 9D) / 4; + + DrawableUtil.drawArc(modelStack, radius, radius + 3, 0, DrawableUtil.TAU, color & 0xFFFFFF2F, false); + DrawableUtil.drawArc(modelStack, radius + 3, radius + 4, 0, DrawableUtil.TAU, color & 0xFFFFFFAF, false); + pony.getSpellSlot().get(spell.and(SpellPredicate.IS_TIMED), false).map(TimedSpell::getTimer).ifPresent(timer -> { + DrawableUtil.drawArc(modelStack, radius, radius + 3, 0, DrawableUtil.TAU * timer.getPercentTimeRemaining(client.getTickDelta()), 0xFFFFFFFF, false); + }); + + long count = pony.getSpellSlot().stream(spell, false).count(); + if (count > 1) { modelStack.push(); - modelStack.translate(x + 5.5, y + 5.5, 0); - - int color = spell.type().getColor() | 0x000000FF; - double radius = 2 + Math.sin(client.player.age / 9D) / 4; - - DrawableUtil.drawArc(modelStack, radius, radius + 3, 0, DrawableUtil.TAU, color & 0xFFFFFF2F, false); - DrawableUtil.drawArc(modelStack, radius + 3, radius + 4, 0, DrawableUtil.TAU, color & 0xFFFFFFAF, false); - pony.getSpellSlot().get(spell.and(SpellPredicate.IS_TIMED), false).map(TimedSpell::getTimer).ifPresent(timer -> { - DrawableUtil.drawArc(modelStack, radius, radius + 3, 0, DrawableUtil.TAU * timer.getPercentTimeRemaining(client.getTickDelta()), 0xFFFFFFFF, false); - }); - + modelStack.translate(1, 1, 900); + modelStack.scale(0.8F, 0.8F, 0.8F); + font.drawWithShadow(modelStack, count > 64 ? "64+" : String.valueOf(count), 0, 0, 0xFFFFFFFF); modelStack.pop(); } - DrawableUtil.renderItemIcon(spell.getDefaultStack(), x, y, EQUIPPED_GEMSTONE_SCALE); + modelStack.pop(); } + + DrawableUtil.renderItemIcon(spell.getDefaultStack(), x, y, EQUIPPED_GEMSTONE_SCALE); } private void renderMessage(MatrixStack matrices, float tickDelta) { diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookProfilePageContent.java b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookProfilePageContent.java index 1bfa4543..a1372462 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookProfilePageContent.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookProfilePageContent.java @@ -2,9 +2,6 @@ package com.minelittlepony.unicopia.client.gui.spellbook; import com.minelittlepony.common.client.gui.IViewRoot; import com.minelittlepony.common.client.gui.dimension.Bounds; -import com.minelittlepony.common.client.gui.sprite.TextureSprite; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.client.gui.*; import com.minelittlepony.unicopia.entity.player.*; @@ -31,25 +28,15 @@ public class SpellbookProfilePageContent extends DrawableHelper implements Spell @Override public void init(SpellbookScreen screen, Identifier pageId) { - Bounds bounds = screen.getFrameBounds(); - Race race = pony.getSpecies(); int size = 32; - int textureSize = 512; - int ordinal = Race.REGISTRY.getRawId(race); - int x = screen.getX() + bounds.left + bounds.width / 4 - size + 10; int y = screen.getY() + bounds.top + bounds.height / 2; + screen.addDrawable(new SpellbookScreen.ImageButton(x, y, size, size)) .getStyle() - .setIcon(new TextureSprite() - .setPosition(0, 0) - .setSize(size, size) - .setTextureSize(textureSize, textureSize) - .setTexture(Unicopia.id("textures/gui/icons.png")) - .setTextureOffset((size * ordinal) % textureSize, (ordinal / textureSize) * size) - ) + .setIcon(TribeButton.createSprite(pony.getSpecies(), 0, 0, size)) .setTooltip(ProfileTooltip.get(pony)); diff --git a/src/main/java/com/minelittlepony/unicopia/network/datasync/EffectSync.java b/src/main/java/com/minelittlepony/unicopia/network/datasync/EffectSync.java index e02942fd..8fdec87b 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/datasync/EffectSync.java +++ b/src/main/java/com/minelittlepony/unicopia/network/datasync/EffectSync.java @@ -91,7 +91,12 @@ public class EffectSync implements SpellContainer { @Override public Stream stream(boolean update) { - return read(null, update, true); + return stream(null, update); + } + + @Override + public Stream stream(@Nullable SpellPredicate type, boolean update) { + return read(type, update, true); } @Override diff --git a/src/main/resources/assets/unicopia/textures/gui/icons.png b/src/main/resources/assets/unicopia/textures/gui/icons.png deleted file mode 100644 index 7739ff90e695c95deb2bfb864c1be8a3b35196bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38235 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 diff --git a/src/main/resources/assets/unicopia/textures/gui/race/alicorn.png b/src/main/resources/assets/unicopia/textures/gui/race/alicorn.png new file mode 100644 index 0000000000000000000000000000000000000000..33be65ec1624b22155ef10a21c37277aab8ed774 GIT binary patch literal 1269 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+TB)JmLn+){O1&X1SGMDb;B< z5l+A73b>dD4K%VS<1e&82=%>={7mpZ9v=`3Ck|R8&58qNyR0r2Pq*3=`ddzM$ zj&*Z@6d|?;7!ojG1Bs_VHZn&dUKu08d9ur^sWcbq*l_dRR0u?E7-2)D>V4C*?em7 zH#%x1&sF!Od7G!$iq^SWicuK_@fnEj@@igDHk%Z$qb`2)8U)4hLttj}@eZ&nAO{Y! z0r^(x1=tDFe4W1UKt9JcuLIv3l{o*wOFk4&&Xad|sn%fD%#pU`z_jpYh}W+>@Jm=# z*|vPBR^C#N%fC6HwZ9UjWyHW`V)Yv3bt;deJs#!;KhiQi$7G|Yn%2X#1y{!X$r=9qHD!oa^!4Ke#I8ZIc^m4ehMw3EG{lIIleaXZF5to7XnlleYXWvckx_bj)-a}Br%5%eqvx{N#og2Q7H*f~%p4$B< zSEgC>CeP*cMcS_Kh`RRLxus6U`qmY<&*r_0`Soo6Bt0+hqr0+uPTyq_m~Zm=(QH07 z_!YW`Rdl)Yof89(E*~QM5V^&9jnm8kP;#O>%|+)#D8Lj#va>e+Ignw`&Mzc?yEtq-TBAQkU&VMj3- zm7D+oPG+|W&SMuhSR6oo3kLw(x{!|SL*#8;sOyKzduWbm$S#f$MA*W=8vL^lcH!vP f3fmvB&d;eg&pdy)K4c1400000NkvXXu0mjf91vff literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/gui/race/bat.png b/src/main/resources/assets/unicopia/textures/gui/race/bat.png new file mode 100644 index 0000000000000000000000000000000000000000..6a836e88d808c11b9711aa8107a010fd4ee2de91 GIT binary patch literal 1643 zcmV-x29)`UP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+SONCmh2`B{bvl#B-M6@qsCuRn+T0}p$NPD8SoWAu15YvzK1`Nz|bK6^jrSn;7lM%OHIPcP09 zp?#7wdOgki5!i!ukH~bWlorW0gCXeQmzd!c)jL~dh&2G-tq7nGS zV^QZ)_7Ns-07iDTh?ejPewv;wqnR(hI#SmPv6i&Vs!fa?B}P&bbsgEwEgmU93Q`@g|#YVT)VZY|C4zNS~@T)L2usnrm^5n>1~q z#g>}2+)Ag8RO;G8k3DtkxtD=d8!~i+5l0#}@+cQ;JFD)Avv=mcXN?ZlK$zP(Q%pKp zgE*zr1kG|1CTC!bmB4tK3?QL-a^{Uxc{1lFXFfA_MPNi3COM5JV_;A_aTs)Q_h9ag zH-~-yPkG}zb8b@iUoht;bsv~}=j{V)ZPxcX_n}8&o7-@L>IK^m6S@^P%;4Ya-R~;= z+R)H42fQ@^_K*UreK-Kgi1pRXu)LPwMvHYw{mS3iA|Hk_e7(QVHJ*kViuB`!gcVnf zQr^rrJAy`y!0Y`-nQ@Hb!s$?KM0<<)#{s+Nh(|7`fvPx7kOKQplLl&!SK_O_S#+vL zv~lL-0(P5KQSs-`o(7V74#Pm!_m&4qTfa-oJy~$i3J=9t55>%ggofCmxD}L{xB1?! z*IuOdBXZVW{2r#^x^h6EwOs)Ax&p^pEoO@}bChMdjyN0Jk`A)Iowi1cXeB zI`5*k8C(cvU6vidtQVR!9qCX}lRnzQqA_-uGjY4-Y`hdB)_Mtl5UP8%e<|;NzH{?z z-n~Ka5#DX7G(~deHGaX={S?#{3a%twm$=$3k!y1AQ2v6R8#}h%tI!TMDyiqb@~LZX zih}%_Zyg8q97Dplov=1|!6_BpvEEM(KUac#1-LE3y|eLvqqdu&)|c2W3M!ow0fKuJ z#RnUon7@$wq6WC{!aefg+=I2+*M-|X3+h=^a0mKnEUR~)is)y=PMv&aVFhaG^yZEM zpMLqI7w5XZ=)S=B6r%gG8b6iJd&#|)dawT3l}9yu#Q7E`{nDtrpDD5(d4tP}{q&?g z4pw(0(Nj@7Yw5oDYOiRwbf)I1g;L>~J(b|^56EwN_XDH{u5bH`?r}@2$E^7;&Q&Ky zUwPE3Nl(Wm0yV||K3wiUxY7Kd4dJ$!-QN$;`<5|%uh;+p0gOpRK~y-)&67b(<4_cZ zzgJ8YjLHl_EC@vkvv6BN2O$>BDs|Om`z!JTT=oaduh3bI(2RULO1>6u_Q;1R&w@iAsr$FTZob$+)b~eyb^f>V@rB z!H(sM;{`GqmviE*!DL*<@dDYgT*)PHyg&@o(s$wU$-)GFs|g?gNj&A^^oJ?{jQW=h zqb_qo=E5BOR+A*23cxVxGU{IfPyi^pHI)*XB=2CDmTr{R6accrNRlTV^9^Lqk*!I$ zAW1yMFs+$^ys*7KpwsCnfJUPsw~r-IOBluqskRrkl}a~|Iv3sA%;e!G+oci!w}SzE zJ-{$l^b-JXrjb(FHKu3#+uwyV82wt!6$30~1-d)1Xd(W*CA%H=O4*1>ax4P#{J#hEX~#yS7(1Hx;1)XTYdOJ950ab p{xyg7x*XQ)a^Anj@dDvf;vX)`snDNnBWnNv002ovPDHLkV1k)|5q$sv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/gui/race/changeling.png b/src/main/resources/assets/unicopia/textures/gui/race/changeling.png new file mode 100644 index 0000000000000000000000000000000000000000..43f62a8cad3077a3ad4da3c45bec4e88808f34e9 GIT binary patch literal 1251 zcmV<91RVQ`P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+SONCa^pA*{pTs>2n4_dJPsGJs&6pIpGVTNWn1ki z>HZn960jf;%X=V{nC;(R-TZ@xQnbeTs3C=5@wns?XKd6yp6w=+wSDXze(0v7yA_$I z7yFK|&h!i^kg}BbcrqNx;Xt@cI@6PX(aSvyKV_u5BgQ)DIoN2Ak3N2SZ`x6_8P+bl z0DQu&sJ)cAgJA(MGLHp2Tn6j0k8>p~wb@of&Nf?Z!K##qNo*%ajWTuGrmR$vqT`Jt zBy(k%I+e(Yt5_j%Mw~e693@E;6_(1I2(*09g=X9|!&OoQZUjpvI3t{x%j}y!U8jzE zuLB}N^*dI`i+SKq14S9XVFf~{?|tMa!25cAKrEa%SPhsJ1!h~8i{k0gTVf{B0z(h! z*5TN04ge8idn7{w25cbl6v#&ANCX@e{A6U#VjLGxK;Cmhmh40V$Wb1#aVFBVWzS2E zD+D6E1c{&~Nd{NWc^8a}PSHczi+A4p;GZ-4y#;P^dY#KLd zuK5;PY}!)G8*ON%&24@QTikR@TkdGJF5PwCLyuj1>iN#vWYs)z_RidA*679>2s4v2 z2cw-esAJq+&=@Cva0bTM5g3ny0W>rZ&a9GiJeV_sGn*KF5>VAISB3;v!o z-#zg69c|m%70fqjgzp-@4Px`u+Mi2v{zA4A=eA(F0$N_tF@*iyq)Zj(>Z0w=c)}2{ z^)>OH+d_S-n3dluvAg*OKXkh=5 zJ@bjyj_@;wg1;T&YIA%7yX{M@l<&5tN4pX(_*6eKx}3?yj1IT=4c_OTH9t6W8rEFQ z=SyGa%i=HkG*^JUBLDx6@IO&Y=0Cukocb&$MVtTt0HjGoK~y-)V_={qFt@P%Pe=_D zy1@GF=W%MnCdWjnE18I~8J|lqT+q>&hr*w?Xx)EYas<7Qo>j;&b6P*~{#n2M{D0(- zH@C3;kL&_-3)}zbUS-4T>S2XL{=*B&qkiYgLLE5sxwQW6|}005t0Z@a+F<(L2f N002ovPDHLkV1hhcR)PQk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/gui/race/earth.png b/src/main/resources/assets/unicopia/textures/gui/race/earth.png new file mode 100644 index 0000000000000000000000000000000000000000..5385e98aaa37135f74238c82bd042de5d9924377 GIT binary patch literal 1781 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvk}D|;{O1&N1hlXnhc)8eV2(dYL6z+;_Y$wC zD%{XmNGYWxu<8H)8Rj26Y=brGLiEXdi${|t&X`2|c={fbwPVf|AKGhlNs)Q^;+zrQ zck7H%Fv?oI?8#IlPaFI-(z|tXAJ*kE!!L;9sfh7DuV)0|`H7Fu7%dL?Y^Jnk^@xw( zPMxkCGYA$0MviSBZ@|Z49*#HRjW*kANNuy#7QB@bF^L_d)F{)SevFkWAS!nb7?~@} zu@)t8;wn~1)QF1G;2=qwL}97iMX<^j7CP*v!(62Z!;K)x1Z9LB$7{~XZ{N3y#;7wy z1np>gJsI|6*ZA0H44B?_q-<_HI~ElWjl^vEqS2hjpShf&w& z(6$1E2(}%-kbnW}NgR2yfjJN%juHH1AZIbk1r(5T+<=l*#Dkp3(>C@5I%L`LT1E+h z2q#_ws7aE+m8w&3G-yN)WhYLZbKV6PU2@rrSMR*{!OvREL4pPsdLg6Asiz~i_5=$z%B7Le>SA7jN)>N};+@xu9 z&9~5EOD%WmNTsgbb>BmeJ@q`0YD0z&H~a`Ajx_Sc+QF)M;q1=b*R0WI4TPD4GlkH} z8kR#iRnTlFZgK|3SP6`W$p8|XCucU2Do^IjfSJS=j{z^ZT9y%>(HXH%`%)pwSw}4K#!Tx6749!Jg2?F zgApgP`JYIEQ%mM)G#?lKcKlk=E2?Yt9Xex2j?0^Y8t$c*rjAgC$vc|MoFkg@A#SC+ zdQ3}4yl~R(b&Temyd9^M+9ImiU>KbL0Vp#*t%(!|~Xe`Nxb8=NHt0 zs_#@y4eS4`HMY3sDK>px@AgE9?2{%c%F9~N{DCjb4st{nbf@GGV{RVV=j4;o?Ic%zLQFH% zADA$=gm`$m6JX%J)BBCe-nPdX+i&@iQctSY^!RJ&`I8iz8LE|85g zJQ%(3+K_KCe8QiWl2CHMk#NfZvnGTZUUE_AopvXL-be^}CpVGk{p9`vNX7DSi(JS{4Pu0))7OHH1D7E@scrIwBwS@)u)knJRni@0iiS{K1zwxr%Wb5|X zgw|1w_NSIV9nEhQ{8UlEl{1_y7!##J?Gr-{ayer%60w9{^|VT68RMQLd9oo0KX6 zqX&}`;C=B-bnj0`3bdO^RqS3$N|k_^%BsTv-TTwBLo*$73uAg6*WE)*&kGn{+5*6C z$L{tvNhD0oDOCb8X|pv!Y5iR5;due6>;?_r<@xcJhVRnwT~gT%JTCy?X5munA?~H5 zYkOReWY6bl_-;qV4a=c+l+*j>YEi@i>^>_(tiQd`)7$?oW>`*y`vAm&u+rG@?J%KO zmsI6mDGCs(^dsU03W43#@R-4V^zq5y~`MN81xiDe0pNSIU)^B9)Hz~Bgm z9UXg#7%j6hjiYoM;6to+lziTL0vt5SQ?cK*$0`ZqoR XZW)&}N zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGaw97YhTmDmSwiauVmUOIs@cIT|NLOPoy4w* zo#~fTb((TSWFda^p-w{o{cD7O@Q`N@YRO}cal@loGZ##JyFdME^R|sSSA6K|qa%vK zr!Q_Z!g%IqSb>#`^Vm;jBKfc&9+sZ@$-emI*oHqT@>?Rt_~38-*y1kb`Wd77z?s90 z)}j&hiPuBjj_+#yC1HUU z1RAVf7N>SifD&PEgBTJJ*dmEhq%AQgBGl2rr$9MNP~L%n%(y`%t4IVK=eal5BwDd- zd~u_N0Kz0n0-7uZtW-^7(4>w#R7_0GELt+RY$Zz6XfehVXD^l{Nt30RQu35jadCC? z=*b;DTSDe6=vB)xr|dcBQm|=3=7QD53miM|vg>Yp+|%xR-b=;xsambZnyS}aOK9Ar zX|onvYTj}yojR^k*KR%b)V=3k2CmwWp~FTTY52&a9Ml%o@QK+Yxj$2*D>VQMi7cLclrPs{AvElIxsTNmGm%Y9$Fnl@K zzLz!aBepSHH zD=c4b^o_7|Nj%6muTR>q8$DO6@sFEAP2Z60001WNklbYvT$AhX2ThpqTda-NpY53=9lxf_e-L z3=9mv-d|$C#%CAOhwEd)={H73tZa0^MAblqd4Uih$_vB-iVa}FCiwgvH&(@xLSKn9 g0GmRZd0`j;0E@aE9N?>t82|tP07*qoM6N<$f~}?Ewg3PC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/gui/race/pegasus.png b/src/main/resources/assets/unicopia/textures/gui/race/pegasus.png new file mode 100644 index 0000000000000000000000000000000000000000..66bdcfdcdccd71d10b75ef359f8125861932bd53 GIT binary patch literal 1342 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