✨Ultima's Hats✨| EULA-Friendly Cosmetics | Cross-Server Sync icon

✨Ultima's Hats✨| EULA-Friendly Cosmetics | Cross-Server Sync -----

Animated block, playerhead, and banner hats, with configurable placeholder requirements.



[​IMG]
[​IMG] A hat plugin to meet all your players' fancy needs. Perfect for hub, minigame, or survival servers.
Want to see the hats in action? Join the official server for this plugin at play.ultimamc.net
Features
  • Supports custom banner and playerhead hats
[​IMG] [​IMG]
  • Animations with any items, supporting custom frame times
[​IMG]
  • Easy to use hat selection GUI
[​IMG]
  • Configure cost, permission, hat and placeholder requirements - players must first meet placeholder, hat, and permission requirements to be able to buy the hat. That's right, you can make some hats require owning other hats to be purchasable.
  • Each requirement is a string with syntax "[placeholder][comparator][placeholder]"
  • Comparator can be one of >, >=, =, <=, <
  • Placeholder can be any PlaceholderAPI plugin placeholder, provided the expansion pack for it is installed. It can also be a normal number or string.
  • Numbers can be compared with other numbers using any comparator.
  • When comparing strings, only the = comparator is allowed.
  • An example number comparator:
    • "%player_health%>10"
  • An example string comparator:
    • "%player_gamemode%=survival"
  • All placeholder requirements must be met to unlock the hat.
  • Configure local SQL storage or connect to a remote MySQL database to enable hat syncing between servers.
  • Survival server support - do not allow players to apply hats, or remove existing helmets and place into inventory if a custom hat is selected.
  • Customize the size and format of the main GUI, adding extra items that can execute commands if so desired

