From 1ccc541baa3401829ce7e71aa4a8aa5b8f41638d Mon Sep 17 00:00:00 2001 From: bconlon Date: Fri, 14 Aug 2020 18:43:41 -0700 Subject: [PATCH] Backported Aether Start. --- .../gildedgames/the_aether/AetherConfig.java | 9 ++ .../items/ItemAetherPortalFrame.java | 111 ++++++++++++++++++ .../the_aether/items/ItemsAether.java | 3 + .../the_aether/network/AetherNetwork.java | 1 + .../network/packets/PacketPortalItem.java | 57 +++++++++ .../the_aether/player/PlayerAether.java | 24 +++- .../the_aether/player/PlayerAetherEvents.java | 10 ++ .../assets/aether_legacy/lang/en_US.lang | 1 + .../models/item/aether_portal_frame.json | 18 +++ .../textures/items/aether_portal_frame.png | Bin 0 -> 21965 bytes .../items/aether_portal_frame.png.mcmeta | 3 + 11 files changed, 233 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/gildedgames/the_aether/items/ItemAetherPortalFrame.java create mode 100644 src/main/java/com/gildedgames/the_aether/network/packets/PacketPortalItem.java create mode 100644 src/main/resources/assets/aether_legacy/models/item/aether_portal_frame.json create mode 100644 src/main/resources/assets/aether_legacy/textures/items/aether_portal_frame.png create mode 100644 src/main/resources/assets/aether_legacy/textures/items/aether_portal_frame.png.mcmeta diff --git a/src/main/java/com/gildedgames/the_aether/AetherConfig.java b/src/main/java/com/gildedgames/the_aether/AetherConfig.java index 03ea237..640f901 100644 --- a/src/main/java/com/gildedgames/the_aether/AetherConfig.java +++ b/src/main/java/com/gildedgames/the_aether/AetherConfig.java @@ -31,6 +31,8 @@ public class AetherConfig { private static boolean sun_altar_multiplayer, repeat_sun_spirit_dialog; + private static boolean aether_start; + public static void init(File location) { File newFile = new File(location + "/aether" + "/AetherI.cfg"); @@ -59,6 +61,8 @@ public class AetherConfig { old_mobs = config.get("Misc", "Enable Legacy Visuals", false).getBoolean(false); + aether_start = config.get("Gameplay", "Spawns Player with Aether Portal Frame", false).getBoolean(false); + max_life_shards = config.get("Gameplay", "Max Life Shards", 10).getInt(10); menu_enabled = config.get("Misc", "Enables the Aether Menu", false).getBoolean(false); @@ -153,4 +157,9 @@ public class AetherConfig { public static boolean repeatSunSpiritDialogue() { return repeat_sun_spirit_dialog; } + + public static boolean shouldAetherStart() + { + return aether_start; + } } \ No newline at end of file diff --git a/src/main/java/com/gildedgames/the_aether/items/ItemAetherPortalFrame.java b/src/main/java/com/gildedgames/the_aether/items/ItemAetherPortalFrame.java new file mode 100644 index 0000000..860622a --- /dev/null +++ b/src/main/java/com/gildedgames/the_aether/items/ItemAetherPortalFrame.java @@ -0,0 +1,111 @@ +package com.gildedgames.the_aether.items; + +import com.gildedgames.the_aether.blocks.BlocksAether; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class ItemAetherPortalFrame extends Item +{ + public ItemAetherPortalFrame() + { + this.setMaxStackSize(1); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int facing, float hitX, float hitY, float hitZ) + { + ItemStack heldItem = player.getHeldItem(); + + int i1 = MathHelper.floor_double((double)(player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + + if (world.isRemote) + { + return true; + } + else + { + if (!player.canPlayerEdit(x, y, z, facing, heldItem)) + { + return false; + } + else + { + if (this.createPortalFrame(world, x, y, z, i1)) + { + if (!player.capabilities.isCreativeMode) + { + heldItem.stackSize--; + } + } + + return true; + } + } + } + + private boolean createPortalFrame(World world, int x, int y, int z, int facing) + { + final int posX = x; + final int posY = world.getBlock(x, y, z).isReplaceable(world,x, y, z) ? y + 1 : y + 2; + final int posZ = z; + + for (int zi = 0; zi < 4; ++zi) + { + for (int yi = -1; yi < 4; ++yi) + { + final int blockX = posX + (facing == 2 || facing == 0 ? zi - 1 : 0); + final int blockY = posY + yi; + final int blockZ = posZ + (facing == 2 || facing == 0 ? 0 : zi - 1); + + if (world.getBlock(blockX, blockY, blockZ) != Blocks.air && !world.getBlock(blockX, blockY, blockZ).isReplaceable(world, blockX, blockY, blockZ)) + { + return false; + } + } + } + + final Block frameBlock = Blocks.glowstone; + + final Block portalBlock = BlocksAether.aether_portal; + + for (int zi = 1; zi < 3; ++zi) + { + for (int yi = -1; yi < 3; ++yi) + { + final int blockX = posX + (facing == 2 || facing == 0 ? zi - 1 : 0); + final int blockY = posY + yi; + final int blockZ = posZ + (facing == 2 || facing == 0 ? 0 : zi - 1); + world.setBlock(blockX, blockY, blockZ, Blocks.air); + } + } + + for (int zi = 0; zi < 4; ++zi) + { + for (int yi = -1; yi < 4; ++yi) + { + final int blockX = posX + (facing == 2 || facing == 0 ? zi - 1 : 0); + final int blockY = posY + yi; + final int blockZ = posZ + (facing == 2 || facing == 0 ? 0 : zi - 1); + world.setBlock(blockX, blockY, blockZ, frameBlock); + } + } + + for (int zi = 1; zi < 3; ++zi) + { + for (int yi = 0; yi < 3; ++yi) + { + final int blockX = posX + (facing == 2 || facing == 0 ? zi - 1 : 0); + final int blockY = posY + yi; + final int blockZ = posZ + (facing == 2 || facing == 0 ? 0 : zi - 1); + world.setBlock(blockX, blockY, blockZ, portalBlock); + } + } + + return true; + } +} diff --git a/src/main/java/com/gildedgames/the_aether/items/ItemsAether.java b/src/main/java/com/gildedgames/the_aether/items/ItemsAether.java index 23530cf..d3dfe16 100644 --- a/src/main/java/com/gildedgames/the_aether/items/ItemsAether.java +++ b/src/main/java/com/gildedgames/the_aether/items/ItemsAether.java @@ -118,6 +118,8 @@ public class ItemsAether { public static Item skyroot_bed_item; + public static Item aether_portal_frame; + public static void initialization() { zanite_gemstone = register("zanite_gemstone", new ItemAether(AetherCreativeTabs.material).setTextureName(Aether.find("misc/zanite_gemstone"))); ambrosium_shard = register("ambrosium_shard", new ItemAmbrosiumShard().setTextureName(Aether.find("misc/ambrosium_shard"))); @@ -269,6 +271,7 @@ public class ItemsAether { skyroot_bed_item = register("skyroot_bed_item", new ItemSkyrootBed().setTextureName(Aether.find("skyroot_bed_item"))); + aether_portal_frame = register("aether_portal_frame", new ItemAetherPortalFrame().setTextureName(Aether.find("aether_portal_frame"))); } public static Item register(String name, Item item) { diff --git a/src/main/java/com/gildedgames/the_aether/network/AetherNetwork.java b/src/main/java/com/gildedgames/the_aether/network/AetherNetwork.java index b175981..8ffd35f 100644 --- a/src/main/java/com/gildedgames/the_aether/network/AetherNetwork.java +++ b/src/main/java/com/gildedgames/the_aether/network/AetherNetwork.java @@ -51,6 +51,7 @@ public class AetherNetwork { INSTANCE.registerMessage(PacketExtendedAttack.class, PacketExtendedAttack.class, discriminant++, Side.SERVER); INSTANCE.registerMessage(PacketSendSeenDialogue.class, PacketSendSeenDialogue.class, discriminant++, Side.CLIENT); + INSTANCE.registerMessage(PacketPortalItem.class, PacketPortalItem.class, discriminant++, Side.CLIENT); } public static void sendToAll(IMessage message) { diff --git a/src/main/java/com/gildedgames/the_aether/network/packets/PacketPortalItem.java b/src/main/java/com/gildedgames/the_aether/network/packets/PacketPortalItem.java new file mode 100644 index 0000000..88929df --- /dev/null +++ b/src/main/java/com/gildedgames/the_aether/network/packets/PacketPortalItem.java @@ -0,0 +1,57 @@ +package com.gildedgames.the_aether.network.packets; + +import com.gildedgames.the_aether.api.AetherAPI; +import com.gildedgames.the_aether.player.PlayerAether; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; + +public class PacketPortalItem extends AetherPacket +{ + private int entityID; + private boolean getPortal; + + public PacketPortalItem() + { + + } + + public PacketPortalItem(EntityPlayer thePlayer, boolean dialogue) + { + this.entityID = thePlayer.getEntityId(); + this.getPortal = dialogue; + } + + @Override + public void fromBytes(ByteBuf buf) + { + this.entityID = buf.readInt(); + this.getPortal = buf.readBoolean(); + } + + @Override + public void toBytes(ByteBuf buf) + { + buf.writeInt(this.entityID); + buf.writeBoolean(this.getPortal); + } + + @Override + public void handleClient(PacketPortalItem message, EntityPlayer player) + { + if (player != null && player.worldObj != null) + { + EntityPlayer parent = (EntityPlayer) player.worldObj.getEntityByID(message.entityID); + + if (parent != null) + { + ((PlayerAether) AetherAPI.get(player)).shouldGetPortal = message.getPortal; + } + } + } + + @Override + public void handleServer(PacketPortalItem message, EntityPlayer player) + { + + } +} diff --git a/src/main/java/com/gildedgames/the_aether/player/PlayerAether.java b/src/main/java/com/gildedgames/the_aether/player/PlayerAether.java index 17e2090..c70a003 100644 --- a/src/main/java/com/gildedgames/the_aether/player/PlayerAether.java +++ b/src/main/java/com/gildedgames/the_aether/player/PlayerAether.java @@ -11,13 +11,10 @@ import com.gildedgames.the_aether.api.player.util.IAetherAbility; import com.gildedgames.the_aether.api.player.util.IAetherBoss; import com.gildedgames.the_aether.entities.passive.mountable.EntityParachute; import com.gildedgames.the_aether.inventory.InventoryAccessories; +import com.gildedgames.the_aether.network.packets.*; import com.gildedgames.the_aether.registry.achievements.AchievementsAether; import com.gildedgames.the_aether.items.ItemsAether; import com.gildedgames.the_aether.network.AetherNetwork; -import com.gildedgames.the_aether.network.packets.PacketCapeChanged; -import com.gildedgames.the_aether.network.packets.PacketPerkChanged; -import com.gildedgames.the_aether.network.packets.PacketSendPoisonTime; -import com.gildedgames.the_aether.network.packets.PacketSendSeenDialogue; import com.gildedgames.the_aether.player.perks.AetherRankings; import com.gildedgames.the_aether.player.perks.util.EnumAetherPerkType; import net.minecraft.block.Block; @@ -98,12 +95,15 @@ public class PlayerAether implements IPlayerAether { public boolean isPoisoned = false, isCured = false; + public boolean shouldGetPortal; + public int poisonTime = 0, cureTime = 0; public PlayerAether() { this.shouldRenderHalo = true; this.shouldRenderGlow = false; this.shouldRenderCape = true; + this.shouldGetPortal = true; this.abilities.addAll(Arrays.asList(new AbilityAccessories(this), new AbilityArmor(this), new AbilityFlight(this), new AbilityRepulsion(this))); } @@ -125,6 +125,7 @@ public class PlayerAether implements IPlayerAether { AetherNetwork.sendToAll(new PacketCapeChanged(this.getEntity().getEntityId(), this.shouldRenderCape)); AetherNetwork.sendToAll(new PacketSendPoisonTime(this.getEntity(), this.poisonTime)); AetherNetwork.sendToAll(new PacketSendSeenDialogue(this.getEntity(), this.seenSpiritDialog)); + AetherNetwork.sendToAll(new PacketPortalItem(this.getEntity(), this.shouldGetPortal)); } if (this.isPoisoned) @@ -450,6 +451,7 @@ public class PlayerAether implements IPlayerAether { aetherTag.setInteger("shardCount", this.shardCount); aetherTag.setTag("accessories", this.getAccessoryInventory().writeToNBT(aetherTag)); aetherTag.setBoolean("seen_spirit_dialog", this.seenSpiritDialog); + aetherTag.setBoolean("get_portal", this.shouldGetPortal); if (this.bedLocation != null) { @@ -495,6 +497,11 @@ public class PlayerAether implements IPlayerAether { this.seenSpiritDialog = aetherTag.getBoolean("seen_spirit_dialog"); } + if (aetherTag.hasKey("get_portal")) + { + this.shouldGetPortal = aetherTag.getBoolean("get_portal"); + } + this.updateShardCount(aetherTag.getInteger("shardCount")); this.getAccessoryInventory().readFromNBT(aetherTag.getTagList("accessories", 10)); this.setBedLocation(new ChunkCoordinates(aetherTag.getInteger("bedX"), aetherTag.getInteger("bedY"), aetherTag.getInteger("bedZ"))); @@ -640,4 +647,13 @@ public class PlayerAether implements IPlayerAether { this.isPoisoned = false; this.poisonTime = 0; } + + public void givePortalFrame() + { + if (this.shouldGetPortal) + { + this.player.inventory.addItemStackToInventory(new ItemStack(ItemsAether.aether_portal_frame)); + this.shouldGetPortal = false; + } + } } \ No newline at end of file diff --git a/src/main/java/com/gildedgames/the_aether/player/PlayerAetherEvents.java b/src/main/java/com/gildedgames/the_aether/player/PlayerAetherEvents.java index bf268b8..5aa864e 100644 --- a/src/main/java/com/gildedgames/the_aether/player/PlayerAetherEvents.java +++ b/src/main/java/com/gildedgames/the_aether/player/PlayerAetherEvents.java @@ -1,5 +1,6 @@ package com.gildedgames.the_aether.player; +import com.gildedgames.the_aether.AetherConfig; import com.gildedgames.the_aether.inventory.InventoryAccessories; import com.gildedgames.the_aether.items.ItemsAether; import com.gildedgames.the_aether.registry.achievements.AchievementsAether; @@ -48,6 +49,15 @@ public class PlayerAetherEvents { AetherNetwork.sendTo(new PacketAccessory(playerAether), (EntityPlayerMP) event.player); playerAether.updateShardCount(playerAether.getShardsUsed()); + + if (!AetherConfig.shouldAetherStart()) + { + playerAether.shouldGetPortal = false; + } + else + { + playerAether.givePortalFrame(); + } } } diff --git a/src/main/resources/assets/aether_legacy/lang/en_US.lang b/src/main/resources/assets/aether_legacy/lang/en_US.lang index abe8fd0..32ac4ed 100644 --- a/src/main/resources/assets/aether_legacy/lang/en_US.lang +++ b/src/main/resources/assets/aether_legacy/lang/en_US.lang @@ -130,6 +130,7 @@ item.enchanted_blueberry.name=Enchanted Berry item.swet_ball.name=Swet Ball item.developer_stick.name=Developer Stick item.skyroot_bed_item.name=Skyroot Bed +item.aether_portal_frame.name=Aether Portal Frame # Block Names tile.aether_portal.name=Aether Portal diff --git a/src/main/resources/assets/aether_legacy/models/item/aether_portal_frame.json b/src/main/resources/assets/aether_legacy/models/item/aether_portal_frame.json new file mode 100644 index 0000000..ef5fffe --- /dev/null +++ b/src/main/resources/assets/aether_legacy/models/item/aether_portal_frame.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "aether_legacy:items/aether_portal_frame" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/aether_legacy/textures/items/aether_portal_frame.png b/src/main/resources/assets/aether_legacy/textures/items/aether_portal_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc4c42d364c44034bceb97f8ff2fb43662f9d79 GIT binary patch literal 21965 zcmeI42T)U6_vjCT1Stlwp$In=X#z>;APH6JB2AhCA%qYqp-M-Psv-y?9R!u$6ch!d zBS;sJUX>;wpaRka{z1L!&Am7C&HTSNZ{8a+137E2z1BMWx7S{KpUfoJ&!1DIqdraz z005n`l7bfDogM)8092HOtD7YsItg$4?34@~0f6S<&L0^Nm%s=B)EYQ>`Sa&3@lJS0 zOS~OKSzaDu=YY4sSz`dewLeiCtD`-A1hF!_B&Qne6RC>VI!p!8lDp}1D4dg*bsxP- zFl$QRVa=)oXUV^26Eai+&Ba1!+=8;s<}C;LzF6dQzWG<^5=g}s zNELHPobffH; z0a)fKkUZV5w`jM+=1j`%;=aC#@$p`jS~(+Bqn_6mw%VjpZ_|3sTk7k|@@V-x4qw4b zzKRs9qt(qzYN;pMBKG;44NitBetkx>{gt_stybBrSfBUMm?ndLs6t%GqF^f9b-4(h zmnS>6&EJjiZIB~JM1V(^kz^j>{27|==Gf{->m?^=Tdyt8*VCcA4|WtZ7$mj z(wmCOCjlP|nN(ED()A)`zT~z zQ5{6F_6L)h-Oy(br8*iLu*zDcM8R;A1JV$DNRv%9Tto@3bwdZDtHk^n;jl*{=;GOu z@YAmV!E0XwUns&OeG4=ZZ)l&&7iWka_dk1|=C!#KJTB}=a{OzDC&v*XqA63avn|2> zVMzIUSmk?0kWj5POrWkt?y)%EzB}lq$80&Y*>%SsUC1FXy}pcYd+b8N;CrTWpD2Zk z90bK8tE8`{f38<419E~x_(1@v(O^gdK#^ zdj!kZig7SpmlxzJzP(5J@k5;shK{oxwp#4de3|jWO2^snH1wNW6@Vln`5>oW1&k+- z*Nh8|GmW!;Hlj{6ld*res{M{ztMRhRu?hMK;R#AijG(OUgE+0Bj1-*%B4LJdxhX|j z`IQ^|p$yDaCTU+Z-=O)I{SeowySLQ5BT z*sneq%Y7`K5yXf+=E9gCqn388^X9R79hew=HfAao9E;c0=Ply(JRIIgeOKi!=UpaV zs7_{9TGntDjqajulTKKsv9?#MeiHKhZcC=@i3(cs};jB7p=0QqNDV)m9jOn z6=%yt^XAeM)5^}28f^IPm#tUfy2z!74Qt(-IHldEJ(NzJencH1xtu4EWtGa5QmWum zVVgc5lT>c(lca`EA9gF7T0h|h-PGB%Sx;Y9q}8V^q~)L-plxN8dMRR$mtuz24}8*; zzf>b5pNhJRihk=KUfeGApzG|dv)~Y1-NiAEF`GJ@x(A$;oUELx>ND!|aa!udX*_AC z)lRF`w=}ohZ|RN|iATVD1gGMs;(Ovpo|ziD8uAro6g|f%7mORG8O#^GunjPjFi6$c zHM~@KHa9W%WOr$9Y5IZm;&XS-WhZrGYaV?nYADKlcI?qaFXcd9kxh{o3Tt*0`|M?2 z&HSCRJ6A+Vx}d)O+02H_-i}Wk4oO~+9FA*En3wi?xfC@G#p<`wxAh8*6&-Bi zsl_E~$9F1Xk7A1*{T737URS-=BoK`hh-a!BdQ~>A;8*Rma$obw zJZ?T{@LsdujEHHC)%ZH?%jo1jpTT1$ZPmwpH8tu(a>#*kxDV#9*N1}4p7mCs&1YtpE}Cz%9{$X{jOHs5yNZU@qRPLg5CulvgS z8tvIwb@ybg2$hx`zP8WQ>ZDk8kdEP=~X z{bD7;CDL^Q76#2-`ic6=)~Y8Y1bFjAZLP~kzRoQMy-R#YGv;wL2Kwrfom)z4^-@6k zkxT&wKFKH{+@=X-`b7kIsp+=`R6fc={B<>2tMi3!c2KS2yzils<#j1X%2s?wFw7Alg zg9#|udTD#}8IhUw{PnP9emMD<2cN?G{JG}Q);04MYspmI}cx}2gvgh=o z^SsMA-PNspjjI~3RXruMnx)aDo(S-o9qgIAq@fQr7i_P0CIxMCqhxwC?_D5w!Pe$*zrR(c|LN{{Z$=vdnGXv1* z7Vd#kzashK2NhD!UtrQ3T3b#_>paw1(plFLo$nZWit1UlZJ%fIc=1K}L)U=Oi|53h`xZuK1CrYP#E1~WkyPbmD`1H!Ykrfs?$^I)L9yxD8oqt?m#xg@M%f)?; zI~%VZw_#*vRHD(0Z10{KcK@n4@CP_SSjxanWl^UA*FSx&^A7fNTS(&FL@#fFwL#N? z`$Zm8=+=?TVEjS}z0=!{Gut<(PQN(adhzpfr_Tig69@I4>&4|un%K-Z%}8zC>C~t% zO(>1aE52w|Jnvri)Wc$Bnkh-Fb!e%~?bDI%?ye*W#8BCyJAUQm%JRsOA#Vq+&DN&U zJ{PX}+!q=zOqOKkWc%cYg1V%Qwg!6_2CrVObV*)pA5>hS4Df5)3SSNb%kK?~4QmRd z3!F_7M@mS%lXlpg{+ce|X5Pk`bad5BT(qZ(FWCUe%<*Oz0aqJ4!a)=Oq@-Q#P-rWR6T}RI#n~d*7D_AF zAUJabo1Ta|Ox;c%V~JC8cfe@7pVL9RTcIV)*`$%wQm&E&2R0Zd6vWlW+SXCh6~Xq+ zuO#7mry0ry`PRkB3c)736A+@WejXx^cfdeI1Vs4JFhMv(OhN!IA|fUx$OjRG!G)nP zI210#50{V>7M6s;AU|GgNNU2Bl!Lj2q?W?jAK?fRg3Z#&$xadqb#ZYKa1j!~J7A%3 z2?+@(Ob{w4$WQ3O@91XhgmUG#b!7kUBaHa7og>F9Lk3gJ$EjO-r+I_kLDVW3(V zN4&EG8gu3f#@31bpKih&{nL+~vxD_FKIUjB#u{ToFmWW@Jp3PT!S2r|ke}v%xs9Ld ze;vIO&f?eP{Ka-h^RH$YSKPmt?P$K6eM^P!GbBaGKS_B949W@bpo7O-Bfn?aujePi zgi|KLRkM&#u$eTn_x&2biP|B;tpJ^$)MU0qVy*3k)Ni^eD`APHj^ zz~Rg##bFlWf}(;Lez=gZI6nc97(YsguvW}OEkw{lVuBJ9F!;AY{?+_%t`+cT=bc0% zxcAa*DRN6gN`M6mt2GJlqwpA}`t z=Gy|7M4@+T4-&nTz8G^U=wDiY-PTXbA7;3}Pv?Jz;Jg3d%>O-xizUXERQi8+^{v;x zJ8{HYIJux4FtS)ehWsZh^Sjr-ni0E~g6`C6Yux{ViEu<+`QJ^0s0bW}#=y<_F~Wo` z*BmA+!7m|Uf#$amBrGeGxuAr|PO|@hF%7@67;TBN#bV5n&_74^XT$$XGxwj>!~fmP z{iX8%-&;WcwVC_A68~Bg|19Nyuc1=rXh{pagAK|FiL*grF;F{OtQ7QDUeVuQb-E=PtE^mMflA0{P&Mck&ar5auDS+@}h7FQBi(D0m7#C%gt~7e)F?) zJdq^q6NH+D`c|I_Hh*g)?ytX7@2#D`^%oO_5nfRE&i@~#zpIH&4M>~*t|m79WvOe6 zb3zLKh(^@>o7K)4O7a_2ZNhOMgCq=%xQV#;d7LZ8T3-Q2*ySB}b}P8(4;x~|KN=eR zG8BOm?(bW)ZGN|@VEi}`MmMB>i=_-{BK_T8q$B$E0M3= zAVfe&i@Uf;^C8mi;vxbI(tL=tySRvekQR4wk>*3B-Ni)& zgtWMei!>i1?Jh1NAf&}zT%`FBX?JlE0U<5!;v&t5NV|)R2ncC$7Z+(hMA}_kL_kQ3 zySPa6A=2*RA_78M+{Hzj50Q2k7ZDKB;w~=Ie2BEWxQKv|7I$%x=0l|2#YF^!w783l zG#?`EE-oSYK2YZD>F5MoC zcj9%<#yi_COH{0HZ%++6hDS0W+tR$86enc9Xpek)AJ4q>c53wjsKRp``u1^MPjpxw+o^ z+VE`t&gZ9!qAaPAZBj2ZkgnLXwk#_`=^rPFeUc8+5aR<~=^747`0=BkkYl z`+@5!WstG^(fzF-Pvt`%#$+GEHQA&y_Dp_c9|{0URI-Sptk>#0#v}lrp0J+LBt?_5b*2;U z)0bR7eFT#MGIm!pi~`yr7w3d8^^gOr?WeOpuD{)o-aI7Qrr9ZE008pPRGwKk0BA#Q za=$20${S`d@k|DS%H0S*HIyg4_$FGqpZZomlc@-_Mwh9>;z78U%344B=h&c?hSAys zYt1zq-WJ;g&E(Zlmeu1sk)JPg3oE4@^*Hd$? zjL4}YZXbDAPQ-h^I~~Kw=@S_Umo&^ox<88pX{pFX;N-N9`O{wNBX3c|o`hK#bnf*R z&iUXw9#Z(I=ScN~o?ER^k%-%s8MdK^xUH7ka`THK5i&|*56x+PQLthAyNKRr9|y_9 zLE)et8Bf^a_=svNWB1&1oO+0E)>S*17IObbsIX8gciy`&RowEb%uTM7FwwYSp_bI! zGb~ic3m%Qwh&Q!7FK3N#@RWI?aHG(-=Tk{&0Vt+6!pHx1C1WZ-*JsG*QJR^mPsQom z)8ycghIW-@7rgdo8S1mSy-Sg47%iUD_jFcdG#>iX;zW@~$5)w5@-DCK0nAY8JxqC5 zs2k)|`p73;jC|l0Ii2|{QO6ru=!L>58)7519NuP4(QLFzUxn=iG5k2HQ92Z z?=UHzP+F7X;;uYIj)*O$#!!20CuHxML_qX(v}&VtdxnmJA{~9Fn05J@%JSRzNQ6@VL3a6>z0X?I4s|W= zJ@JgIAX8kn$9$$a)3h&2xEPwdWTV2BT{_%B5O=*@N1Fn8FtiRwvwx`9^I6dV9 zS=AN36WtdioZaIR`MEtFOdO536Ma}Ux#kd1kb2&?dL z`oH3$o>>fsy&un8b4VG>TbbFU5y61{Y1gjby&_E|kSi!^*M*?!?w-BBV9Iba$gk@p zA;k-GUK{0WRv2(Sb~-oYR~R&ZQz}@h*BcyV>$*lUVGB#*!St*rmOGSJp2Wl*5xVSG zen)t$r~o8KVJ#pQaX)A7%HUms$Qa)bGne`Z&DZL-&h9zr_i{P4d+m6;7VgNG(#B=- z5bINn#w7}V7K!ioEqkI?V(YIW35(Kn1M%Fm(?uiDnlZ97z{%#d%c-vX;pA~LSw`iC z+V#p$q9%HuD<6bbq)S~oPN_=QR*``$_qiQd=HuA9LEgHK_=ZhdPugvtZ=PzE+|Fp_ z1Smu4ld_M+=GKBVwza;mm-8DPD;n`}X&7s56H8-TovexnqT4=#0wr6oOM7jXsgyHJ zM&1|B+esy!3w(RIekD52=%Y{av}bkNlOYRF8Wy{G3TcT=X_`PyJ|&j*nNMV*!gZ&I zDouT1Q;9xFOjToecqrtGQ6mfNz-t$QB%}5xPU|&Z6G9#k%qt$eQ?cEp zA?^@fk4IzUJ@{MS=g06FGomISl8W_>eYDZtnLmb8$7TDAn&<6u2Nn&Q66Qo zjV$UO!__BQzsmHH*Ciz14jzb!;hdT$NQoS|skWtxc2eah!E)VKcx-6>KlMa1Xq0vl4vm(Qv-b_WP+wsbHp(?&IB(tTvJ%F7AYpUBm{5r-G^)`zOb* zK3xS+o;9`R2T((%sPxPazM0egkDG2f*Kkk3iVilih|6B3^6_cUlV4J}*yp!)&}8Gs z)WBZMnjB$>N=d}$xLh+WzLbevzImeu3M3dJ%9U{F%C+SD4^@|4QUk(MK*NpH)oJVN zO8&LC2+>S4CzxbwQj+PKfJKe>y1pAr?cR@@@f!|rSN&bqOx z^czmx_H3o$ag^@?<8qBMk!v(6EavE_cITr^k$Ee}Y((xN#I;NHqay@W;^`<#GCvS@ zeYn@q^R%#W4r^L4x0~J2d+P=|`7EpAhp3QSJRWxC?eA;p#bXuD2LTy@ zowPPWSPnZZg`h0Wa|_R-a~5>6MpiK=!CLT6ecZirJ_VTo#*#)BzNgS!)nops^CmBA z3%U@u83!gq;hk|Y3~aQKh+f?|fjxU59H`hjedRvCn{(%`ii$;Wa-dADnHpJ|Pk2~L z1C=K#oxWwA+oLOsE9YWM(z;3)pfm>p8(Cud>#7(S$E?wUZCr#(Ht2V&XqYf{a_dO! zJb*q`)Td{xrw_d~Ybbzbe96FOqz}eOiixQxHHI2!yLHAK*Zq==v7Ap`z*tr6EO;AKwXbOr zD!^X(T+3@q_9U3rOL)#h)rtycVXRk{^d6*2$0`K^WWtU%?$kRqd7*+eed{*bD!5Uf zpWNl5hgQW;=#c}`Zes}rAjHTbK4DPAd!YG4uiS&qkqA)D3J?gu_MQ*jS=~j;U}F%F zj4CADuWnY`R#pUvv5)gXqJSKui9w7`3whmXau(VWE$Wo|#Z>-VP|GW#_f!U-sIvEk zth=J!+agoK4s*L)E4?x-p8cT;LR-!Ja{3*!<05*2Urf>{kE;kUmHJkFyA}J_s$-}Z`QcTH%57fMSqj@i^HeeQ>-&xrUqbn6I+6#WjVIhTybwrn3 z&{?T0npBBG2>H@ic{JWRL#Vw}YoXO@xD`wL@umJchTAt5!&!=t0T2owH=l-Yo7bn& z@zANQ!{|=hvVKAMyG)hkfE$LMGPH>_^;Kv2cw9$$JRl16c9JJ74SAos*(bkSRx9y^ zwZH4OZg{Pz7>Rh4({~>i)kHS8e_{BkmD~{de4&=R?NVAM^Tf9CMf|Cq3W*=t1B_PR z9fj{SzVg1y(wuao&p!16=e0H&s$3q4;kl1`ly4b_oc8QR$+Fwiwd)PcBFlu*F zJa}i$SiqCuO#oeEZk#TgV_rnak>of~FYMu=Yx>g(k=IUnKqSWa-aq{?9(svtTA`0z zhVVP3AslI+i;C@oxS!6(E}2!Sg=jbrPF&!L4JKgleQfQCb>ozlF6w5=7^$#d*$5jc zEWRrFt-LHO&{Clr_GlD3o}5@y(tl)D>@ T*)l|Ua0ZmmoKwh?Grjgd{%u)= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/aether_legacy/textures/items/aether_portal_frame.png.mcmeta b/src/main/resources/assets/aether_legacy/textures/items/aether_portal_frame.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/src/main/resources/assets/aether_legacy/textures/items/aether_portal_frame.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file