Description and Installation

EpicHeads offers over 17,000 unique, artistic heads accessible through a GUI and optional economy support!

This is perfect for builders and creative servers!

Download EpicHeads on our Marketplace. Make sure you have the latest version available for added heads!

Stop your server, drag and drop EpicHeads.jar in your plugins folder and restart the server. The plugin should now be loaded and the files should have been created.

EpicHeads requires Vault and an economy manager to utilize all features.


Features

  • Thousands of heads: EpicHeads features over 17,000 heads.
  • Catagories: EpicHeads categorizes all heads so you have no problem finding the head that suits your needs.
  • Search: Need a specific head but don't want to browse the GUI? Search for one instead!
  • Economy support: We allow you to use your economy to charge users for using heads.
  • GUI Based: No more commands, get a preview of the heads as you are browsing through the catagories.
  • Head restriction: You are able to restrict or remove heads from the menu with a simple command.


Commands + Permissions

CommandPermissionsDescriptionSyntax
Headsepicheads.menuOpens the menu that displays all categories and heads./heads
Heads searchepicheads.searchSearch for accurate heads quickly based on your query parameters./heads search <search query>
Heads getepicheads.getGet a specific head from a player or a mob based on the head name./head get <playername/mobname>
Heads reloadepicheads.reloadReload all files instantly or create them if they do not exist or corrupted./heads reload
Heads addepicheads.addAdd a specific custom head into a category (creates it if it does not exist)./heads add <playername/mobname> <category> [displayname]
Heads handepicheads.handAdd the head in your hand into a category (creates if it does not exist)./heads hand <category> <name>
Heads removeepicheads.removeOpens a menu to remove a specific head from the menu./heads remove
Heads randomepicheads.randomGives the online player a random head./heads random <playername>
Heads costepicheads.costThe economy menu will open where you can set the price for specific heads./heads cost <amount>
Heads renameepicheads.renameRename menu will open where you can rename the head from the menu./heads rename <name>
Heads idepicheads.idGives the name and ID of the head you're holding in your hands./heads id
Heads helpDefaultDisplays the help menu./heads help
Heads itemecoepicheads.item-ecoGives the player a specified amount of player head tokens./heads itemeco <give/take/set> <player>
Heads categorycostepicheads.categorycostThe economy menu will open to let you set a cost for a category you select./heads categorycost <amount>

epicheads.category.<category>This permission allows you to give a player access to a specific category.

epicheads.bypasscost

This permission will allow players to bypass the cost.



Plugin files

config.yml
hide-no-perm-categories: true
free-in-creative: false
economy:
  enabled: false
  default-head-cost: 0
  vault-eco:
    enabled: true
  item-eco:
    enabled: false
    item:
      type: player_head
      name: '&6Player Head Token'
      lore:
      - '&8Use in /EpicHeads!'
  player-points-eco:
    enabled: false
breaking-head-names:
  enabled: true
  attempt-hook-blockstore: true
  similar-heads-in-cache: true
  default-name: Decoration Head
commands:
  heads:
    label: EpicHeads
    aliases:
    - heads
    description: Get cool heads
    sub-commands:
      get: get
      search: search
      random: random
      help: help
      add: add
      hand: hand
      remove: remove
      rename: rename
      give: give
      cost: cost
      category-cost: categorycost
      item-eco: itemeco
      id: id
      reload: reload
check-for-updates: true
menus.yml
search-heads:
  title: Head Search
  head:
    type: player_head
    name: '&7%name%'
    lore:
    - '&8%category%'
  head-cost:
    type: player_head
    name: '&7%name%'
    lore:
    - '&8%category%'
    - ''
    - '&6Cost: &e%cost%'
  head-no-perms:
    type: player_head
    name: '&7%name%'
    lore:
    - '&8%category%'
    - ''
    - '&cYou do not have permission'
    - '&cto use this head'
  filler:
    type: black_stained_glass_pane
    name: ' '
  back:
    type: redstone_block
    name: '&cBack to Main Menu'
  forwards:
    type: arrow
    name: '&7Forwards a Page'
  backwards:
    type: arrow
    name: '&7Previous Page'
get-categories:
  title: Categories
  head:
    type: player_head
    name: '&6%category%'
    lore:
    - '&e%heads% heads'
get-heads:
  title: '%category%'
  head:
    type: player_head
    name: '&7%name%'
    lore:
    - '&6Cost: &e%cost%'
  filler:
    type: black_stained_glass_pane
    name: ' '
  back:
    type: redstone_block
    name: '&cBack to Main Menu'
  forwards:
    type: arrow
    name: '&7Next Page'
  backwards:
    type: arrow
    name: '&7Previous Page'