Commands & Permissions
  • /hats (ultimahats.hats) - Open up the main hat gui. The aliases /ultimahats and /hat also work.
  • /hats apply [hat] [player] (ultimahats.apply) - Apply a custom hat to a player, regardless of whether they own the hat or not.
  • /hats remove [player] (ultimahats.remove) - Remove a player's worn custom hat, if they have any on.
  • /hats currentitem (ultimahats.currentitem) - Wear the item you are holding in your hand as a hat. Intended as a testing command for creation of new hats (what's the point of configuring fancy hat if player can just use any item already?)
  • /hats reload (ultimahats.reload) - Reload the plugin, adding any new hats defined in the hats config.

Installation
  • Purchase and download the plugin.
  • Drag and drop the plugin into the "/plugins" folder in your server files.
  • Install Vault and an economy plugin to enable support for purchasable hats.
  • Install PlaceholderAPI to enable support for placeholder hat requirements.
  • Configure to your liking, and enjoy.

Configuration
The default configuration files are listed here, with comments and explanations for each option. For hats, a detailed comment is included at the top for information on how hats can be added, with some example hats included for your use.
Code (YAML):
# If set to false, the plugin will not allow players to wear a hat if they already have a helmet
# If set to true, hats will be automatically applied, and helmets will be automatically removed
force-remove-helmets
: false

# Accepts "MySQL" or "SQL"
storage-method
: SQL
# Only configure this section if you are using MySQL
mysql
:
  host
: example.com
  port
: 3306
  user
: bukkit
  password
: "password"
  database
: mysql
 
# A list of worlds where players won't have hats. Case sensitive!
disabled-worlds
:
 - example

mainGUI
:
  # Title of the gui
  title
: "&b&lHats"
  # Size of the GUI - must be a multiple of 9.
  # Remember to change all other slot values below
  # after changing this to prevent errors.
  size
: 36
  # How many spaces in the GUI should the hats occupy?
  # Must be less than "size" above.
  # If you change the size, a good idea would be to
  # set this to size - 9
  hatsSize
: 27
  # Fill the unused slots in the GUI with an item
  fill
:
    enabled
: true
    item
: BLUE_STAINED_GLASS_PANE
    name
: ""
    # The starting and ending slots; all items in between (inclusive)
    # will be filled with the specified item.
    # Slots are 0-indexed, i.e. slot 1 is 0
    start
: 27
    end
: 35
  # The button to unequip current hat
  unequip
:
    item
: BARRIER
    name
: "&dUnequip current hat"
    lore
:
     - ""
      - "&7Click to unequip your current hat,"
      - "&7if you are wearing any."
    slot
: 32
  # Page buttons, should there be multiple pages
  next-page
:
    item
: ARROW
    name
: "&fNext page"
    slot
: 35
  last-page
:
    item
: ARROW
    name
: "&fLast page"
    slot
: 27
  # Extra, non-hat items can be added as required. They can execute commands,
  # using variable %player% if needed. You MUST include a "slot" option for each item
  extra-items
:
    example-back-button
:
      item
: RED_STAINED_GLASS_PANE
      name
: "&cBack"
      slot
: 31
      commands
:
       - "bossshop open cosmetics %player%"
     
# Messages sent by plugin to player
strings
:
  prefix
: "&b&lHats &8&l» &7"
  hat-selected
: "You are now wearing the %hat% &7hat"
  hat-unequipped
: "You unequipped your hat."
  armor-equipped
: "&cYou are already wearing another item!"
  armor-removed
: "&eThe item you were previously wearing was placed in your inventory or dropped."
  requirements-not-met
: "&cYou don't own this hat!"
  not-enough-money
: "&cYou don't have enough money for this purchase!"
  hat-purchased
: "You bought %hat% &7for &a$%cost%&7!"
 
# Sounds associated to messages
sounds
:
  hat-selected
:
    sound
: ITEM_ARMOR_EQUIP_IRON
    volume
: 1.0
    pitch
: 1.0
  hat-unequipped
:
    sound
: ITEM_ARMOR_EQUIP_ELYTRA
    volume
: 1.0
    pitch
: 1.0
  hat-purchased
:
    sound
: ENTITY_PLAYER_LEVELUP
    volume
: 1.0
    pitch
: 1.0
  requirements-not-met
:
    sound
: BLOCK_NOTE_BLOCK_BASS
    volume
: 1.0
    pitch
: 1.0
  not-enough-money
:
    sound
: BLOCK_NOTE_BLOCK_BASS
    volume
: 1.0
    pitch
: 1.0
 
# Lore added to the end of hats to indicate locked status
lore
:
  locked
:
   - ""
    - "&cLocked"
  unlocked
:
   - ""
    - "&eClick to select!"
  selected
:
   - ""
    - "&aSelected!"
  buyable
:
   - ""
    - "&eAll requirements met!"
    - "&6Cost
: &b$%cost%"
 
Code (YAML):
# HAT FORMAT:
# Each entry represents a unique hat. If the entry is changed, the hat will not work anymore.
# Entries are presented IN ORDER to the GUI. This means that to change the ordering,
# you should cut and paste the specified hat to an earlier position in this config.
# For each entry, the options are:
# [REQUIRED] item: the material to set the item
# [REQUIRED] name: the display name of the hat in inventories
# [OPTIONAL] lore: a list of strings to display as the item lore
# [OPTIONAL] glow: true/false - should this item glow?
# [OPTIONAL] commands: a list of commands this hat should execute when
#                      selected, using %player% as a variable
# [OPTIONAL] requirements: A list of requirements that should all be met
#                          for the player to be able to use this hat
# [OPTIONAL] frames: A list of frames for this hat. Include this option
#                    to make this hat animated.
#
# Requirements format:
#   permissions: A list of permissions the player must have
#   placeholders: If PAPI is installed, a list of placeholder requirements
#                 format: "%placeholder%[compare][value]"
#                 [compare] can be one of > >= = <= <
#                 [value] can be a number, string, or another placeholder
#                 Strings can only be compared with "="!
#   hats: A list of other hats the player must also own
#         !!! DO NOT MAKE HATS THAT REQUIRE EACH OTHER. YOU WILL BREAK YOUR SERVER. !!!
#   cost: An economy cost that the player must pay to own this hat.
#         The item is not buyable until all other requirements are met.
#
# Frames format:
#   Each frame is another entry that supports item, name, lore, glow etc
#   each entry must also have a "time" key that specifies the frame's
#   duration in ticks (20 ticks = 1 second).
#   Frames are played in order and then looped.
#   Each frame can also be a playerhead or banner!
#
# If the item is a PLAYER_HEAD:
# Include the head's VALUE from your favorite head website.
# You should be able to find this in whatever head page there is.
# Then, include it in the head config as value: "[put value here]"
#
# If the item is a BANNER:
# First, make sure the item name is colored, e.g. GREEN_BANNER
# Next, go to your favorite banner generator site and find the /give command.
# You will see a section saying "banner_patterns=" to the end.
# Include this in the head config as patterns: "[paste here]"
# If the banner pattern has double quotes in it, surround the patterns with
# single quotes and vice versa
#
# Note that banners and playerheads don't support the glow option
# Examples of blocks, banners, and playerheads can all be found below!

# A normal hat that glows
melon
:
  item
: MELON
  name
: "&a&lMelon"
  lore
:
   - ""
    - "&7An amazing melon"
  glow
: true

# An animated hat that cycles between slime and honey
animated_slime
:
  item
: SLIME_BLOCK
  name
: "&a&lSlimy"
  lore
:
   - ""
    - "&7This hat is animated!"
  frames
:
    # Name and lore of each item will use the main one if not defined
    # Each frame can also be a playerhead or banner!
    1
:
      item
: SLIME_BLOCK
      time
: 10
    2
:
      item
: HONEY_BLOCK
      name
: "&6&lHoney"
      time
: 10
     
# A cool banner
# Notice the single quotes around the pattern section, due to the double quotes inside it
banner
:
  item
: BLUE_BANNER
  patterns
: ' [ {pattern: "gradient",color: "red" }, {pattern: "small_stripes",color: "black" }, {pattern: "curly_border",color: "black" } ]'
  name
: "&9&lPVP God"
  lore
:
   - ""
    - "&7A fancy banner for the best of the best."

# A cup of soda playerhead
# https://minecraft-heads.com/custom-heads/food%20&%20drinks/28194-cup-of-soda
head
:
  item
: PLAYER_HEAD
  value
: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTQyY2M5MjAzYzkwYjg5YmRhYzFkZjI4NDE2NzI2NmI5NTNkZmViZjNjNDY5MGE3Y2QwYjE1NzkxYTYyZTU4MiJ9fX0="
  name
: "&b&lCup of Soda"
  lore
:
   - ""
    - "&7Go ahead, ruin your teeth health"
   
# A hat that requires many things, including a cost of $1000
hardtoget
:
  item
: CARVED_PUMPKIN
  name
: "&6&lWorst Hat"
  lore
:
   - ""
    - "&7Why would you even go for this hat?"
    - ""
    - "&bRequirements:"
    - "&7- Must have more than 15 health"
    - "&7- Must have the VIP rank"
    - "&7- Must own the &a&lMelon &7hat"
    - "&7- Must be in the End"
  requirements
:
    permissions
:
     - group.vip
    placeholders
:
     - "%player_health%>15"
      - "%player_world%=world_the_end"
    hats
:
     - melon
    cost
: 1000


Support
  • If you would like to ask a question or report a bug, please use the Discussion tab of this plugin page - I will try to get to you as fast as possible.
  • Refunds will not be accepted at this time.
Resource Information
Author:
----------
Total Downloads: 3
First Release: Nov 13, 2022
Last Update: Jun 6, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings