// Path: src/main/java/uk/kihira/tails/client/outfit/OutfitPart.java
// public class OutfitPart {
//     public final UUID basePart;
//     public MountPoint mountPoint;
//     public float[] mountOffset; // [x,y,z]
//     public float[] rotation; // [x,y,z]
//     public float[] scale; // [x,y,z]
//     public float[][] tint; // [[r,g,b],[r,g,b]]
//     public UUID texture;
// 
//     // Client only fields
//     private transient Part part;
//     public transient ResourceLocation textureLoc;
// 
//     public OutfitPart(Part part) {
//         this.basePart = part.id;
//         this.mountPoint = part.mountPoint;
//         this.mountOffset = part.mountOffset;
//         this.rotation = part.rotation;
//         this.scale = part.scale;
//         this.tint = part.tint;
//         this.texture = part.textures[0];
// 
//         this.textureLoc = new ResourceLocation(Tails.MOD_ID, this.texture.toString());
//     }
// 
//     /**
//      * Gets the {@link Part} that has the ID for {@link #basePart}
//      * @return The part
//      */
//     @Nullable
//     public Part getPart() 
//     {
//         if (part == null) 
//         {
//             part = PartRegistry.getPart(basePart).orElse(null);
//         }
//         return part;
//     }
// }


import uk.kihira.tails.client.outfit.OutfitPart;
import javax.annotation.Nullable;
package uk.kihira.tails.client.gui;



public interface IOutfitPartSelected
{
    /**
     * This method is called when the player selects a part that exists on the current outfit
     * This can also include if the part was just added. It is guaranteed that the part is in the outfit at this stage
     *
     * @param part The part that was just selected
     */
// Path: src/main/java/uk/kihira/tails/client/outfit/OutfitPart.java
// public class OutfitPart {
//     public final UUID basePart;
//     public MountPoint mountPoint;
//     public float[] mountOffset; // [x,y,z]
//     public float[] rotation; // [x,y,z]
//     public float[] scale; // [x,y,z]
//     public float[][] tint; // [[r,g,b],[r,g,b]]
//     public UUID texture;
// 
//     // Client only fields
//     private transient Part part;
//     public transient ResourceLocation textureLoc;
// 
//     public OutfitPart(Part part) {
//         this.basePart = part.id;
//         this.mountPoint = part.mountPoint;
//         this.mountOffset = part.mountOffset;
//         this.rotation = part.rotation;
//         this.scale = part.scale;
//         this.tint = part.tint;
//         this.texture = part.textures[0];
// 
//         this.textureLoc = new ResourceLocation(Tails.MOD_ID, this.texture.toString());
//     }
// 
//     /**
//      * Gets the {@link Part} that has the ID for {@link #basePart}
//      * @return The part
//      */
//     @Nullable
//     public Part getPart() 
//     {
//         if (part == null) 
//         {
//             part = PartRegistry.getPart(basePart).orElse(null);
//         }
//         return part;
//     }
// }


// Path: src/main/java/uk/kihira/tails/client/gui/IOutfitPartSelected.java
import uk.kihira.tails.client.outfit.OutfitPart;
import javax.annotation.Nullable;

package uk.kihira.tails.client.gui;



public interface IOutfitPartSelected
{
    /**
     * This method is called when the player selects a part that exists on the current outfit
     * This can also include if the part was just added. It is guaranteed that the part is in the outfit at this stage
     *
     * @param part The part that was just selected
     */
    void OnOutfitPartSelected(@Nullable final OutfitPart part);