Creating a new Pet

Apr 17, 2020
Creating a new Pet
  • How to create your own unique pet
    Every server wants to be unique, so we implemented a way, to create your own custom pets.
    Before we even start, you should know, every pet is made out of a .mpet file, which is essentialy a Zipped Archive disguised as a unique file.
    In this tutorial, I will make the "ball" pet, a simple pet for this tutorial.
    To start, create a new file, named "", open it, using an archive explorer (such as windows', winrar, 7zip, etc.), and create a file, named "PET_NAME.yml". Be careful when naming the file, because it is Case Sensitive, and has to be EXACTLY the same as the zip.
    After creating the file, copy the following template and edit the values.
    Code (Text):
    #The name of the pet, as shown in the GUI
    name: "&cBall"
    #The description of the pet. Shown under it's name
    - "&cRolling to you,"
    - "&cthe most playfull pet!"
    #Permission node for the pet. Leave this blank for no permissions.
    permission: "MiniaturePets.MP8"
    #The item which will show up as the "icon" for this pet in the GUI
    #(it should match the name of your item in items.yml CASE SENSITIVE)
    symbol: body
    #This value should not be touched. It is only for experimental usage.
    #How long the delay would be between each frame. The higher the slower.
    frameDelay: 1
    #Quality of animation. Mainly impacts the smoothness
    quality: 5
    Next up is the tricky part, Modelling.

    The first steps is the items. Becuase a pet is just a lot of armorstands, in order to not have to copy the same items again and again, you are going to specify items here, which you can later use. So create the file "items.yml".
    You will need to copy this template, and paste it as many times as the amount of items you want.
    Code (Text):
    #Item Name
      Material: SKULL_ITEM
      #If you specified "SKULL_ITEM" insert the url here. If you want to use a heads, refer to the "Fetching a URL from freshcoal" page. If you want a custom head, refer to "Creating custom heads" page.
      #Material data. Example: skull:3
      Data: 3
    After you have specified all the items, we are going over to the second step. Creating all the body parts, and positioning them.
    Inside the zip archive, create a folder, names "structure". Inside of it, we are going to add the body parts. To add a new body part, create a .yml file, with a name of the part. In the ball pet, I'm going to have only one body part, the "body", so I will make a file named "body.yml".
    Inside the yml file, we are going to control 3 things:
    1. What items he would wear/hold, size and visibility
    2. Position
    3. Initial rotation of the body part armorstand.
    Code (Text):

    #You don't have to use everything. I only use the "head" so I commented out all the other options.
    #hand: (item)
    helmet: body # I use the name of the item we made earlier
    #chestplate: (item)
    #leggings: (item)
    #boots: (item)
    #small: true / false
    #visible: true / false

    #The next part is the position. All the positions here, are not position in the minecraft world, they are relative to the pet center.
    #Controls the relative height. Positive - up | Negative - down (This "hight" is a misspelling but in future updates it can be spelled as height or hight)
    height: -1.2
    #Controls the relative left and right axis. Positive - left | Negative - right
    leftRight: 0.8
    #Controls the relative forwards and backwords axis. Positive - forwards | Negative - backwards
    backForward: 0.52
    #Controls the relative yaw rotation. (Defaults to 0 = Where the pet is looking)
    yaw: 90
    #You can change here the rotation of parts of the armorstand. To get correct values, use this site:
    headPos: "{-90 , 0 , -10}"
    After creating all the body parts, In my case 1, we finish modelling, and finally get to the last, most complicated part: Animation.

    Just like creating the structure folder, create a folder named "animationFrame".
    Important note: Name these .yml files as "F1.yml" "F2.yml" etc. Each frame must be its own .yml file.

    Inside this folder, we will have frames. Becuase of the smart system of the plugin, you don't need to make each frame, you can usualy make a few keyframes, and the plugin would automaticly generate the frames between them. In this case I will have 2 frames and a final 3rd frame as mentioned in the "REMEMBER" note below.

    REMEMBER: Always add another keyframe at the end, which is just the initial values! So in my case I will have 3 frames!

    This is the first frame:
    Code (Text):
    #You will need to create a section for each body part you move in the frame. Because I only have one body part, I will make one section. You can use all the rotation setters from before.
      headPos: "{-90 , 0 , -40}"
    Second frame:
    Code (Text):
    headPos: "{-90 , 0 , -125}"
    Third frame:
    Code (Text):
    headPos: "{-90 , 0 , 0}"

    If you are done, you are pretty much finished. All what is left, is change the ending from .zip to .mpet and drop the file in the pets folder. If you are intrested in helping the community, you can also share your pet at
    Additional reference link "How-to" make a .mpet file on the community forums:
  • Loading...
  • Loading...