get-confirm:
  title: Purchase Head
  head:
    type: player_head
    name: '&aPurchase %name% for $%cost%'
  accept:
    type: lime_terracotta
    name: '&aPurchase %name% for $%cost%'
  deny:
    type: red_terracotta
    name: '&cCancel Purchase'
id-categories:
  title: Categories
  head:
    type: player_head
    name: '&6%category%'
    lore:
    - '&e%heads% heads'
id-heads:
  title: '%category%'
  head:
    type: player_head
    name: '&7%name%'
    lore:
    - '&6Id&8: &a%id%'
  filler:
    type: black_stained_glass_pane
    name: ' '
  back:
    type: redstone_block
    name: '&cBack to Main Menu'
  forwards:
    type: arrow
    name: '&7Next Page'
  backwards:
    type: arrow
    name: '&7Previous Page'
remove-categories:
  title: Categories
  head:
    type: player_head
    name: '&6%category%'
    lore:
    - '&e%heads% heads'
remove-heads:
  title: '%category%'
  head:
    type: player_head
    name: '&cRemove %name%'
  filler:
    type: black_stained_glass_pane
    name: ' '
  back:
    type: redstone_block
    name: '&cBack to Main Menu'
  forwards:
    type: arrow
    name: '&7Next Page'
  backwards:
    type: arrow
    name: '&7Previous Page'
remove-confirm:
  title: Remove Head
  head:
    type: player_head
    name: '&cRemove %name%'
  accept:
    type: lime_terracotta
    name: '&cRemove %name%'
  deny:
    type: red_terracotta
    name: '&aDont remove %name%'
rename-categories:
  title: Categories
  head:
    type: player_head
    name: '&6%category%'
    lore:
    - '&e%heads% heads'
rename-heads:
  title: '%category%'
  head:
    type: player_head
    name: '&aRename %name%'
  filler:
    type: black_stained_glass_pane
    name: ' '
  back:
    type: redstone_block
    name: '&cBack to Main Menu'
  forwards:
    type: arrow
    name: '&7Next Page'
  backwards:
    type: arrow
    name: '&7Previous Page'
rename-confirm:
  title: Rename Head
  head:
    type: player_head
    name: '&aRename %name% to %newname%'
  accept:
    type: lime_terracotta
    name: '&aRename %name% to %newname%'
  deny:
    type: red_terracotta
    name: '&aDont rename %name%'
cost-categories:
  title: Categories
  head:
    type: player_head
    name: '&6%category%'
    lore:
    - '&e%heads% heads'
cost-heads:
  title: '%category%'
  head:
    type: player_head
    name: '&aSet cost of %name%'
  filler:
    type: black_stained_glass_pane
    name: ' '
  back:
    type: redstone_block
    name: '&cBack to Main Menu'
  forwards:
    type: arrow
    name: '&7Next Page'
  backwards:
    type: arrow
    name: '&7Previous Page'
cost-confirm:
  title: Set cost of Head
  head:
    type: player_head
    name: '&aSet cost of %name%'
    lore:
    - '&7to &6%newcost%'
  accept:
    type: lime_terracotta
    name: '&aSet cost of %name%'
    lore:
    - '&7to &6%newcost%'
  deny:
    type: red_terracotta
    name: '&aDont set cost of %name%'
category-cost-categories:
  title: Categories
  head:
    type: player_head
    name: '&7Set cost of &6%category%'
    lore:
    - '&e%heads% heads'
category-cost-confirm:
  title: Set cost for Category
  head:
    type: player_head
    name: '&aSet cost of %category%'
    lore:
    - '&7to &6%newcost%'
  accept:
    type: lime_terracotta
    name: '&aSet cost of %category%'
    lore:
    - '&7to &6%newcost%'
  deny:
    type: red_terracotta
    name: '&aDont set cost of %category%'
category-cost-remove-categories:
  title: Categories
  head:
    type: player_head
    name: '&7Reset cost of &6%category%'
    lore:
    - '&e%heads% heads'
category-cost-remove-confirm:
  title: Set cost for Category
  head:
    type: player_head
    name: '&aReset cost of %category%'
    lore:
    - '&7to &6%newcost%'
  accept:
    type: lime_terracotta
    name: '&aReset cost of %category%'
    lore:
    - '&7to &6%newcost%'
  deny:
    type: red_terracotta
    name: '&aDont reset cost of %category%'


