Skip to main content

Icon System

GeyserMenu supports three types of icons: Java Edition item IDs, Bedrock Edition texture paths, and URL icons.

Basic Usage​

1. Java Edition Item ID​

Use Java Edition item IDs, and the plugin will automatically convert them to corresponding Bedrock Edition texture paths:

items:
- text: "Teleport Menu"
icon: "compass"
icon_type: "java" # Use Java Edition item ID

2. Bedrock Edition Texture Path​

Directly use Bedrock Edition texture paths:

items:
- text: "Shop Menu"
icon: "textures/items/diamond"
icon_type: "bedrock" # Use Bedrock Edition texture path

3. URL Icon​

Load icons from network URLs:

items:
- text: "Custom Button"
icon: "https://example.com/icon.png"
icon_type: "url" # Use URL icon
Note

URL icons require icons.allow_url: true to be enabled in config.yml, and only HTTPS links are allowed by default.

Using Resource Pack Icons​

You can add custom icons through a Bedrock Edition resource pack:

  1. Create the resource pack directory structure:
my_resource_pack/
├── manifest.json
├── pack_icon.png
└── textures/
└── gui/
└── icons/
├── my_icon1.png
└── my_icon2.png
  1. Use custom icons in menus:
items:
- text: "Custom Button"
icon: "textures/gui/icons/my_icon1"
icon_type: "bedrock"
  1. Apply the resource pack to the Bedrock Edition client:
    • Import the resource pack into the Bedrock Edition client
    • Or distribute the resource pack automatically via the server

Icon Mapping Configuration​

Configure Java Edition to Bedrock Edition texture mapping in config.yml:

icons:
# Default icon
default: "textures/items/paper"

# Whether to allow URL icons
allow_url: true

# URL icon settings
url:
https-only: true
max-length: 256
allowed-domains: []

# Icon type mappings
mappings:
grass_block: "textures/blocks/grass_side"
diamond: "textures/items/diamond"
compass: "textures/items/compass_item"

Best Practices​

  1. When using resource packs:

    • Recommended image size is 32x32 or 64x64 pixels
    • Use PNG format with transparency support
    • Use lowercase letters and underscores for filenames
    • Use the textures/gui/icons/ prefix for paths
  2. Choosing icon types:

    • If using Java Edition items, choose icon_type: "java"
    • If using custom icons, choose icon_type: "bedrock"
    • If using network icons, choose icon_type: "url"
  3. URL icon considerations:

    • Ensure HTTPS protocol is used
    • Image size should not be too large
    • Consider using CDN for faster loading
Tip
  • Custom icons must be loaded through a Bedrock Edition resource pack
  • Resource packs can be loaded on the server or client side
  • Icon paths are case-sensitive
  • You can add custom mappings in config.yml
Note
  • If an icon path is invalid, the default icon will be used
  • Resource packs must meet Bedrock Edition format requirements
  • It is recommended to test all icons for proper display
  • URL icons require network connection to display