DawnTeamMC / Mubble

🌈 Ultimate pop culture crossover mod for Minecraft. Mainly focused on Nintendo content.
https://dawnteammc.github.io/mubble
GNU Lesser General Public License v3.0
18 stars 5 forks source link

Add Loftwings (from TLoZ: Skyward Sword) #75

Open Dhranios opened 3 years ago

Dhranios commented 3 years ago

https://zelda.gamepedia.com/Loftwing

Loftwings would be a unique addition for it's ability to be ridden and fly, along with a one of a kind taming mechanic.

Spawning: Loftwings will spawn on any solid block at y=130 (EDIT: for 1.18, I'd suggest y=200) or above in any biome in the overworld dimension and have a 5% chance to spawn an additional baby loftwing. This means they shouldn't spawn unless the player builds above the clouds, except maybe in shattered savanna and (1.18) mountain biomes.

Taming: The player actually cannot tame whatever loftwing they desire, instead a loftwing will select 1 player it meets as its owner. This is not always the first player they meet. (all rejected player's UUIDs will need to be stored in their NBT) This mechanic is based on Link's loftwing story, where they immediately hit it off when they met.

Inventory:

The belt slot would allow for only 1 item, a loftwing belt. This can be crafted as follows: xlx lxl xlx x = empty l = lead The belt will allow the owner to ride the loftwing.

The helmet slot would allow for only 1 item, a loftwing helmet. This helmet is made in the crafting recipe as follows: mmm mlm mxm x = empty m = material (leather, gold ingot, iron ingot, diamond) l = redstone lamp an additional chainmail loftwing helmet can be received rarely from loftwings that reject you as their owner, while riding a loftwing, as a gift (kind of like cat morning gifts).

A diamond loftwing helmet can be turned into a netherite one in a smithing table.

The helmet has no limited durability and 2 functions:

  1. shine light in front of the loftwing (might want to check how optifine does the dynamic light (if this is not feasible to add, increase overal ambient lighting if the loftwing is close)) in light level 7 or less, or with sky access at night.
  2. reducing damage received by the loftwing when crashing into blocks at the cost of the loftwing's turning speed. A leather helmet would only reduce damage taken by 1 full heart and make turning 90 degrees take 1 second, while netherite would fully protect it but make turning 90 degrees take 5 seconds.

Hitbox and eye height: Standing: 1.5x2.5x1.5 at 2.2 Flying: 4x1x4 (spreads wings) at 0.7, player's hitbox will be 1x1x1 on top of the loftwing (model in a laying down position), making a small pyramid-like hitbox in total Panicing: 4x2.5x4 at 2.2

Movement: While ridden (belt needed), the loftwing will walk with the same controls as the player, and can be told to start flying by pressing jump while in the air (like elytra, but not only when falling). While flying, the loftwing will keep moving forward without stopping, unless they land. They'll follow where the player looks (even up and down) but changing direction should not be instantanious (slower based on the helmet worn). If the loftwing flies into a solid block, the player will be launched off and both the loftwing (based on worn helmet) and the player will receive damage. While in the air, the player cannot dismount the loftwing, instead sneaking makes the loftwing dash forward, making the hitbox 1x1x1( 1x2x1 with player included) and increasing its speed for a moment.

If a loftwing is not sitting (can be done same way as cats/dogs) and not leashed, it will NOT teleport to the owner, but instead, when it loses the owner will flap their wings wildly, while shouting for their owner to find them.

If attacked by a mob or a player that is not the owner, the loftwing will attack back with a melee attack, but will not join the owner if they attack anything. They'll attack by flapping their wings in front of them, blowing away all mobs, items an xp in front of them a block or 2 backwards, and only dealing half a heart of damage to the targetted mob/player.

Healing and breeding: To heal and breed loftwings they'll need to be given a mushroom spores bottle. This item can be obtained by using a glass bottle on a fungus or mushroom. This is based on the side quest with Orielle's Loftwing, which got hurt and is healed with mushroom spores. As they're birds, they should not create a baby loftwing like most animals, but lay a loftwing egg. This egg will increase the hatch state at midday (noon) with a 5% chance (leading to an average of 20 days until they increase the hatch progress). If broken, the loftwing egg will drop nothing, unless broken with silk touch, then it'll drop a loftwing egg, cracked loftwing egg or hatching loftwing egg depending on the progress of hatching (each state is its own block, like 1.17's copper blocks)

Variants: See the linked wiki article's gallery; the crimson loftwing should be made very rare as in-game the people of skyloft thought they were extinct until Link's showed up.

Items to add along with loftwings:

Dhranios commented 2 years ago

Slight changes: 1.18 increases world height, so for 1.18, I'd suggest a spawn y value of 200+, rather than 130+. Fogot about netherite, so diamond loftwing helmets can be made into netherite loftwing helmets with a smithing table.