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