Parrots Mobs change to vanilla when they sit on the shoulder
Summary
I was trying to use a parrot as a mob that has a model applied via ModelEngine and wanted to test how it works. During testing I recognized several problems. I created a basic Mob that had a Model applied via - model mechanic. The mob works fine. It also works to tame it etc. The issue comes in when it mounts your shoulder. The mob type gets completely removed and the model has a dying animation. After this you have a vanilla parrot sitting on your shoulder. When this parrot now leaves your shoulder it becomes invisible. Checking the Data of the entity showed that although the majority of the tags are from the parrot I have in my vanillamobs.yml the mob still has tags like "modelengoine:models": "nameofthemodel" and some others that are not in the vanillamobs.yml. So basically the mob with the model applied becomes an mixture that is invisible but beside this has most of the tags of the parrot defined in the vanillamobs.yml.
I spawned the testparrot. As long as it is just mounted mm find this mob and displays the correct information. When the mob mounts my shoulder MM cannot find it anymore as an active mm mob, the model makes a death animation, and I have a vanilla parrot sitting on my shoulder. This is the entity before it mounted my shoulder Gnome Lvl - 1 has the following entity data: {Paper.SpawnReason: "CUSTOM", DeathTime: 0s, BukkitValues: {"modelengine:models": "gnom"}, Bukkit.updateLevel: 2, LeftHanded: 0b, OnGround: 1b, AbsorptionAmount: 0.0f, Paper.Origin: [1017.0583745613741d, 75.0d, 1708.2927848897968d], Sitting: 0b, AgeLocked: 0b, Attributes: [{Name: "minecraft:generic.follow_range", Modifiers: [{Name: "Random spawn bonus", Amount: -0.047236200273276026d, Operation: 1, UUID: [I; 290362918, -392475371, -1730965421, 465555250]}], Base: 25.0d}, {Name: "minecraft:generic.max_health", Base: 15.0d}, {Name: "minecraft:generic.movement_speed", Base: 0.20000000298023224d}], Purpur.ticksSinceLastInteraction: 72, Invulnerable: 0b, Brain: {memories: {}}, Owner: [I; 177539912, -1655029154, -1531197609, 1866396126], Age: 0, Bukkit.Aware: 1b, ActiveEffects: [{Duration: 2147483488, ShowIcon: 0b, Ambient: 0b, ShowParticles: 0b, Id: 14b, Amplifier: 0b}], HandDropChances: [0.0f, 0.0f], ArmorDropChances: [0.0f, 0.0f, 0.0f, 0.0f], Rotation: [-268.65942f, -40.0f], HurtByTimestamp: 0, ForcedAge: 0, WorldUUIDMost: -1728590186987110228L, CustomName: '{"extra":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"color":"dark_gray","text":"Gnome "},{"italic":false,"color":"gold","text":"Lvl "},{"italic":false,"color":"gray","text":"- "},{"italic":false,"color":"green","text":" 1"}],"text":""}', ArmorItems: [{}, {}, {}, {}], HandItems: [{}, {}], Air: 300s, UUID: [I; 1802379442, 167723782, -2133466741, 314516336], Spigot.ticksLived: 159, Variant: 2, InLove: 0, FallDistance: 0.0f, WorldUUIDLeast: -7518284901149484164L, Motion: [0.0d, -0.0784000015258789d, 0.0d], Pos: [1016.7236352786236d, 75.0d, 1708.2927848897968d], Fire: -1s, CanPickUpLoot: 0b, Health: 15.0f, HurtTime: 0s, FallFlying: 0b, PersistenceRequired: 1b, PortalCooldown: 0}
And this is the invisible Parrot Papagei Lvl - 1 has the following entity data: {Paper.SpawnReason: "CUSTOM", DeathTime: 0s, BukkitValues: {"modelengine:models": "gnom"}, Bukkit.updateLevel: 2, LeftHanded: 0b, OnGround: 1b, AbsorptionAmount: 0.0f, Paper.Origin: [1017.0583745613741d, 75.0d, 1708.2927848897968d], Sitting: 0b, AgeLocked: 0b, Attributes: [{Name: "minecraft:generic.follow_range", Modifiers: [{Name: "Random spawn bonus", Amount: -0.047236200273276026d, Operation: 1, UUID: [I; 290362918, -392475371, -1730965421, 465555250]}], Base: 25.0d}, {Name: "minecraft:generic.max_health", Base: 10.0d}, {Name: "minecraft:generic.movement_speed", Base: 0.20000000298023224d}], Purpur.ticksSinceLastInteraction: 613, Invulnerable: 0b, Brain: {memories: {}}, Owner: [I; 177539912, -1655029154, -1531197609, 1866396126], Age: 0, Bukkit.Aware: 1b, ActiveEffects: [{Duration: 2147482947, ShowIcon: 0b, Ambient: 0b, ShowParticles: 0b, Id: 14b, Amplifier: 0b}], HandDropChances: [0.0f, 0.0f], ArmorDropChances: [0.0f, 0.0f, 0.0f, 0.0f], Rotation: [225.0087f, 0.0f], HurtByTimestamp: 0, ForcedAge: 0, WorldUUIDMost: -1728590186987110228L, CustomName: '{"extra":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"color":"green","text":"Papagei "},{"italic":false,"color":"gold","text":"Lvl "},{"italic":false,"color":"gray","text":"- "},{"italic":false,"color":"green","text":" 1"}],"text":""}', ArmorItems: [{}, {}, {}, {}], HandItems: [{}, {}], Air: 300s, UUID: [I; 1802379442, 167723782, -2133466741, 314516336], Spigot.ticksLived: 700, Variant: 2, InLove: 0, FallDistance: 0.0f, WorldUUIDLeast: -7518284901149484164L, Motion: [0.0d, -0.0784000015258789d, 0.0d], Pos: [1014.1876906688036d, 75.0d, 1708.304300462545d], Fire: -1s, CanPickUpLoot: 0b, Health: 10.0f, HurtTime: 0s, FallFlying: 0b, PersistenceRequired: 1b, PortalCooldown: 0}
You can see that it still has tags from the mob before applied but beside this the mob is an invisible vanillamobs.yml mob as an reference I also post the vanilla parrot entity:
Papagei Lvl - 1 has the following entity data: {Paper.SpawnReason: "NATURAL", DeathTime: 0s, Bukkit.updateLevel: 2, LeftHanded: 0b, OnGround: 0b, AbsorptionAmount: 0.0f, AgeLocked: 0b, Attributes: [{Name: "minecraft:generic.follow_range", Modifiers: [{Name: "Random spawn bonus", Amount: -0.008934250445841552d, Operation: 1, UUID: [I; -320336383, 1872904515, -1536277168, -351742328]}], Base: 16.0d}, {Name: "minecraft:generic.max_health", Base: 10.0d}, {Name: "minecraft:generic.movement_speed", Base: 0.20000000298023224d}], Purpur.ticksSinceLastInteraction: 59, Invulnerable: 0b, Brain: {memories: {}}, Paper.Origin: [1008.5129934888753d, 75.0d, 1711.5159699861476d], Sitting: 0b, Age: 0, Bukkit.Aware: 1b, HandDropChances: [0.0f, 0.0f], ArmorDropChances: [0.0f, 0.0f, 0.0f, 0.0f], Rotation: [129.3695f, -27.93275f], HurtByTimestamp: 0, ForcedAge: 0, WorldUUIDMost: -1728590186987110228L, CustomName: '{"extra":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"color":"green","text":"Papagei "},{"italic":false,"color":"gold","text":"Lvl "},{"italic":false,"color":"gray","text":"- "},{"italic":false,"color":"green","text":" 1"}],"text":""}', ArmorItems: [{}, {}, {}, {}], HandItems: [{}, {}], Air: 236s, UUID: [I; 1413325208, -668906757, -1745126506, 656000935], Variant: 2, Spigot.ticksLived: 59, InLove: 0, FallDistance: 0.0f, NoGravity: 1b, WorldUUIDLeast: -7518284901149484164L, Motion: [-0.036652896573097365d, 0.05994746709137886d, -0.02227980747543884d], Pos: [1008.4509366761936d, 75.20262688933508d, 1711.2888312808784d], Fire: -1s, CanPickUpLoot: 0b, Health: 10.0f, HurtTime: 0s, FallFlying: 0b, PersistenceRequired: 1b, PortalCooldown: 0}
You can see that it has way fewer tags than the unit that mm created.
To ensure that the model is not the problem I also made the same test with a mob that only had a customname + mobtype parrot. I encountered the exact same thing beside that in that case the parrot was not invisible, but beside this everything was the same thing.
Steps to reproduce
https://pastebin.com/3Lxbxpr7 testparrot file https://pastebin.com/9e3WCxzg parrot mob out of vanillamobs.yml
Create a file with a mob that has the type parrot and a model applied via meg. When the mob gets tamed and mounts your shoulder the model dies and the mob vanished form the mm mob list. When you move the parrot will leave your shoulder and is invisible.
You can do the same thing with a mob without a model applied and you only have the difference that the mob is not invisible.
Current behavior
The original mob gets removed and replaced with a vanilla mob that has the exact same uuid but different tags. If the mob had a model applied it becomes also invisible afterwards.
Intended correct behavior
The mob should stay the same after he mounts the shoulder and also should keep the skin etc.
Proposed fixes
The parrots changed the type when it mounts the shoulder. It is not anymore a normal entity while it is mounted. Probably there is a mistake when the data get applied back to the entity when it leaves the shoulder.