browse.yml
menu:
  categories-title: Categories
  category-title: '%category%'
  close:
    type: redstone_block
    name: '&cClose Menu'
  back:
    type: redstone_block
    name: '&cBack to Categories'
  search:
    type: compass
    name: '&7Search Heads'
  categories:
    category:
      type: player_head
      name: '&7%category%'
      lore:
      - '&6%heads% &eheads'
    unselected-page:
      type: paper
      name: '&7Page %page%'
    selected-page:
      type: map
      name: '&7Page %page%'
    scrollbar:
      left:
        type: arrow
        name: '&7Left'
      right:
        type: arrow
        name: '&7Right'
      no-left:
        type: air
      no-right:
        type: air
      filler:
        type: black_stained_glass_pane
        name: ' '
  heads:
    head:
      type: player_head
      name: '&7%name%'
      lore:
      - '&eCost: &6%cost%'
    unselected-page:
      type: paper
      name: '&7Page %page%'
    selected-page:
      type: map
      name: '&7Page %page%'
    scrollbar:
      left:
        type: arrow
        name: '&7Left'
      right:
        type: arrow
        name: '&7Right'
      no-left:
        type: air
      no-right:
        type: air
      filler:
        type: black_stained_glass_pane
        name: ' '


en_US.lang
#General Messages

general.nametag.prefix = "&8[&6EpicHeads&8]"

#Interface Messages

interface.get.open = "&7Opening Menu..."
interface.get.purchased = "&7Purchased the head &6%name% &7for &6%cost%"
interface.get.notenoughmoney = "&cYou do not have enough money to purchase this head"
interface.get.transactionerror = "&cError taking your money"
interface.id.clicked = "&7The head &6%name% &7has the id &6%id%";
interface.remove.open = "&cSelect a head to remove it"
interface.categorycost.openremove = "&7Select a head category to reset its cost back to the default &6%newcost%"
interface.categorycost.removecost = "&7Reset the cost of the category &6%category% &7to &6%newcost%"
interface.categorycost.open = "&7Select a head category to set its cost to &6%newcost%";
interface.categorycost.setcost = "&7Set the cost of the category &6%category% &7to &6%newcost%"
interface.remove.removed = "&cRemoved the head &4%name%"
interface.search.nopermission = "&cYou do not have permission to get heads from the category &4%category%"
interface.rename.open = "&7Select a head to rename it to &6%newname%"
interface.rename.renamed = "&7Renamed the head &6%name% &7to &6%newname%"

#Command Messages

command.error.integer = "&cYou must enter a whole number > You entered &4%number%"
command.error.number = "&cYou must enter a number > You entered &4%number%"
command.error.negative = "&cYou must enter a positive number > You entered &4%number%"
command.error.noconsole = "&cYou must be a player to use this command."

command.give.invalidamount = "The amount must be greater than 0 > You entered &4%number%"
command.give.cantfindplayer = "&cCannot find the player &4%name%"
command.give.cantfindhead = "&cCannot find the head with the id &4%id%"
command.give.success = "&7Given &6%amount% &7of the head &6%head% &7to &6%name%"

command.id.holdskull = "&cPlease hold a player head"
command.id.unknownhead = "&7Could not find the head &7%head%"
command.id.success = "&7The head you're holding &6%name% &7has the ID &6%id%"

command.add.cantfind = "&cUnable to find texture of player &4%name%|&cThe authentication servers may be down, or the player does not exist."
command.add.categorylength = "&cThe category can only be a max of 32 characters long|&cYou entered &4%category% &c(%length% characters)"
command.add.fetching = "&7Fetching textures, please wait..."
command.add.added = "&7Added &6%name%&7 head to category &6%category%"

command.hand.notskull = "&cYou need to have a player skull in your hand to get its texture"
command.hand.notextureproperty = "&cNo texture property found, looking for a player name"
command.hand.nonameproperty = "&cNo name property found, unable to add head"

command.itemeco.noitem = "&cYou must be holding the item you wish to set as the economy item"
command.itemeco.set = "&7Economy item set to the item in your hand"
command.itemeco.get = "&7You have been given &6%amount% &7Heads token items"
command.itemeco.given = "&6%amount% &7Heads token items given to &6%player%"

command.search.found = "&7Found &6%heads% heads &7matching &6%query%"
command.search.nonefound = "&cFound no heads matching &4%query%"

command.random.noheads = "&cThere are no heads in the cache"
command.random.give = "&7You have been randomly given the head &6%name%"
command.random.self = "&7Randomly found the head &6%name%"

command.get.success = "&7Adding &6%name%&7s head to your inventory"

command.reload.success = "&7Config Reloaded"

#Event Messages

event.general.nopermission = "&cYou do not have permission to do that."

Still need help?

Couldn't find what you're looking for? Feel free to contact us on our Discord or Service Desk!

  • No labels