# Table of Contents - [🎣 CustomFishing | CustomFishing | XiaoMoMi Plugins](#-customfishing-customfishing-xiaomomi-plugins) - [πŸ˜‡ Click Here to Start Your Jounery | XiaoMoMi Plugins](#-click-here-to-start-your-jounery-xiaomomi-plugins) - [βž•οΈ Add New Contents | CraftEngine | XiaoMoMi Plugins](#-add-new-contents-craftengine-xiaomomi-plugins) - [CraftEngine | XiaoMoMi Plugins](#craftengine-xiaomomi-plugins) - [🐘 Entities | CraftEngine | XiaoMoMi Plugins](#-entities-craftengine-xiaomomi-plugins) - [πŸͺ‘ Furniture | CraftEngine | XiaoMoMi Plugins](#-furniture-craftengine-xiaomomi-plugins) - [πŸ… CustomCrops | CustomCrops | XiaoMoMi Plugins](#-customcrops-customcrops-xiaomomi-plugins) - [❓️ Common Questions | CustomCrops | XiaoMoMi Plugins](#-common-questions-customcrops-xiaomomi-plugins) - [πŸ“„ Format | CustomCrops | XiaoMoMi Plugins](#-format-customcrops-xiaomomi-plugins) - [🚰 Watering Can | CustomCrops | XiaoMoMi Plugins](#-watering-can-customcrops-xiaomomi-plugins) - [🌽 Crop | CustomCrops | XiaoMoMi Plugins](#-crop-customcrops-xiaomomi-plugins) - [πŸ’¦ Sprinkler | CustomCrops | XiaoMoMi Plugins](#-sprinkler-customcrops-xiaomomi-plugins) - [✏️ Text | CustomCrops | XiaoMoMi Plugins](#-text-customcrops-xiaomomi-plugins) - [πŸ’© Fertilizer | CustomCrops | XiaoMoMi Plugins](#-fertilizer-customcrops-xiaomomi-plugins) - [πŸ…ΏοΈ Placeholder & Expression | CustomCrops | XiaoMoMi Plugins](#-placeholder-expression-customcrops-xiaomomi-plugins) - [πŸ—‘οΈ Random tick vs Scheduled tick | CustomCrops | XiaoMoMi Plugins](#-random-tick-vs-scheduled-tick-customcrops-xiaomomi-plugins) - [πŸͺ΄ Pot | CustomCrops | XiaoMoMi Plugins](#-pot-customcrops-xiaomomi-plugins) - [MythicMobs | CustomCrops | XiaoMoMi Plugins](#mythicmobs-customcrops-xiaomomi-plugins) - [Zaphkiel | CustomCrops | XiaoMoMi Plugins](#zaphkiel-customcrops-xiaomomi-plugins) - [Supported levelers | CustomCrops | XiaoMoMi Plugins](#supported-levelers-customcrops-xiaomomi-plugins) - [🀝 Compatibility | CustomCrops | XiaoMoMi Plugins](#-compatibility-customcrops-xiaomomi-plugins) - [BetonQuest 3.0 | CustomCrops | XiaoMoMi Plugins](#betonquest-3-0-customcrops-xiaomomi-plugins) - [MMOItems | CustomCrops | XiaoMoMi Plugins](#mmoitems-customcrops-xiaomomi-plugins) - [NeigeItems | CustomCrops | XiaoMoMi Plugins](#neigeitems-customcrops-xiaomomi-plugins) - [ExecutableItems | CustomCrops | XiaoMoMi Plugins](#executableitems-customcrops-xiaomomi-plugins) - [BattlePass | CustomCrops | XiaoMoMi Plugins](#battlepass-customcrops-xiaomomi-plugins) - [TypeWriter | CustomCrops | XiaoMoMi Plugins](#typewriter-customcrops-xiaomomi-plugins) - [ClueScrolls | CustomCrops | XiaoMoMi Plugins](#cluescrolls-customcrops-xiaomomi-plugins) - [⚑️ Unsafe Commands | CustomCrops | XiaoMoMi Plugins](#-unsafe-commands-customcrops-xiaomomi-plugins) - [πŸ’ͺ Action | CustomCrops | XiaoMoMi Plugins](#-action-customcrops-xiaomomi-plugins) - [Plugin Events | CustomCrops | XiaoMoMi Plugins](#plugin-events-customcrops-xiaomomi-plugins) - [βœ… Condition | CustomCrops | XiaoMoMi Plugins](#-condition-customcrops-xiaomomi-plugins) - [βš™οΈ config.yml | CustomCrops | XiaoMoMi Plugins](#-config-yml-customcrops-xiaomomi-plugins) - [Custom Season Provider | CustomCrops | XiaoMoMi Plugins](#custom-season-provider-customcrops-xiaomomi-plugins) - [⌨️ API | CustomCrops | XiaoMoMi Plugins](#-api-customcrops-xiaomomi-plugins) - [Basic Operations | CustomCrops | XiaoMoMi Plugins](#basic-operations-customcrops-xiaomomi-plugins) - [Other Block System | CustomCrops | XiaoMoMi Plugins](#other-block-system-customcrops-xiaomomi-plugins) - [βš™οΈ Config | CustomNameplates | XiaoMoMi Plugins](#-config-customnameplates-xiaomomi-plugins) - [✏️ Text format | CustomNameplates | XiaoMoMi Plugins](#-text-format-customnameplates-xiaomomi-plugins) - [πŸ€ CustomNameplates | CustomNameplates | XiaoMoMi Plugins](#-customnameplates-customnameplates-xiaomomi-plugins) - [βž•οΈ Add New Contents | CustomNameplates | XiaoMoMi Plugins](#-add-new-contents-customnameplates-xiaomomi-plugins) - [Custom Mechanism | CustomCrops | XiaoMoMi Plugins](#custom-mechanism-customcrops-xiaomomi-plugins) - [πŸ…ΏοΈ Custom Placeholders | CustomNameplates | XiaoMoMi Plugins](#-custom-placeholders-customnameplates-xiaomomi-plugins) - [bossbar.yml | CustomNameplates | XiaoMoMi Plugins](#bossbar-yml-customnameplates-xiaomomi-plugins) - [actionbar.yml | CustomNameplates | XiaoMoMi Plugins](#actionbar-yml-customnameplates-xiaomomi-plugins) - [advance-data.yml | CustomNameplates | XiaoMoMi Plugins](#advance-data-yml-customnameplates-xiaomomi-plugins) - [Cosmetics | CustomNameplates | XiaoMoMi Plugins](#cosmetics-customnameplates-xiaomomi-plugins) - [πŸ–ΌοΈ Background | CustomNameplates | XiaoMoMi Plugins](#-background-customnameplates-xiaomomi-plugins) - [Static Text | CustomNameplates | XiaoMoMi Plugins](#static-text-customnameplates-xiaomomi-plugins) - [Switch Text | CustomNameplates | XiaoMoMi Plugins](#switch-text-customnameplates-xiaomomi-plugins) - [πŸ’¬ Bubble | CustomNameplates | XiaoMoMi Plugins](#-bubble-customnameplates-xiaomomi-plugins) - [πŸ”Ά Image | CustomNameplates | XiaoMoMi Plugins](#-image-customnameplates-xiaomomi-plugins) - [Vanilla Hud | CustomNameplates | XiaoMoMi Plugins](#vanilla-hud-customnameplates-xiaomomi-plugins) - [nameplate.yml | CustomNameplates | XiaoMoMi Plugins](#nameplate-yml-customnameplates-xiaomomi-plugins) - [🏷️ Nameplate | CustomNameplates | XiaoMoMi Plugins](#-nameplate-customnameplates-xiaomomi-plugins) - [Conditional Text | CustomNameplates | XiaoMoMi Plugins](#conditional-text-customnameplates-xiaomomi-plugins) - [πŸ“– Basic Font Knowledge | CustomNameplates | XiaoMoMi Plugins](#-basic-font-knowledge-customnameplates-xiaomomi-plugins) - [bubble.yml | CustomNameplates | XiaoMoMi Plugins](#bubble-yml-customnameplates-xiaomomi-plugins) - [πŸ” Examples | CustomNameplates | XiaoMoMi Plugins](#-examples-customnameplates-xiaomomi-plugins) - [One Time Bedrock ActionBar | CustomNameplates | XiaoMoMi Plugins](#one-time-bedrock-actionbar-customnameplates-xiaomomi-plugins) - [config.yml | CustomNameplates | XiaoMoMi Plugins](#config-yml-customnameplates-xiaomomi-plugins) - [❓️ Common Questions | CustomNameplates | XiaoMoMi Plugins](#-common-questions-customnameplates-xiaomomi-plugins) - [Background/Nameplate/Bubble Text | CustomNameplates | XiaoMoMi Plugins](#background-nameplate-bubble-text-customnameplates-xiaomomi-plugins) - [πŸ“„ Format | CustomFishing | XiaoMoMi Plugins](#-format-customfishing-xiaomomi-plugins) - [⌨️ API | CustomNameplates | XiaoMoMi Plugins](#-api-customnameplates-xiaomomi-plugins) - [✏️ Text | CustomFishing | XiaoMoMi Plugins](#-text-customfishing-xiaomomi-plugins) - [🀝 Compatibility | CustomNameplates | XiaoMoMi Plugins](#-compatibility-customnameplates-xiaomomi-plugins) - [🐚 Command & Permission | CustomNameplates | XiaoMoMi Plugins](#-command-permission-customnameplates-xiaomomi-plugins) - [Shift Text | CustomNameplates | XiaoMoMi Plugins](#shift-text-customnameplates-xiaomomi-plugins) - [πŸ¦– Entity | CustomFishing | XiaoMoMi Plugins](#-entity-customfishing-xiaomomi-plugins) - [Oraxen | CustomFishing | XiaoMoMi Plugins](#oraxen-customfishing-xiaomomi-plugins) - [πŸ•ΉοΈ MiniGame | CustomFishing | XiaoMoMi Plugins](#-minigame-customfishing-xiaomomi-plugins) - [Accruate click v2 | CustomFishing | XiaoMoMi Plugins](#accruate-click-v2-customfishing-xiaomomi-plugins) - [MMOItems | CustomFishing | XiaoMoMi Plugins](#mmoitems-customfishing-xiaomomi-plugins) - [Hold | CustomFishing | XiaoMoMi Plugins](#hold-customfishing-xiaomomi-plugins) - [Accruate click v3 | CustomFishing | XiaoMoMi Plugins](#accruate-click-v3-customfishing-xiaomomi-plugins) - [Nexo | CustomFishing | XiaoMoMi Plugins](#nexo-customfishing-xiaomomi-plugins) - [🧊 Block | CustomFishing | XiaoMoMi Plugins](#-block-customfishing-xiaomomi-plugins) - [NeigeItems | CustomFishing | XiaoMoMi Plugins](#neigeitems-customfishing-xiaomomi-plugins) - [Click | CustomFishing | XiaoMoMi Plugins](#click-customfishing-xiaomomi-plugins) - [MythicMobs | CustomFishing | XiaoMoMi Plugins](#mythicmobs-customfishing-xiaomomi-plugins) - [ItemsAdder | CustomFishing | XiaoMoMi Plugins](#itemsadder-customfishing-xiaomomi-plugins) - [AdvancedEnchantments | CustomFishing | XiaoMoMi Plugins](#advancedenchantments-customfishing-xiaomomi-plugins) - [Tension | CustomFishing | XiaoMoMi Plugins](#tension-customfishing-xiaomomi-plugins) - [🀝 Compatibility | CustomFishing | XiaoMoMi Plugins](#-compatibility-customfishing-xiaomomi-plugins) - [Dance | CustomFishing | XiaoMoMi Plugins](#dance-customfishing-xiaomomi-plugins) - [mcMMO Treasure | CustomFishing | XiaoMoMi Plugins](#mcmmo-treasure-customfishing-xiaomomi-plugins) - [RealisticSeasons | CustomFishing | XiaoMoMi Plugins](#realisticseasons-customfishing-xiaomomi-plugins) - [EcoItems | CustomFishing | XiaoMoMi Plugins](#ecoitems-customfishing-xiaomomi-plugins) - [Accruate click | CustomFishing | XiaoMoMi Plugins](#accruate-click-customfishing-xiaomomi-plugins) - [Side Money Bar | CustomNameplates | XiaoMoMi Plugins](#side-money-bar-customnameplates-xiaomomi-plugins) - [Basic Operations | CustomNameplates | XiaoMoMi Plugins](#basic-operations-customnameplates-xiaomomi-plugins) - [BetonQuest 3.0 | CustomFishing | XiaoMoMi Plugins](#betonquest-3-0-customfishing-xiaomomi-plugins) - [TypeWriter | CustomFishing | XiaoMoMi Plugins](#typewriter-customfishing-xiaomomi-plugins) - [ClueScrolls | CustomFishing | XiaoMoMi Plugins](#cluescrolls-customfishing-xiaomomi-plugins) - [Hold v2 | CustomFishing | XiaoMoMi Plugins](#hold-v2-customfishing-xiaomomi-plugins) - [πŸ…ΏοΈ Placeholders | CustomNameplates | XiaoMoMi Plugins](#-placeholders-customnameplates-xiaomomi-plugins) - [Stamina Bar | CustomNameplates | XiaoMoMi Plugins](#stamina-bar-customnameplates-xiaomomi-plugins) - [ExecutableItems | CustomFishing | XiaoMoMi Plugins](#executableitems-customfishing-xiaomomi-plugins) - [πŸŽ‰ Event | CustomFishing | XiaoMoMi Plugins](#-event-customfishing-xiaomomi-plugins) - [EcoEnchants | CustomFishing | XiaoMoMi Plugins](#ecoenchants-customfishing-xiaomomi-plugins) - [Quests | CustomFishing | XiaoMoMi Plugins](#quests-customfishing-xiaomomi-plugins) - [Zaphkiel | CustomFishing | XiaoMoMi Plugins](#zaphkiel-customfishing-xiaomomi-plugins) - [πŸ›’ Market | CustomFishing | XiaoMoMi Plugins](#-market-customfishing-xiaomomi-plugins) - [πŸ† Loot | CustomFishing | XiaoMoMi Plugins](#-loot-customfishing-xiaomomi-plugins) - [✨ Effect | CustomFishing | XiaoMoMi Plugins](#-effect-customfishing-xiaomomi-plugins) - [🧭 How to Configure Each File | CustomFishing | XiaoMoMi Plugins](#-how-to-configure-each-file-customfishing-xiaomomi-plugins) - [🐚 Command & Permission | CustomFishing | XiaoMoMi Plugins](#-command-permission-customfishing-xiaomomi-plugins) - [Supported levelers | CustomFishing | XiaoMoMi Plugins](#supported-levelers-customfishing-xiaomomi-plugins) - [❓️ Common questions | CustomFishing | XiaoMoMi Plugins](#-common-questions-customfishing-xiaomomi-plugins) - [βœ… Condition | CustomNameplates | XiaoMoMi Plugins](#-condition-customnameplates-xiaomomi-plugins) - [BattlePass | CustomFishing | XiaoMoMi Plugins](#battlepass-customfishing-xiaomomi-plugins) - [Events | CustomFishing | XiaoMoMi Plugins](#events-customfishing-xiaomomi-plugins) - [⌨️ API | CustomFishing | XiaoMoMi Plugins](#-api-customfishing-xiaomomi-plugins) - [πŸ“Š Import & Export Data | CustomFishing | XiaoMoMi Plugins](#-import-export-data-customfishing-xiaomomi-plugins) - [AuraSkills | CustomFishing | XiaoMoMi Plugins](#auraskills-customfishing-xiaomomi-plugins) - [Integration Provider | CustomFishing | XiaoMoMi Plugins](#integration-provider-customfishing-xiaomomi-plugins) - [πŸ—Ώ Totem | CustomFishing | XiaoMoMi Plugins](#-totem-customfishing-xiaomomi-plugins) - [πŸ“ CustomNameplates Update: Version 2.4 to 3.0 Overview | CustomNameplates | XiaoMoMi Plugins](#-customnameplates-update-version-2-4-to-3-0-overview-customnameplates-xiaomomi-plugins) - [πŸ… Competition | CustomFishing | XiaoMoMi Plugins](#-competition-customfishing-xiaomomi-plugins) - [βš–οΈ Weight System [MUST READ] | CustomFishing | XiaoMoMi Plugins](#-weight-system-must-read-customfishing-xiaomomi-plugins) - [Basic Operations | CustomFishing | XiaoMoMi Plugins](#basic-operations-customfishing-xiaomomi-plugins) - [πŸ’ͺ Action | CustomFishing | XiaoMoMi Plugins](#-action-customfishing-xiaomomi-plugins) - [πŸ…ΏοΈ Placeholder & Expression | CustomFishing | XiaoMoMi Plugins](#-placeholder-expression-customfishing-xiaomomi-plugins) - [🎁 Item | CustomFishing | XiaoMoMi Plugins](#-item-customfishing-xiaomomi-plugins) - [βœ… Condition | CustomFishing | XiaoMoMi Plugins](#-condition-customfishing-xiaomomi-plugins) - [Custom Games | CustomFishing | XiaoMoMi Plugins](#custom-games-customfishing-xiaomomi-plugins) - [Custom Hook Logics | CustomFishing | XiaoMoMi Plugins](#custom-hook-logics-customfishing-xiaomomi-plugins) --- # 🎣 CustomFishing | CustomFishing | XiaoMoMi Plugins [🧭 How to Configure Each Filechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file) [❓️ Common questionschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions) [βš–οΈ Weight System \[MUST READ\]chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read) [πŸ“„ Formatchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format) [βœ… Conditionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition) [πŸ’ͺ Actionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/action) [πŸ…ΏοΈ Placeholder & Expressionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression) [🀝 Compatibilitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility) [🐚 Command & Permissionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/command-and-permission) [πŸ“Š Import & Export Datachevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/import-and-export-data) [⌨️ APIchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api) [Next🧭 How to Configure Each Filechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ˜‡ Click Here to Start Your Jounery | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3662564654-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FWT6euwklzkUYGv9WxglD%252Fuploads%252FJCOvFu0MrBWTI6mLRLkk%252Fimage.png%3Falt%3Dmedia%26token%3Dccd75e88-b52e-4c36-b224-5c2505bf87bb&width=768&dpr=3&quality=100&sign=e7a0752&sv=2) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # βž•οΈ Add New Contents | CraftEngine | XiaoMoMi Plugins [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#resources) Resources ---------------------------------------------------------------------------------------------------------------------------------- In the root directory of the plugin (`plugins/CraftEngine/resources/`), all packages are stored, and the names of these packages are arbitrary. Each package consists of two folders and one YAML file. The folders contain configurations and resource packs respectively, while the YAML file holds the metadata for the package. Copy plugins β”” CraftEngine β”” resources β”œ pack_1 β”œ pack_2 β”” pack_3 β”œ configuration β”œ resourcepack β”” pack.yml ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2FOgvQ1fEJPROp7131PPlK%2Fblobs%2Fk0BUh80VNuR2bSJvfjhO%2Fimage.png&width=768&dpr=3&quality=100&sign=5412ebbb&sv=2) [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#pack-meta-file) Pack Meta File -------------------------------------------------------------------------------------------------------------------------------------------- The Meta File is a YAML document that records some fundamental information. Among its entries, the most significant is the `namespace`. circle-info The effect of a namespace is confined to the second-level nodes under the root node in the YAML hierarchy, exemplified here by "default:palm\_leaves " and "palm\_leaves". Provided that a namespace is specified in `pack.yml`, if a namespace is not explicitly designated, the package namespace will be used by default. is equivalent to [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#configuration) Configuration ------------------------------------------------------------------------------------------------------------------------------------------ The configuration files are stored in the following folder. The configuration file format supports both json and yml. Moreover, you can create as many subdirectories as you like under the configuration. circle-check In YAML configuration, the following format is not allowed: Therefore, you need to add `# + any identifier` after the configuration section name, which allows you to configure multiple sections of the same type within a single YAML file. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#resoucepack) ResoucePack -------------------------------------------------------------------------------------------------------------------------------------- Please ensure that the directory structure of your resource pack is as shown in the figure below, otherwise, it may lead to some merging issues. The overlay\_folder, pack.mcmeta, and pack.png files are not mandatory. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#version-based-configs) Version-Based Configs ---------------------------------------------------------------------------------------------------------------------------------------------------------- CraftEngine lets you add version-based configs for different server versions. Just use keys formatted like `$$version` in your YAML file. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#example-1-value-selection) **Example 1: Value Selection** #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#example-2-block-merging) **Example 2: Block Merging** [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#debug) Debug -------------------------------------------------------------------------------------------------------------------------- Enable debug mode for this configuration by adding a `debug` option [PreviousCraftEnginechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine) [Next🐘 Entitieschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities) Last updated 10 months ago * [Resources](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#resources) * [Pack Meta File](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#pack-meta-file) * [Configuration](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#configuration) * [ResoucePack](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#resoucepack) * [Version-Based Configs](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#version-based-configs) * [Debug](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents#debug) sun-brightdesktopmoon Copy author: XiaoMoMi version: 0.0.1 description: Default Assets for CraftEngine namespace: default enable: true # set `false` to disable this pack Copy blocks: default:palm_leaves: behavior: type: leaves_block Copy blocks: palm_leaves: behavior: type: leaves_block Copy plugins β”” CraftEngine β”” resources β”” pack β”” configuration Copy items: default:topaz_helmet: template: default:topaz_armor arguments: part: helmet slot: head items: default:topaz_boots: template: default:topaz_armor arguments: part: boots slot: feet Copy items#0: default:topaz_helmet: template: default:topaz_armor arguments: part: helmet slot: head items#1: default:topaz_boots: template: default:topaz_armor arguments: part: boots slot: feet Copy plugins β”” CraftEngine β”” resources β”” pack β”” resourcepack β”œ assets β”œ overlay_folder β”œ pack.mcmeta β”” pack.png Copy # my_config.yml settings: status: $$1.21.4: "enabled" $$1.20.1: "disabled" max_players: $$1.19: 50 $$1.20~1.21.3: 80 $$>=1.21.4: 100 allowed_worlds: $$1.18: ["world", "world_nether"] $$fallback: ["default"] # Fallback if no version matches Copy # other_config.yml server_properties: motd: "A generic server" online_mode: true # This is a normal map, but contains a versioned block # It's not a value selector because it has regular keys (motd, online_mode) $$1.21.4: # This block gets merged into server_properties motd: "A 1.21.4 Server!" # Overrides the generic motd new_feature_enabled: true # Adds a new key Copy items#0: default:topaz_helmet: debug: true template: default:topaz_armor arguments: part: helmet slot: head sun-brightdesktopmoon --- # CraftEngine | XiaoMoMi Plugins triangle-exclamation This wiki has been outdated. Visit our new wiki here: [https://xiao-momi.github.io/craft-engine-wiki/arrow-up-right](https://xiao-momi.github.io/craft-engine-wiki/) This wiki has been outdated. Visit our new wiki here: [https://xiao-momi.github.io/craft-engine-wiki/arrow-up-right](https://xiao-momi.github.io/craft-engine-wiki/) This wiki has been outdated. Visit our new wiki here: [https://xiao-momi.github.io/craft-engine-wiki/arrow-up-right](https://xiao-momi.github.io/craft-engine-wiki/) [Nextβž•οΈ Add New Contentschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents) Last updated 8 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # 🐘 Entities | CraftEngine | XiaoMoMi Plugins [πŸͺ‘ Furniturechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture) [Previousβž•οΈ Add New Contentschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents) [NextπŸͺ‘ Furniturechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸͺ‘ Furniture | CraftEngine | XiaoMoMi Plugins triangle-exclamation Please note that reloading the plugin will not affect furniture that already placed! You will need to restart the server or reload the chunks to apply new configurations to existing furniture. The plugin utilizes caching to enhance the performance of the furniture. Forcibly reloading furniture that is already loaded on the server without caution could have a significant impact on the server's stability. In the future, the plugin may consider introducing related unsafe flags for forced reloading, but certainly not at this moment. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture#sections-to-configure) Sections to Configure ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- A complete furniture configuration contains the following sections: * behavior [πŸ•ΉοΈ Furniture Behaviorschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture/furniture-behaviors) * settings [βš™οΈ Furniture Settingschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture/furniture-settings) * placement [πŸ“ Furniture Placementchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture/furniture-placement) * loot * events [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture#how-to-bind-items) How to Bind Items --------------------------------------------------------------------------------------------------------------------------------------------------------------------- [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture#full-config-overview) Full Config Overview --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [Previous🐘 Entitieschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities) [Nextβš™οΈ Furniture Settingschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture/furniture-settings) Last updated 11 months ago * [Sections to Configure](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture#sections-to-configure) * [How to Bind Items](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture#how-to-bind-items) * [Full Config Overview](https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/add-new-contents/entities/furniture#full-config-overview) sun-brightdesktopmoon Copy furniture: default:bench: settings: item: default:bench sounds: break: minecraft:block.bamboo_wood.break place: minecraft:block.bamboo_wood.place placement: ground: rules: # ANY / FOUR / EIGHT / SIXTEEN / NORTH / EAST / WEST / SOUTH rotation: EIGHT # ANY / CENTER / HALF / QUARTER / CORNER alignment: CENTER elements: - item: default:bench display-transform: NONE billboard: FIXED position: 0.5,0,0 translation: 0,0.5,0 hitboxes: - position: 0,0,0 width: 1 height: 1 interactive: true seats: - 0,0,-0.1 0 - position: 1,0,0 width: 1 height: 1 interactive: true seats: - 1,0,-0.1 0 loot: template: loot_table:normal arguments: item: default:bench sun-brightdesktopmoon --- # πŸ… CustomCrops | CustomCrops | XiaoMoMi Plugins [❓️ Common Questionschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions) [πŸ“„ Formatchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format) [πŸ’ͺ Actionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/action) [βœ… Conditionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/condition) [πŸ…ΏοΈ Placeholder & Expressionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression) [πŸ—‘οΈ Random tick vs Scheduled tickchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/random-tick-vs-scheduled-tick) [🀝 Compatibilitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility) [⚑️ Unsafe Commandschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands) [⌨️ APIchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api) [Next❓️ Common Questionschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions) sun-brightdesktopmoon sun-brightdesktopmoon --- # ❓️ Common Questions | CustomCrops | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q1-how-to-use-vanilla-farmland-as-pot) Q1: How to use vanilla farmland as pot Now you have to make a choose between plugin's watering system(β‘ ) and vanilla moisture system(β‘‘). β‘  If you want to use plugin's watering & fertilizer system. It's necessary to disable vanilla moisture in config.yml to prevent conflicts Copy # Vanilla farmland settings vanilla-farmland: # Disable vanilla farmland moisture mechanics # This option exists because some users prefer to use the vanilla farmland but the water system conflicts with the vanilla one disable-moisture-mechanic: true Then edit the default.yml at /contents/pots folder Copy default: # Maximum water storage capacity max-water-storage: 7 # The most basic settings base: # Pot models dry: minecraft:farmland[moisture=0] wet: minecraft:farmland[moisture=7] # Does the pot absorb raindrop absorb-rainwater: true # Does nearby water make the pot wet absorb-nearby-water: true β‘‘ If you prefer the vanilla farmland mechanics, you can just disable all the watering mechanics in CustomCrops. What you need to do is to edit the default.yml under /contents/pots folder. Then, you have to make changes on each crop's grow-conditions otherwise they won't grow on vanilla farmlands because `water-more-than` checks the water provided by the plugin while `moisture-more-than` checks the moisture of vanilla farmland block data. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q2-i-cant-use-any-of-the-plugins-functions) Q2: I can't use any of the plugin's functions Make sure that your world is not in the blacklist / Make sure that your world is in whitelist ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q3-how-to-make-watering-cans-damageable) Q3: How to make watering-cans damageable Let's take ItemsAdder as example, what you need to do is to set the material to a damageable item for instance "WOODEN\_SWORD". CustomCrops would handle the durability system for you so you don't need to do anything else! ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252F2qDziUgtNFV4QNzEwLl8%252Fimage.png%3Falt%3Dmedia%26token%3D15fa950c-04cf-424b-9aaf-a541f845bbb0&width=768&dpr=3&quality=100&sign=d31d8afa&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q4-i-want-to-use-items-from-other-plugins-for-seeds-drops) Q4: I want to use items from other plugins for seeds/drops Firstly, add the plugin's name in config.yml. You can get all the compatible plugins on page: [🀝 Compatibilitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility) Then you can use MMOItems anywhere for instance ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q5-how-to-apply-levelers-level-to-the-drop-amount-of-crops-how-can-i-get-exp-for-the-leveler-from-ha) Q5: How to apply leveler's level to the drop amount of crops? / How can I get exp for the leveler from harvesting the crops? / How can I set level requirements for planting a crop? Firstly check if that plugin is compatible on [Supported levelers](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/supported-levelers) Then register that placeholder into CustomCrops Now you are able to use the placeholder and expression in the amount of drops To receive exp from harvesting, you have to add an action in break/interact event section To use the level requirements for planting, you can follow this example ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q6-how-does-protect-original-lore-work) Q6: How does "protect-original-lore" work? You can find this option if you check the config.yml carefully Take ItemsAdder as example ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FSiL5FfMnl4rp39uPec22%252Fimage.png%3Falt%3Dmedia%26token%3Dcd779b8f-e4e9-4e3c-bc66-067d427920a4&width=768&dpr=3&quality=100&sign=1d074ecb&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FwD5y9ufEopV9igjbBeqy%252Fimage.png%3Falt%3Dmedia%26token%3D4bfcb869-dcbc-43c6-abdf-df4b4fe60f63&width=768&dpr=3&quality=100&sign=a0ba3641&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FVlAbFK2jXqdLHF5mRgdl%252Fimage.png%3Falt%3Dmedia%26token%3D07126563-0e01-401f-bc7c-9afa4a7196f0&width=768&dpr=3&quality=100&sign=e671cc04&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q7-i-cant-plant-crops) Q7: I can't plant crops Situation1: I can hear the sound of planting and seed is consumed If you are using ItemsAdder and `FURNITURE` mode, open ItemsAdder's config.yml and set this value higher If you are using ItemsAdder and `BLOCK` mode, open ItemsAdder's config.yml and set Situation2: Nothing happened and you have already planted a lot of crops Open CustomCrops' config.yml ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q8-how-to-notify-players-if-they-cant-plant-more-crops) Q8: How to notify players if they can't plant more crops? In pot/crop/sprinkler's configs, there's an event type called `reach_limit` where you can add custom actions. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q9-how-to-disable-bone-meal-for-crops) Q9: How to disable bone meal for crops? Remove the `custom-bone-meal` section from the crop configs for instance ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q10-how-to-use-vanilla-crops-on-pots) Q10: How to use vanilla crops on pots? Firstly you have to disable vanilla mechanics for a certain crop by adding the block type in config.yml. This would prevent the vanilla crop from being ticked and dropping items. Then create a new file under /contents/crops/ folder for instance `wheat.yml` ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252Fo5xQx1rDrEgGLAITMlFt%252Fimage.png%3Falt%3Dmedia%26token%3Db3792643-1a81-4108-a145-c3313b72b1ca&width=768&dpr=3&quality=100&sign=5a2fb1dd&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q11-how-to-use-vanilla-items-as-drops-seeds) Q11: How to use vanilla items as drops/seeds? Just use capital letter for instance "APPLE" ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q12-how-to-use-other-vanilla-blocks-as-pots) Q12: How to use other vanilla blocks as pots? To continue using the plugin's water and fertilizer mechanics, configure it as follows: To disable the plugin's mechanisms, simply configure it as follows: ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q13-how-to-let-different-pots.-crops-have-different-tick-modes) Q13: How to let different pots./crops have different tick modes Firstly set the tick mode to `ALL` in config.yml Then configure the detailed mode for specific pots in their own configs which can be found on [πŸͺ΄ Potchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/pot) [🌽 Cropchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/crop) [PreviousπŸ… CustomCropschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops) [NextπŸ“„ Formatchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format) Last updated 1 year ago * [Q1: How to use vanilla farmland as pot](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q1-how-to-use-vanilla-farmland-as-pot) * [Q2: I can't use any of the plugin's functions](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q2-i-cant-use-any-of-the-plugins-functions) * [Q3: How to make watering-cans damageable](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q3-how-to-make-watering-cans-damageable) * [Q4: I want to use items from other plugins for seeds/drops](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q4-i-want-to-use-items-from-other-plugins-for-seeds-drops) * [Q5: How to apply leveler's level to the drop amount of crops? / How can I get exp for the leveler from harvesting the crops? / How can I set level requirements for planting a crop?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q5-how-to-apply-levelers-level-to-the-drop-amount-of-crops-how-can-i-get-exp-for-the-leveler-from-ha) * [Q6: How does "protect-original-lore" work?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q6-how-does-protect-original-lore-work) * [Q7: I can't plant crops](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q7-i-cant-plant-crops) * [Q8: How to notify players if they can't plant more crops?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q8-how-to-notify-players-if-they-cant-plant-more-crops) * [Q9: How to disable bone meal for crops?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q9-how-to-disable-bone-meal-for-crops) * [Q10: How to use vanilla crops on pots?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q10-how-to-use-vanilla-crops-on-pots) * [Q11: How to use vanilla items as drops/seeds?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q11-how-to-use-vanilla-items-as-drops-seeds) * [Q12: How to use other vanilla blocks as pots?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q12-how-to-use-other-vanilla-blocks-as-pots) * [Q13: How to let different pots./crops have different tick modes](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions#q13-how-to-let-different-pots.-crops-have-different-tick-modes) sun-brightdesktopmoon Copy default: vanilla-farmland: true Copy water_condition: type: water-more-than value: 0 -----> moisture_condition: type: moisture-more-than value: 0 Copy # World settings worlds: # This is designed for servers that using an independent folder for worlds # Especially for realm systems absolute-world-folder-path: '' # A list of worlds that would decide where the plugin mechanisms take effect # Mode: whitelist/blacklist mode: blacklist list: - blacklist_world Copy items: watering_can_1: display_name: display-name-watering_can_1 resource: generate: false material: WOODEN_SWORD model_path: item/wateringcans/watering_can_1 item_flags: - HIDE_ATTRIBUTES Copy item-detection-order: - MMOItems Copy # Seed of the crop seed: MMOItems:MATERIAL:TOMATO_SEEDS Copy # Drop items quality_crop_action: type: quality-crops value: min: 1 max: 4 items: 1: MMOItems:MATERIAL:TOMATO 2: MMOItems:MATERIAL:TOMATO_SILVER_STAR 3: MMOItems:MATERIAL:TOMATO_GOLDEN_STAR Copy placeholder-register: '{skill-level}': '%levelplugin_farming%' Copy # Drop items quality_crop_action: type: quality-crops value: min: "1 + {skill-level} * 0.1" max: "4 + {skill-level} * 0.1" ... Copy action_exp: type: plugin-exp value: plugin: AureliumSkills # AureliumSkills is not AuraSkills target: FARMING # The target is decided by the leveler you are using exp: 100 chance: 1 Copy requirements: plant: requirement_0: type: plugin-level value: plugin: AureliumSkills # AureliumSkills is not AuraSkills target: FARMING # The target is decided by the leveler you are using level: 10 not-met-actions: message_action: type: message value: "This seeds require 10+ farming skill levels" requirement_1: type: season value: - Spring - Autumn not-met-actions: message_action: type: message value: "It's not a good season to plant tomato" Copy # Whether to protect the original lore of the item # This uses the scoreboard component to identify the plugin's lore, # which may conflict with some plugins that still use SpigotAPI#ItemMeta. protect-original-lore: false Copy items: watering_can_1: display_name: display-name-watering_can_1 resource: generate: false material: WOODEN_SWORD model_path: item/wateringcans/watering_can_1 item_flags: - HIDE_ATTRIBUTES lore: - '1111111111' - '2222' - '333333' Copy protect-original-lore: true Copy protect-original-lore: false Copy entities: max-furniture-vehicles-per-chunk: 30 Copy # IA 3.6 disable-REAL_WIRE: false # IA 4.0+ wire: true Copy # Set it to a higher value or -1 max-per-chunk: 150 Copy events: reach_limit: actionbar_action: type: actionbar value: '[X] You are not allowed to plant more crops' Copy # Custom settings for bone meal use custom-bone-meal: {} Copy # Specify block types that should be overridden by the plugin # Some common crops: WHEAT/CARROTS/POTATOES/BEETROOTS/SWEET_BERRY_BUSH override-vanilla-blocks: - WHEAT Copy # Unique identifier for the crop wheat: # Type of the item type: BLOCK # Specifies which pots the crop can be planted on pot-whitelist: - default # The seed item used to plant the crop seed: WHEAT_SEEDS # Event settings for actions like planting and breaking events: plant: # Plays a hand-swing animation when planting swing_hand_action: type: swing-hand value: true # Plays a sound when planting the crop sound_action: type: sound value: source: player key: minecraft:item.hoe.till volume: 1 pitch: 1 break: # Plays a sound when breaking the crop sound_action: type: sound value: source: player key: minecraft:block.crop.break volume: 1 pitch: 1 # Maximum growth stage for the crop max-points: 7 # Actions and settings for each growth stage of the crop points: 0: model: minecraft:wheat[age=0] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 1 1: model: minecraft:wheat[age=1] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 1 2: model: minecraft:wheat[age=2] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 1 3: model: minecraft:wheat[age=3] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 1 4: model: minecraft:wheat[age=4] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 1 5: model: minecraft:wheat[age=5] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 1 6: model: minecraft:wheat[age=6] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 1 7: model: minecraft:wheat[age=7] events: break: action_1: type: drop-item value: ignore-fertilizer: true item: WHEAT_SEEDS min: 1 max: 2 action_2: type: drop-item value: ignore-fertilizer: true item: WHEAT min: 1 max: 1 grow-conditions: {} death-conditions: {} custom-bone-meal: bone_meal_1: item: BONE_MEAL dispenser: true chance: 2: 0.5 1: 1 actions: swing_action: type: swing-hand value: true particle_action: type: particle value: particle: VILLAGER_HAPPY x: 0.5 y: 0.5 z: 0.5 count: 5 offset-x: 0.3 offset-y: 0.3 offset-z: 0.3 sound_action: type: sound value: source: player key: minecraft:item.bone_meal.use volume: 1 pitch: 1 Copy seed: APPLE Copy # Unique identifier for the pot default: # Maximum capacity for storing water in the pot max-water-storage: 5 # Basic settings for pot appearance and behavior base: # Models for the pot's appearance dry: minecraft:xxx[xxx=xxx] # Model ID when the pot is dry wet: minecraft:xxx[xxx=xxx] # Model ID when the pot is wet Copy # Unique identifier for the pot grass_pot: vanilla-blocks: - minecraft:grass_block[snowy=false] Copy pot: # RANDOM_TICK / SCHEDULED_TICK / ALL mode: ALL crop: # RANDOM_TICK / SCHEDULED_TICK / ALL mode: ALL sun-brightdesktopmoon --- # πŸ“„ Format | CustomCrops | XiaoMoMi Plugins [✏️ Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/text) [🌽 Cropchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/crop) [πŸ’¦ Sprinklerchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/sprinkler) [🚰 Watering Canchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/watering-can) [πŸͺ΄ Potchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/pot) [πŸ’© Fertilizerchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/fertilizer) [βš™οΈ config.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/config.yml) [Previous❓️ Common Questionschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/common-questions) [Next✏️ Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/text) sun-brightdesktopmoon sun-brightdesktopmoon --- # 🚰 Watering Can | CustomCrops | XiaoMoMi Plugins Let's take `watering_can_1` as an example to configure the watering can settings **Unique Identifier for Your Watering Can**: Start by naming your watering-can under a unique identifier like `watering_can_1`. This makes it easy to reference and customize later on. **Assign a Unique Identifier**: Begin by setting a unique `item` identifier for your watering can using ItemsAdder or Oraxen. For instance, `watering_can_1` uniquely identifies this particular can, allowing it to be easily referenced throughout your game. Copy # Unique item identifier for ItemsAdder/Oraxen item: watering_can_1 **Customize the Watering Can's Appearance**: You have the option to customize how the watering can looks at different water levels. Uncomment the `appearance` section and assign `CustomModelData` values to visually differentiate between an empty, partially filled, or fully filled watering can. This is a great way to add visual feedback for players on the can's status. Copy # Optional appearance settings for watering cans based on water capacity # Uncomment and customize CustomModelData if you want different appearances for different water levels #appearance: # 0: 1000 # CustomModelData for empty can # 1: 1001 # CustomModelData for partially filled can # 2: 1002 # CustomModelData for more filled can # 3: 1003 # CustomModelData for fully filled can **Set the Water Capacity**: Define the maximum amount of water your watering can hold with the `capacity` parameter. Here, it is set to `3`, meaning the can can store up to three units of water at a time. This capacity controls how long the can can be used before needing a refill. Copy # Maximum amount of water the watering can can store capacity: 3 **Determine Water Usage per Use**: The `water` parameter specifies the amount of water dispensed each time the can is used. Setting this to `1` means that each use of the watering can will consume one unit of water and add `1` unit of water to the pot. Copy # Amount of water added to pot water: 1 **Define the Effective Watering Range**: Customize how far the water reaches when used by setting the `effective-range` parameters. `Width` and `length` define a rectangular area around the player where the water will be effective, in this case, a 1x1 area directly in front of the player. **Decide on Unlimited or Limited Water Supply**: With `infinite` set to `false`, the watering-can has a finite water supply. If you want a limitless watering-can, change this to `true`! **Set Refill Methods**: Define how players can refill the watering can by configuring the `fill-method`. In `method_1`, the player can refill the can by interacting with a `WATER` block (like a water source or well). The `amount` specifies that each interaction adds `1` unit of water to the can. This feature allows you to create interactive water sources throughout your game world. **Specify Compatible Planting Pots**: Use the `pot-whitelist` to specify which types of planting pots the watering can will work with. By listing `default`, you ensure that the can is compatible with the basic pot type, but you could add more pot types for variety. **Allow Interaction with Sprinklers**: If you want your watering can to be used for filling up sprinklers, list the compatible sprinkler IDs under `sprinkler-whitelist`. In this configuration, the can can fill `sprinkler_1`, `sprinkler_2`, and `sprinkler_3`, extending its functionality. **Enable Dynamic Descriptions**: Dynamic lore adds a layer of immersion by displaying real-time information about the can's status. By enabling `dynamic-lore`, the description will change based on the water level. Use placeholders like `{water_bar}` to visually represent the water level, `{current}` for the current water amount, and `{storage}` for maximum capacity. This ensures players always know the state of their watering can at a glance. **Customize the Water Level Display Bar**: The `water-bar` configuration allows you to create a unique visual indicator for the water level using custom characters. This display provides a quick and visually appealing way to check how much water is left in the can. **Set Up Events**: The `events` section is where the real magic happens. Here, you define how the game responds to different interactions with the watering can. Available events: `full`/`add_water`/`no_water`/`consume_water`/`wrong_pot`/`wrong_sprinkler` **Set Up Requirements**: Under `requirements`, you can configure the conditions player have to meet before using the watering-can. [PreviousπŸ’¦ Sprinklerchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/sprinkler) [NextπŸͺ΄ Potchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/pot) Last updated 1 year ago sun-brightdesktopmoon Copy # The effective range of the watering can when used effective-range: width: 1 # The width of the area affected length: 1 # The length of the area affected Copy # Indicates whether the watering-can has unlimited water supply infinite: false Copy fill-method: # Custom refill method configuration method_1: target: WATER # The block or object that provides water (e.g., minecraft:block_id) amount: 1 # Amount of water added per refill Copy # Specify which types of planting pots the watering can can be used with pot-whitelist: - default # Default pot type allowed Copy # Allow the watering can to fill compatible sprinklers sprinkler-whitelist: - sprinkler_1 - sprinkler_2 - sprinkler_3 Copy # Dynamic lore settings for the watering can's description dynamic-lore: enable: true # Enable or disable dynamic lore based on water level # Lore text that will be displayed dynamically # Available placeholders: # {water_bar}: Visual representation of water level # {current}: Current amount of water # {storage}: Maximum water storage capacity lore: - '{water_bar}' - 'Right-click on water to refill the watering can.' Copy # Configuration for the water level display bar water-bar: left: '뀂' # Left cap of the water bar full: '뀁뀃' # Segment representing full water level empty: '뀁뀄' # Segment representing empty water level right: '뀁뀅' # Right cap of the water bar Copy # Event settings to handle various actions with the watering can events: # Event triggered when there's no water left in the watering can no_water: sound_action: type: sound value: key: "minecraft:item.bundle.insert" # Sound to play source: 'player' # Sound source volume: 1 pitch: 1 actionbar_action: type: actionbar value: '[X] Water has been used out' # Message displayed on action bar # Event triggered when water is consumed from the watering can consume_water: sound_action: type: sound value: key: "minecraft:block.water.ambient" # Sound of water being consumed source: 'player' volume: 1 pitch: 1 actionbar_action: type: actionbar value: '{water_bar}' # Display updated water bar # Event triggered when water is added to the watering can add_water: particle_action: type: particle value: particle: WATER_SPLASH # Particle effect for adding water x: 0.5 y: 1.3 z: 0.5 count: 5 sound_action: type: sound value: key: "minecraft:item.bucket.empty" # Sound to play when filling the can source: 'player' volume: 1 pitch: 1 actionbar_action: type: actionbar value: '{water_bar}' # Update water bar display Copy requirements: requirement_1: type: permission value: xxx.xxx sun-brightdesktopmoon --- # 🌽 Crop | CustomCrops | XiaoMoMi Plugins Let's take `tomato` as an example to configure the crop settings **Unique Identifier for Your Crop**: Start by naming your crop under a unique identifier like `tomato`. This makes it easy to reference and customize later on. **Define the Crop Type**: Set the `type` to either `BLOCK` or `FURNITURE`. For "tomato", it is set to `BLOCK`. This setting affects all custom item types that appear in the entire configuration. But you can also set the type of an item individually through some additional configuration. Copy # Item type # BLOCK / FURNITURE type: BLOCK **Set Planting Restrictions**: Use the `pot-whitelist` to specify which pots are allowed for planting. The "tomato" crop can only be planted in the default pot. If you modify the configuration of the pot, please be sure to modify this configuration simultaneously. Copy # The crop can only be planted on whitelisted pots pot-whitelist: - default **Control Crop's Tick Mode** Copy # Sometimes you may have multiple crops configured, # and you want the pots to have different tick modes. # You can change the tick mode to ALL in config.yml # and then configure it separately here. ignore-random-tick: false ignore-scheduled-tick: true **Configure Seed Information**: The `seed` field identifies the item used to plant the crop. Here, `tomato_seeds` is the seed for the tomato crop. Copy # Seed of the crop seed: tomato_seeds **Manage Rotation (FURNITURE Mode Only)**: `random-rotation` controls whether the crop rotates randomly when planted. This only applies if the `type` is `FURNITURE`. **Set Basic Requirements**: Define conditions under `requirements` for this crop. For example, the "tomato" can only be planted in Spring or Autumn, and an action bar message is displayed if these conditions are not met. **Configure Event Settings**: Customize crop events under `events` for actions like planting or breaking. For instance, when planting a "tomato," a sound (`minecraft:item.hoe.till`) is played, and a hand-swing animation occurs. Available events for crops: `reach_limit`/`plant`/`break`/`interact`/`death` **Define Growth Stages and Models**: Use the `points` section to outline crop growth stages. For each stage, specify a model (appearance) and actions that occur, such as seed dropping or hologram adjustments. Available events for crops: `grow`/`break`/`interact` **Customize Growth and Death Conditions**: Use `grow-conditions` to set conditions for crop growth, such as the season or water level. Similarly, `death-conditions` determine when a crop should die, like during a crow attack or in an unsuitable season. **Define Custom Bone Meal Effects**: Under `custom-bone-meal`, configure special effects and actions triggered by using bone meal, such as particles, sounds, or the chance of growth. [Previous✏️ Textchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/text) [NextπŸ’¦ Sprinklerchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/sprinkler) Last updated 1 year ago sun-brightdesktopmoon Copy # Only works in FURNITURE mode random-rotation: true Copy # Break/Plant/Interact requirements requirements: interact: {} break: {} plant: requirement_1: type: season value: - Spring - Autumn not-met-actions: message_action: type: message value: '[X] It''s not a good season to plant tomato' Copy events: break: {} interact: {} death: {} reach_limit: actionbar_action: type: actionbar value: '[X] You are not allowed to plant more crops' plant: # Swing the main hand swing_hand_action: type: swing-hand value: true # Send sound while planting sound_action: type: sound value: source: player key: minecraft:item.hoe.till volume: 1 pitch: 1 Copy # This determines the maximum stages for crops to grow max-points: 6 Copy # Actions and settings for each growth stage of the crop points: 0: # Model representing the crop at this growth stage model: tomato_stage_1 # Adjusts hologram position to match the crop model's height hologram-offset-correction: 0.2 # Set the type for this stage if it's different from the global type set above type: BLOCK # Break/Interact requirements for this stage requirements: break: ... interact: ... # Events triggered when the crop is broken at this stage events: grow: {} interact: {} break: # 30% chance to drop tomato seeds when broken action_1: type: drop-item value: ignore-fertilizer: true item: tomato_seeds min: 1 max: 1 chance: 0.3 Copy # Conditions under which the crop can grow grow-conditions: default: point: 1 conditions: season_condition: type: suitable_season value: - Spring - Autumn water_condition: type: water_more_than value: 0 Copy # Conditions that may cause the crop to die death-conditions: no_water: # Custom model for the death stage, triggered by lack of water model: crop_stage_death conditions: '&&': condition_1: type: water_less_than value: 1 condition_2: type: random value: 0.7 unsuitable_season: # Crop dies in unsuitable seasons model: crop_stage_death conditions: condition_1: type: unsuitable_season value: - Winter crow_attack: # Crop removal due to crow attack conditions: condition_1: type: crow_attack value: chance: 0.005 fly-model: crow_fly stand-model: crow_stand # Delay before the crop is removed after a crow attack delay: 150 Copy # Custom settings for bone meal use custom-bone-meal: bone_meal_1: item: BONE_MEAL # Allows use with a dispenser dispenser: true chance: 2: 0.2 1: 0.6 actions: swing_action: type: swing-hand value: true particle_action: type: particle value: particle: VILLAGER_HAPPY x: 0.5 y: 0.5 z: 0.5 count: 5 offset-x: 0.3 offset-y: 0.3 offset-z: 0.3 sound_action: type: sound value: source: player key: minecraft:item.bone_meal.use volume: 1 pitch: 1 sun-brightdesktopmoon --- # πŸ’¦ Sprinkler | CustomCrops | XiaoMoMi Plugins Let's take `sprinkler_1` as an example to configure the sprinkler settings **Unique Identifier for Your Sprinkler**: Start by naming your sprinkler under a unique identifier like `sprinkler_1`. This makes it easy to reference and customize later on. **Specify the Type of Sprinkler**: The `type` parameter defines the sprinkler as `FURNITURE`, distinguishing it from block-based types and allowing for more flexibility in placement. Copy # The type of sprinkler (BLOCK or FURNITURE) type: FURNITURE **Choose a Sprinkling Pattern and Set Range**: Decide how your sprinkler sprinkles! The `working-mode` allows you to set the pattern: * `1` for a square pattern * `2` for a rhombus pattern (currently selected) * `3` for a circular pattern This adds a creative twist to your watering strategy! Copy # Sprinkling pattern mode: # 1 = square, 2 = rhombus, 3 = circle working-mode: 2 The `range` parameter specifies the reach of the sprinkler. In this example, a range of `1` covers a compact area: Copy # Sprinkler's working range: # β–‘β– β–‘ # β– β–Όβ–  # β–‘β– β–‘ range: 1 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FIG1ZvPDhZ4m5BlNwNpKK%252Fimage.png%3Falt%3Dmedia%26token%3D2017acbc-37d6-46b7-a925-c99307f85878&width=768&dpr=3&quality=100&sign=2f482957&sv=2) mode 1 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252Fap66dSjhKnk1vCSvYRtv%252Fimage.png%3Falt%3Dmedia%26token%3D515f554c-7115-4379-b730-2453648b0070&width=768&dpr=3&quality=100&sign=687f7da3&sv=2) mode 2 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FBfOsqGY2fiQgh5ouMnH0%252Fimage.png%3Falt%3Dmedia%26token%3Db71cc116-66e7-47fb-b85d-7b7cfffa6f85&width=768&dpr=3&quality=100&sign=f3a6745e&sv=2) mode 3 **Set Water Storage Capacity**: The `storage` parameter determines how much water your sprinkler can holdβ€”`4` in this case. This limits how long the sprinkler can operate before needing a refill. **Decide on Unlimited or Limited Water Supply**: With `infinite` set to `false`, the sprinkler has a finite water supply. If you want a limitless sprinkler, change this to `true`! **Control Water Usage Per Operation**: The `water` and `sprinkling` parameters dictate how much water is added to a pot and how much is consumed per sprinkling cycle, both set to `1` here for balanced watering. **Visual Representation of Your Sprinkler**: Use `3D-item` and `3D-item-with-water` to define how the sprinkler looks in both dry and watered states. This visual cue enhances the gameplay experience by reflecting the sprinkler’s status. **Optional 2D Model**: The `2D-item` is an optional parameter for those who prefer a simpler visual representation or when using 2D views in certain scenarios. **Whitelist for Planting Pots**: Ensure your sprinkler only works in specified pots by adding them to `pot-whitelist`. The example allows the default pot type. **Define Refilling Methods**: Under `fill-method`, you can get creative with how the sprinkler is refilled. For instance, using a `WATER_BUCKET` returns an empty `BUCKET`, and adds `3` units of water, while using a `POTION` returns a `GLASS_BOTTLE` and adds `1` unit. **Customize the Water Level Display**: The `water-bar` section lets you create a unique visual representation of the water level with symbols. Adjust these characters to match your game's style or preferences. **Set Up Events**: Under `events`, you can configure how the sprinkler responds to different player actions. Available events: `break`/`place`/`interact`/`work`/`add_water`/`full`/`reach_limit` **Set Up Requirements**: Under `requirements`, you can configure the conditions player have to meet before using the sprinkler. Available events: `break`/`place`/`use` [Previous🌽 Cropchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/crop) [Next🚰 Watering Canchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/watering-can) Last updated 1 year ago sun-brightdesktopmoon Copy # Maximum capacity for storing water storage: 4 Copy # Indicates whether the sprinkler has unlimited water supply infinite: false Copy # The amount of water added to pot per sprinkling operation water: 1 # The amount of water consumed per sprinkling operation sprinkling: 1 Copy # 3D model identifier for the sprinkler 3D-item: sprinkler_1 # without water 3D-item-with-water: sprinkler_1 # with water Copy # Optional 2D item model identifier 2D-item: sprinkler_1_item Copy # List of allowed planting pots where the sprinkler can function pot-whitelist: - default Copy # Methods available for refilling the sprinkler's water supply fill-method: # Custom refill method 1 configuration method_1: # Item used for refilling item: WATER_BUCKET # Item returned after refilling (optional) return: BUCKET # Amount of water added by this method amount: 3 # Custom refill method 2 configuration method_2: item: POTION return: GLASS_BOTTLE amount: 1 Copy # Configuration for the water level display bar water-bar: left: '뀂' # Left end of the water bar full: '뀁뀃' # Full segment of the water bar empty: '뀁뀄' # Empty segment of the water bar right: '뀁뀅' # Right end of the water bar Copy # Event settings for various interactions and actions events: place: # Action performed when placing the sprinkler swing_hand_action: type: swing-hand value: true # Sound effect triggered when placing the sprinkler sound_action: type: sound value: source: player key: minecraft:block.bone_block.place volume: 1 pitch: 1 interact: # Conditional action executed on interaction force_work_action: type: conditional value: conditions: requirement_1: type: sneak value: true actions: action_1: type: force-tick # Hologram display action upon interaction hologram_action: type: hologram value: text: '{water_bar}' duration: 40 x: 0.5 y: -0.3 z: 0.5 visible-to-all: false work: # Visual effect displayed when the sprinkler is working fake_item_action: type: fake-item value: item: water_effect duration: 100 x: 0.5 y: 0.4 z: 0.5 visible-to-all: true add_water: # Particle effect shown when adding water particle_action: type: particle value: particle: WATER_SPLASH x: 0.5 y: 0.7 z: 0.5 count: 5 # Sound effect played when adding water sound_action: type: sound value: key: "minecraft:item.bucket.empty" source: 'player' volume: 1 pitch: 1 Copy requirements: use: {} place: {} break: requirement_1: type: permission value: xxx.xxx sun-brightdesktopmoon --- # ✏️ Text | CustomCrops | XiaoMoMi Plugins The plugin employs the `MiniMessage` ([https://docs.advntr.dev/minimessage/format.htmlarrow-up-right](https://docs.advntr.dev/minimessage/format.html) ) format for text representation. This system provides a rich and flexible way to format text with colors, styles, and other features. However, if you're more comfortable with or require the old color format (using the '&' symbol), it's still supported. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/text#legacy-color-code-support) Legacy Color Code Support: Here's how it should look in the `config.yml`: To enable the support for the legacy color format: Copy other-settings: legacy-color-code-support: true [PreviousπŸ“„ Formatchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format) [Next🌽 Cropchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/crop) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ’© Fertilizer | CustomCrops | XiaoMoMi Plugins Let's take `quality_1`as an example to configure the fertilizer settings **Unique Identifier for the Fertilizer**: Begin by assigning a unique identifier to each fertilizer type. In this example, the fertilizer is named `quality_1`. This identifier is crucial for distinguishing between different fertilizer types in the game. **Define the Fertilizer Type and Icon**: * `**type**`: Set to `QUALITY`, indicating that this fertilizer improves the quality of the crops it is applied to. * `**icon**`: Represents the visual icon that will appear in the game interface when players view or use this fertilizer. The icon '뀆' is a unique symbol that visually represents this specific fertilizer. Available fertilizer types and their effects: Copy QUALITY: Change the weights of star rated crops dropping SOIL_RETAIN: Reduce the speed of water consumption SPEED_GROW: Accelerate crop growth VARIATION: Crops have a higher probability of variation YIELD_INCREASE: Increase crop yield Copy type: QUALITY # The type of fertilizer **Set the Fertilizer’s Effectiveness**: * `**chance**`: This is a probability factor (set to `1` here) that influences the effectiveness or success rate of the fertilizer. Adjusting this value can make the fertilizer more or less likely to produce its intended effects. * `**times**`: Specifies the duration or number of in-game ticks that the fertilizer remains effective. With a value of `28`, the fertilizer will last for 28 ticking cycles, providing a sustained impact on crop growth. Copy chance: 1 # Probability factor influencing effect of fertilizer **Assign a Unique Item ID**: * `**item**`: The unique item ID `quality_1` links this configuration to an in-game item, ensuring that when players use this item, the game recognizes it as the `quality_1` fertilizer. **Specify Application Timing and Pot Compatibility**: * `**before-plant**`: Set to `true`, this parameter ensures that the fertilizer must be applied before planting any crops. It enforces strategic planning, requiring players to prepare their soil in advance. * `**pot-whitelist**`: Lists all pot types where this fertilizer can be applied. In this example, only `default` pots are allowed, but you can add more pot types to expand compatibility. **Set Up Events**: The `events` section is where the real magic happens. Here, you define how the game responds to different interactions with the fertilizers. Available events: `use`/`before_plant`/`wrong_pot` **Set Up Requirements**: Under `requirements`, you can configure the conditions player have to meet before using the fertilizer. [PreviousπŸͺ΄ Potchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/pot) [Nextβš™οΈ config.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/config.yml) Last updated 1 year ago sun-brightdesktopmoon Copy item: quality_1 # Unique item ID for this fertilizer Copy before-plant: true # Indicates that this fertilizer must be applied before planting crops pot-whitelist: - default # List of allowed pots where this fertilizer can be used Copy events: use: # Actions triggered when the fertilizer is applied particle_action: type: particle value: particle: SCRAPE x: 0.5 y: 1.3 z: 0.5 count: 5 offset-x: 0.3 offset-z: 0.3 sound_action: type: sound value: source: player key: minecraft:item.hoe.till volume: 1 pitch: 1 wrong_pot: # Actions triggered if the fertilizer is used on the wrong pot type sound_action: type: sound value: key: "minecraft:item.bundle.insert" source: 'player' volume: 1 pitch: 1 actionbar_action: type: actionbar value: '[X] This fertilizer can only be used in pots.' # Message shown on the action bar before_plant: # Actions triggered if the fertilizer is used after planting sound_action: type: sound value: key: "minecraft:item.bundle.insert" source: 'player' volume: 1 pitch: 1 actionbar_action: type: actionbar value: '[X] You can only use this fertilizer before planting the crop.' Copy requirements: requirement_1: type: permission value: xxx.xxx sun-brightdesktopmoon --- # πŸ…ΏοΈ Placeholder & Expression | CustomCrops | XiaoMoMi Plugins [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#plugin-placeholders) Plugin placeholders ---------------------------------------------------------------------------------------------------------------------------------------------------------------- placeholder value %customcrops\_season% Get the season of the world player in %customcrops\_season\_% Get the season of the specified world %customcrops\_date% Get the date of the world player %customcrops\_date\_% Get the date of the specified world [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#internal-placeholders) Internal placeholders -------------------------------------------------------------------------------------------------------------------------------------------------------------------- placeholder value {player} Player name {x} X coordinate {y} Y coordinate {z} Z coordinate {world} World name {water\_bar} Water bar image {storage} The storage of the sprinkler/watering-can/pot {current} The current water storage {near} Nearby player name {max\_times} Max times that fertilizer can survive {left\_times} The times left that fertilizer can survive [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#expressions) Expressions ------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#register-placeholders) Register placeholders Plugin doesn't support using PlaceholderAPI placeholders directly. But there's a section in config.yml where you can customize the identifier of a placeholder and use it almost everywhere. Let's try the example below. You need to replace `%levelplugin_farming%`with your current leveler's placeholder. Now you are alowed to use this placeholder almost everywhere [Previousβœ… Conditionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/condition) [NextπŸ—‘οΈ Random tick vs Scheduled tickchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/random-tick-vs-scheduled-tick) Last updated 1 year ago * [Plugin placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#plugin-placeholders) * [Internal placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#internal-placeholders) * [Expressions](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#expressions) * [Register placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression#register-placeholders) sun-brightdesktopmoon Copy placeholder-register: '{skill-level}': '%levelplugin_farming%' Copy # drop more items when harvesting action_1: type: drop-item value: ignore-fertilizer: true item: tomato_seeds min: '1 + {skill-level}*0.1' max: '2 + {skill-level}*0.15' chance: 1 sun-brightdesktopmoon --- # πŸ—‘οΈ Random tick vs Scheduled tick | CustomCrops | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/random-tick-vs-scheduled-tick#how-does-random-tick-work) How does random tick work? > [Chunksarrow-up-right](https://minecraft.fandom.com/wiki/Chunk) > consist of one subchunk per 16 blocks of height, each one being a 16Γ—16Γ—16=4096 block cube. Sections are distributed vertically starting at the lowest y level. Every chunk tick, some blocks are chosen at random from each section in the chunk. The blocks at those positions are given a "random tick". > > β€”β€”Minecraft wiki CustomCrops give blocks random tick every second. The default value of random-tick-speed is 20, which means the plugin would choose 20 random blocks every second from a 16x16x16 section. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FUoxqpEa.gif&width=768&dpr=3&quality=100&sign=8f923a80&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FmvtHBZSMm17WB0ETPsxZ%252Fimage.png%3Falt%3Dmedia%26token%3D884f8679-3a13-4798-95d4-4dc740a0307d&width=768&dpr=3&quality=100&sign=eb4c5adb&sv=2) The size of one section (F3+G) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/random-tick-vs-scheduled-tick#how-does-scheduled-tick-work) How does scheduled tick work? Scheduled tick means that each tick is planned in advance. In each tick cycle, the plugin can ensure that all blocks are randomly distributed. Although the tick time of blocks are different in one cycle, if they are ticked for many cycles, the number of times they are ticked is similar. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FBVXPmjvJ6QqHAXmrINZ2%252Fscheduled%2520tick.png%3Falt%3Dmedia%26token%3D4d7c0b73-a902-4822-a17a-eb835bf31e19&width=768&dpr=3&quality=100&sign=b387c90f&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FAelrXIM.gif&width=768&dpr=3&quality=100&sign=a70b2199&sv=2) [PreviousπŸ…ΏοΈ Placeholder & Expressionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression) [Next🀝 Compatibilitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility) Last updated 1 year ago * [How does random tick work?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/random-tick-vs-scheduled-tick#how-does-random-tick-work) * [How does scheduled tick work?](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/random-tick-vs-scheduled-tick#how-does-scheduled-tick-work) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸͺ΄ Pot | CustomCrops | XiaoMoMi Plugins Let's take `default`as an example to configure the pot settings **Unique Identifier for Your Pot**: Start by naming your pot under a unique identifier like `deault`. This makes it easy to reference and customize later on. **Set the Maximum Water Storage Capacity**: Use `max-water-storage` to define how much water your pot can store. For instance, setting it to `5` means the pot can hold up to five units of water. This ensures your plants have enough hydration between waterings. Copy # Maximum capacity for storing water in the pot storage: 5 **Customize the Pot’s Basic Appearance**: The `base` section allows you to define the visual look of your pot under different conditions: * `dry`: The model ID used when the pot is dry, showing that it needs water. * `wet`: The model ID when the pot is hydrated and moist. These settings add a visual cue to the player, making it easy to see at a glance whether the pot needs watering. Copy # Basic settings for pot appearance and behavior base: # Models for the pot's appearance dry: dry_pot # Model ID when the pot is dry wet: wet_pot # Model ID when the pot is wet **Control Pot’s Interaction with the Environment**: * `absorb-rainwater`: Set to `true` if you want your pot to automatically absorb water from rain, keeping it moist without manual watering. * `absorb-nearby-water`: Set to `false` to prevent the pot from absorbing water from nearby water sources. This setting ensures that your pot only gets watered when intended. Copy # Determines if the pot absorbs rainwater when it rains absorb-rainwater: true # Determines if water from nearby sources can wet the pot absorb-nearby-water: false **Control Pot's Tick Mode** **Manage Fertilizer Application**: The `max-fertilizers` parameter controls how many units of fertilizer can be applied to a pot at once. Setting it to `1` limits it to a single application, helping prevent over-fertilization which could harm the plants. For the moment it's recommended to keep it `1` as the hologram would show at most one fertilizer at the same time. **Define Custom Appearances for Fertilized Pots**: Under `fertilized-pots`, you can set unique models for pots based on different fertilizer effects. Each type (e.g., `quality`, `yield_increase`, `variation`, `soil_retain`, `speed_grow`) can have distinct `dry` and `wet` appearances. This customization adds depth, visually reflecting the benefits of different fertilizers applied to the pot. **Configure Water Refill Methods**: The `fill-method` section allows you to define various methods for refilling the pot with water: * **Method 1**: Using a `WATER_BUCKET` adds `3` units of water. Upon refilling, the player receives an empty `BUCKET`. * **Method 2**: Using a `POTION` adds `1` unit of water and returns a `GLASS_BOTTLE`. Both methods include actions like playing a sound (`minecraft:item.bucket.fill` or `minecraft:item.bottle.fill`) and a hand-swing animation to provide feedback during the refill process. **Customize the Water Level Display Bar**: The `water-bar` configuration allows you to create a unique visual indicator for the water level using custom characters. This display provides a quick and visually appealing way to check how much water is left in the can. **Set Up Events**: The `events` section is where the real magic happens. Here, you define how the game responds to different interactions with the pots. Available events: `place`/`break`/`interact`/`tick`/`reach_limitation`/`add_water`/`full`/`max_fertilizers` **Set Up Requirements**: Under `requirements`, you can configure the conditions player have to meet before using the pot. Available events: `break`/`place`/`use` [Previous🚰 Watering Canchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/watering-can) [NextπŸ’© Fertilizerchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/fertilizer) Last updated 11 months ago sun-brightdesktopmoon Copy # Sometimes you may have multiple pots configured, # and you want the pots to have different tick modes. # You can change the tick mode to ALL in config.yml # and then configure it separately here. ignore-random-tick: false ignore-scheduled-tick: true Copy # Maximum number of fertilizers that can be applied to the pot max-fertilizers: 1 Copy # Custom appearances for pots with different fertilizer effects fertilized-pots: enable: false quality: dry: dry_pot # Model ID for dry pot with 'quality' fertilizer effect wet: wet_pot # Model ID for wet pot with 'quality' fertilizer effect yield_increase: dry: dry_pot # Model ID for dry pot with 'yield increase' fertilizer effect wet: wet_pot # Model ID for wet pot with 'yield increase' fertilizer effect variation: dry: dry_pot # Model ID for dry pot with 'variation' fertilizer effect wet: wet_pot # Model ID for wet pot with 'variation' fertilizer effect soil_retain: dry: dry_pot # Model ID for dry pot with 'soil retain' fertilizer effect wet: wet_pot # Model ID for wet pot with 'soil retain' fertilizer effect speed_grow: dry: dry_pot # Model ID for dry pot with 'speed grow' fertilizer effect wet: wet_pot # Model ID for wet pot with 'speed grow' fertilizer effect Copy # Methods available to refill the watering can with water fill-method: # Customizable refill method 1 method_1: # Item required to refill item: WATER_BUCKET # Item returned after refilling (optional) return: BUCKET # Amount of water added with this method amount: 3 actions: # Sound effect to play when refilling sound_action: type: sound value: source: player key: minecraft:item.bucket.fill volume: 1 pitch: 1 # Action of swinging hand during refill swing_hand_action: type: swing-hand value: true # Customizable refill method 2 method_2: item: POTION return: GLASS_BOTTLE amount: 1 actions: sound_action: type: sound value: source: player key: minecraft:item.bottle.fill volume: 1 pitch: 1 swing_hand_action: type: swing-hand value: true Copy # Configuration for the water level display bar water-bar: left: '뀂' # Left cap of the water bar full: '뀁뀃' # Segment representing full water level empty: '뀁뀄' # Segment representing empty water level right: '뀁뀅' # Right cap of the water bar Copy # Event settings to handle interactions and effects events: add_water: particle_action: type: particle value: particle: WATER_SPLASH # Particle effect when water is added x: 0.5 y: 1.3 z: 0.5 count: 5 offset-x: 0.3 offset-z: 0.3 interact: # Action to display a hologram when holding a specified item conditional_action: type: conditional value: conditions: requirement_1: type: item-in-hand value: amount: 1 item: soil_surveyor actions: # Display hologram for fertilizer status if fertilizer exists conditional_fertilizer_action: type: conditional value: conditions: requirement_1: type: fertilizer value: has: true actions: fertilizer_hologram: type: hologram value: duration: 20 # Duration the hologram remains visible text: '{icon} {left_times}/{max_times}' apply-correction: true x: 0.5 y: 0.83 z: 0.5 visible-to-all: false # Display hologram showing current water level in the pot water_hologram: type: hologram value: duration: 20 # Duration the hologram remains visible text: '{water_bar}' apply-correction: true x: 0.5 y: 0.6 z: 0.5 visible-to-all: false Copy requirements: use: {} place: {} break: requirement_1: type: permission value: xxx.xxx sun-brightdesktopmoon --- # MythicMobs | CustomCrops | XiaoMoMi Plugins For items: Copy MythicMobs:id [PreviousMMOItemschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/mmoitems) [NextZaphkielchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/zaphkiel) Last updated 2 years ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Zaphkiel | CustomCrops | XiaoMoMi Plugins For items: Copy Zaphkiel:id [PreviousMythicMobschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/mythicmobs) [NextExecutableItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/executableitems) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Supported levelers | CustomCrops | XiaoMoMi Plugins mcMMO [https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/arrow-up-right](https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/) AureliumSkills AuraSkills [https://www.spigotmc.org/resources/aurelium-skills-advanced-skills-stats-abilities-and-more.81069/arrow-up-right](https://www.spigotmc.org/resources/aurelium-skills-advanced-skills-stats-abilities-and-more.81069/) JobsReborn [https://www.spigotmc.org/resources/jobs-reborn.4216/arrow-up-right](https://www.spigotmc.org/resources/jobs-reborn.4216/) EcoSkills [https://www.spigotmc.org/resources/ecoskills-%E2%AD%95-addictive-mmorpg-skills-%E2%9C%85-create-custom-skills-stats-effects-mana-%E2%9C%A8-plug-play.95541/arrow-up-right](https://www.spigotmc.org/resources/ecoskills-%E2%AD%95-addictive-mmorpg-skills-%E2%9C%85-create-custom-skills-stats-effects-mana-%E2%9C%A8-plug-play.95541/) EcoJobs [https://www.spigotmc.org/resources/ecojobs-%E2%AD%95-powerful-employment-system-%E2%9C%85-create-custom-jobs-%E2%9C%A8-levelling-effects.105190/arrow-up-right](https://www.spigotmc.org/resources/ecojobs-%E2%AD%95-powerful-employment-system-%E2%9C%85-create-custom-jobs-%E2%9C%A8-levelling-effects.105190/) MMOCore [https://www.spigotmc.org/resources/mmocore.70575/arrow-up-right](https://www.spigotmc.org/resources/mmocore.70575/) [PreviousNeigeItemschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/neigeitems) [NextBetonQuest 3.0chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/betonquest-3.0) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # 🀝 Compatibility | CustomCrops | XiaoMoMi Plugins [MMOItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/mmoitems) [MythicMobschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/mythicmobs) [Zaphkielchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/zaphkiel) [ExecutableItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/executableitems) [NeigeItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/neigeitems) [Supported levelerschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/supported-levelers) [BetonQuest 3.0chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/betonquest-3.0) [BattlePasschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/battlepass) [ClueScrollschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/cluescrolls) [TypeWriterchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/typewriter) [PreviousπŸ—‘οΈ Random tick vs Scheduled tickchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/random-tick-vs-scheduled-tick) [NextMMOItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/mmoitems) sun-brightdesktopmoon sun-brightdesktopmoon --- # BetonQuest 3.0 | CustomCrops | XiaoMoMi Plugins [**https://modrinth.com/plugin/betonquestaddon**arrow-up-right](https://modrinth.com/plugin/betonquestaddon) [PreviousSupported levelerschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/supported-levelers) [NextBattlePasschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/battlepass) Last updated 3 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # MMOItems | CustomCrops | XiaoMoMi Plugins For items: Copy MMOItems:TYPE:ID [Previous🀝 Compatibilitychevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility) [NextMythicMobschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/mythicmobs) Last updated 2 years ago sun-brightdesktopmoon sun-brightdesktopmoon --- # NeigeItems | CustomCrops | XiaoMoMi Plugins For items: Copy NeigeItems:id [PreviousExecutableItemschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/executableitems) [NextSupported levelerschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/supported-levelers) Last updated 2 years ago sun-brightdesktopmoon sun-brightdesktopmoon --- # ExecutableItems | CustomCrops | XiaoMoMi Plugins For items: Copy ExecutableItems:id [PreviousZaphkielchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/zaphkiel) [NextNeigeItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/neigeitems) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # BattlePass | CustomCrops | XiaoMoMi Plugins Copy quests: 1: # Harvest crops type: customcrops_harvest variable: tomato_stage_4 # remove the namespace if you are using ItemsAdder name: 'Harvest tomatoes' required-progress: 5 2: # Plant crops type: customcrops_plant variable: tomato # crop id name: 'Plant tomatoes' required-progress: 5 [PreviousBetonQuest 3.0chevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/betonquest-3.0) [NextClueScrollschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/cluescrolls) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # TypeWriter | CustomCrops | XiaoMoMi Plugins [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=fd1317f9&sv=2)GitHub - Xiao-MoMi/CustomCropsTypeWriterExtension: Integrate CustomCrops with TypeWriterGitHubchevron-right](https://github.com/Xiao-MoMi/CustomCropsTypeWriterExtension) [PreviousClueScrollschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/cluescrolls) [Next⚑️ Unsafe Commandschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # ClueScrolls | CustomCrops | XiaoMoMi Plugins Copy common_1: lore: '&aβ˜… &fHarvest %amount% tomatoes: %completed%' clueType: customcrops_harvest amount: 7-15 objective: Harvest %amount% tomatoes clueName: Farmer data: id: customcrops:tomato_stage_4 <- specific stage id common_2: lore: '&aβ˜… &fPlant %amount% tomatoes: %completed%' clueType: customcrops_plant amount: 7-15 objective: Plant %amount% tomatoes clueName: Farmer data: id: tomato <- specific crop id [PreviousBattlePasschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/battlepass) [NextTypeWriterchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/typewriter) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # ⚑️ Unsafe Commands | CustomCrops | XiaoMoMi Plugins The plugin has three unsafe commands that you will only need in rare cases. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands#delete) delete This command will delete the crop data of this chunk forever, please operate with caution ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands#restore) restore This command will restore the blocks to the real world based on the data recorded by customcrops. This command is only valid for one section, that is, a 16x16x16 area. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands#fix) fix This command will re-record the data into the plugin based on the real-world block and entity states. At the same time, incorrect data in the data will be removed. This command is only valid for one section, that is, a 16x16x16 area. [PreviousTypeWriterchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/compatibility/typewriter) [Next⌨️ APIchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api) Last updated 1 year ago * [delete](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands#delete) * [restore](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands#restore) * [fix](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands#fix) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ’ͺ Action | CustomCrops | XiaoMoMi Plugins The action system offers pre-set effects provided by the plugin. However, you can also add your own actions by using the API. This system can be applied anywhere an action can be triggered, like when you break a crop, interact a pot etc. Action is composed of three parts Copy type: The action type value: The arguments of the action chance: Optional (0~1 Default: 1) If the value is an integer or a double value, you can use expression for instance Copy exp_action: type: exp value: '{level} * 3' Here's an example that combines the conditions and actions. In this example, if you interact the ripe crop with empty hand, it would be harvested. If you interact it with a seed, it would be replanted. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2F7oSqXUt.gif&width=768&dpr=3&quality=100&sign=fc3c8580&sv=2) [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/action#action-library) Action Library ---------------------------------------------------------------------------------------------------------------------------------- > message (Send a message to player) > broadcast (Send a message to online players) > command (Execute a console command) > player-command (Execute a command as player) > random-command (Execute a random console command from list) > close-inv (Close the inventory player is currently opening) > actionbar > random-actionbar > mending (Give player exp that would be applied to mending) > force-tick > swing-hand > exp (Give player exp that would directly go into levels) > chain (Execute actions as a group) > delay (Delay x ticks) > timer > hologram (Display a hologram for some time) > fake-item (Display a fake item for some time) > food > saturation > give-item > item-amount > durability > variation (Crops turning into another block) > quality-crops > drop-item > plant > break > particle > give-money > take-money > title > random-title > sound > potion-effect > plugin-exp (Experience from other plugins for instance a job/skill plugin) > conditional (Actions can only be triggered when player satisfy the conditions) > priority (Execute the first action group that meets the conditions.) > level > spawn-entity [Previousβš™οΈ config.ymlchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/config.yml) [Nextβœ… Conditionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/condition) Last updated 1 year ago sun-brightdesktopmoon Copy events: interact: action_1: type: conditional value: conditions: # require both hands to be empty requirement_1: type: item-in-hand value: item: "AIR" requirement_2: type: item-in-hand value: hand: other item: "AIR" actions: action_1: type: break value: true action_2: type: swing-hand value: true action_2: type: conditional value: conditions: requirement_1: type: item-in-hand value: item: "customcrops:tomato_seeds" amount: 1 actions: action_1: type: break value: true action_2: type: swing-hand value: true action_3: type: plant value: crop: tomato point: 0 action_4: type: item-amount value: -1 Copy messages_action: type: message value: - '<#FF4500>[1st] Congratulations! You got the first prize!' Copy broadcast_action: type: broadcast value: - 'Hello!' Copy command_action: type: command value: - 'money give {player} 200' Copy command_action: type: player-command value: - 'say hello' Copy command_action: type: random-command value: - 'money give {player} 200' - 'money give {player} 100' - 'money give {player} 50' Copy close_action: type: close-inv Copy actionbar_action: type: actionbar value: 'Hi' Copy actionbar_action: type: random-actionbar value: - 'Hi' - 'Hello' - 'Hola' Copy mending_action: type: mending value: 1 Copy tick_action: type: force-tick Copy swing_action: type: swing-hand value: true # true = main hand | false = off hand Copy exp_action: type: exp value: 1 Copy chain_action: type: exp value: action_1: ... action_2: ... chance: 0.5 Copy delay_action: type: delay value: delay: 20 # in ticks async: false # whether to run asynchronously actions: action_1: ... action_2: ... Copy timer_action: type: timer value: async: false # whether to run asynchronously duration: 20 # in ticks delay: 3 # in ticks period: 2 # in ticks actions: action_1: ... action_2: ... Copy hologram_action: type: hologram value: duration: 20 text: '{water_bar}' apply-correction: true # apply height corrections on each crop visible-to-all: false # decides if the hologram can be seen by all the players range: 32 # decides the visible range y: 2 x: 0 z: 0 Copy fake_item_action: type: fake-item value: duration: 25 # ticks position: other # other/player item: customcrops:water_animation use-item-display: false # requires 1.19.4+ y: 0 x: 0 z: 0 visible-to-all: true range: 32 Copy #https://minecraft.wiki/w/Hunger food_action: type: food value: 2 Copy #https://minecraft.wiki/w/Hunger saturation_action: type: saturation value: 1.5 Copy item_action: type: give-item value: item: customcrops:tomato amount: 10 to-inventory: false Copy item_amount_action: type: item-amount value: -1 item_amount_action: type: item-amount value: hand: main #main/off (This is an optional argument) amount: -1 Copy durability_action: type: durability value: -1 durability_action: type: durability value: slot: OFF_HAND amount: -1 Copy variation_action: type: variation value: gigantic: item: gigantic_tomato type: BLOCK # BLOCK / FURNITURE chance: 0.02 xxx: item: xxx type: BLOCK chance: 0.07 Copy crop_action: type: quality-crops value: to-inventory: false min: 1 max: 4 items: 1: tomato 2: tomato_silver_star 3: tomato_golden_star Copy drop_action: type: drop-item value: to-inventory: false ignore-fertilizer: true item: tomato_seeds min: 1 max: 2 Copy plant_action: type: plant value: crop: tomato # The config ID point: 0 Copy break_action: type: break value: true # whether to trigger "break" event Copy particle_action: type: particle value: particle: FLAME x: 0.5 y: 0.5 z: 0.5 count: 10 offset-x: 0.5 offset-y: 0.5 offset-z: 0.5 extra: 0.0 # Only works if particle is ITEM_CRACK itemStack: customcrops:xxx # Only works if particle is REDSTONE/DUST_COLOR_TRANSITION color: 255,0,0 scale: 1 # Only works if particle is DUST_COLOR_TRANSITION to-color: 0,0,255 Copy money_action: type: give-money value: 100.12 Copy money_action: type: take-money value: 50.54 Copy title_action: type: title value: title: 'Hello!' subtitle: 'This is the subtitle!' fade-in: 20 stay: 30 fade-out: 10 Copy title_action: type: random-title value: titles: - 'Hello!' - 'Hi!' subtitles: - 'Subtitle 1' - 'Subtitle 2' fade-in: 20 stay: 30 fade-out: 10 Copy sound_action: type: sound value: key: 'minecraft:block.amethyst_block.place' source: 'player' volume: 1 pitch: 1 Copy potion_action: type: potion-effect value: type: 'blindness' duration: 20 amplifier: 0 Copy plugin_exp_action: type: plugin-exp value: plugin: AureliumSkills exp: 20 target: FARMING Copy conditional_action: type: conditional value: conditions: requirement_1: ... requirement_2: ... actions: action_1: ... action_2: ... Copy priority_action: type: priority value: priority_1: conditions: ... actions: ... priority_2: conditions: ... actions: ... others: actions: ... Copy money_action: type: level value: -10 Copy spawn_entity_action: type: spawn-entity value: id: MythicMobs:XXX_mob # for vanilla entities, use capital letters for isntance "SHEEP" x: 0 y: 0 z: 0 properties: level: 0 sun-brightdesktopmoon --- # Plugin Events | CustomCrops | XiaoMoMi Plugins Available events can be found on [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=fd1317f9&sv=2)Custom-Crops/api/src/main/java/net/momirealms/customcrops/api/event at main Β· Xiao-MoMi/Custom-CropsGitHubchevron-right](https://github.com/Xiao-MoMi/Custom-Crops/tree/main/api/src/main/java/net/momirealms/customcrops/api/event) [PreviousCustom Mechanismchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/custom-mechanism) [NextOther Block Systemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/other-block-system) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # βœ… Condition | CustomCrops | XiaoMoMi Plugins Plugin provides a powerful condition system. You can use both simple conditions and advanced conditions at the same time. Here are some examples for you to learn conditions. > simple biome condition only contains the necessary arguments Copy biome: - minecraft:ocean - minecraft:deep_ocean - minecraft:cold_ocean - minecraft:deep_cold_ocean - minecraft:frozen_ocean - minecraft:deep_frozen_ocean - minecraft:lukewarm_ocean - minecraft:deep_lukewarm_ocean - minecraft:warm_ocean > advanced condition allows you to use conditions of the same type and add `not-met-actions` The section name ("requirement\_permission\_1" in this case) is completely customizable as long as it does not conflict with the condition type name. Copy # This example uses two permission conditions requirement_permission_1: type: permission value: - xxx.1.xxx requirement_permission_2: type: permission value: - xxx.2.xxx not-met-actions: action_1: type: xxx value: ... # wrong usage (YAML format doesn't allow this) permission: - xxx.1.xxx permission: - xxx.2.xxx [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/condition#condition-library) Condition Library ------------------------------------------------------------------------------------------------------------------------------------------- > time (Minecraft game time 0~23999) > ypos (Player's Y coordinate) > biome (Supports custom biomes) > world > weather > date (Real world date) > permission > β€œ>” β€œ>=” β€œ<” β€œ<=” β€œ==” β€œ!=” > β€œstartsWith” β€œendsWith” β€œequals” β€œcontains” β€œin-list” > logic (Create complex conditions) > level (Player exp level) > random (0~1) > cooldown > regex > environment > potion-effect > temperature > sneak > plugin-level > season > fertilizer > item-in-hand > light / natural-light > gamemode > crow attack > water more than (For custom pots) > water less than (For custom pots) > point more than > point less than > moisture more than (For vanilla farmland) > moisture less than (For vanilla farmland) > pot > fertilizer > fertilizer type > region (requires WorldGuard) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FwVRwa1mjoD4DUzEVDGB1%252Fimage.png%3Falt%3Dmedia%26token%3D4b17a00d-727b-4cb9-9a74-73a20ee8cbaf&width=768&dpr=3&quality=100&sign=ea1a59da&sv=2) mode 1 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252FgYXNKR0VaB14hq5tiGiV%252Fimage.png%3Falt%3Dmedia%26token%3Da4af5c9d-7875-4ae5-bdb8-e3a9d4b41b5f&width=768&dpr=3&quality=100&sign=ceb62182&sv=2) mode 2 > hand [PreviousπŸ’ͺ Actionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/action) [NextπŸ…ΏοΈ Placeholder & Expressionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/placeholder-and-expression) Last updated 1 year ago sun-brightdesktopmoon Copy time: - 0~1000 - 2000~6000 advanced_requirement: type: time value: - 0~1000 - 2000~6000 Copy ypos: - 0~43 - -45~12 advanced_requirement: type: ypos value: - 0~43 - -45~12 Copy biome: - minecraft:plains <- whitelist '!biome': - minecraft:plains <- blacklist advanced_requirement: type: biome value: - minecraft:plains advanced_requirement: type: '!biome' value: - minecraft:plains Copy world: - world '!world': - blacklist_world advanced_requirement: type: world value: - world advanced_requirement: type: '!world' value: - blacklist_world Copy weather: - thunder - clear - rain advanced_requirement: type: 'weather' value: - thunder - clear - rain Copy date: - 12/25 - 6/1 advanced_requirement: type: 'date' value: - 12/25 - 6/1 Copy permission: customfishing.admin '!permission': blacklist.perm advanced_requirement: type: 'permission' value: customfishing.admin advanced_requirement: type: '!permission' value: blacklist.perm Copy '==': value1: '20' value2: '%player_health%' advanced_requirement: type: '==' value: value1: '20' value2: '%player_health%' Copy '!startsWith': value1: '%player_name%' value2: 'X' <- player names that are not starting with "X" advanced_requirement: type: 'contains' value: value1: '%player_name%' value2: '_' <- player names that contain "_" advanced_requirement: type: '!equals' value: value1: '%player_name%' value2: 'XiaoMoMi' <- player names that not equal "XiaoMoMi" advanced_requirement: type: 'in-list' value: papi: '%player_name%' values: - 'XiaoMoMi' - 'XIAOMOMI' - 'XlA0M0Ml' Copy advanced_requirement: type: '&&' value: in-lava: true requirement_time: type: time value: - 0~12000 '||': world: - world_nether '&&': ypos: - -64~-32 world: - world Copy level: 10 advanced_requirement: type: 'level' value: 10 Copy random: 0.3 <- 30% chance advanced_requirement: type: 'random' value: 0.7 <- 70% chance Copy cooldown: key: unique time: 1000 #ms advanced_requirement: type: 'cooldown' value: key: A time: 100 #ms Copy regex: papi: %xxx% regex: "[A-Z]" advanced_requirement: type: 'regex' value: papi: %xxx% regex: "[A-Z]" Copy environment: - normal - nether - the_end advanced_requirement: type: '!environment' value: - nether - the_end - custom Copy potion-effect: "LUCK>=0" advanced_requirement: type: 'potion-effect' value: "LUCK!=-1" "-1": Player doesn't have such a potion effect "value no lower than 0": The potion effect's amplifier Examples: LUCK==1 LUCK<5 LUCK>=0 Copy temperature: - 0.15~0.85 advanced_requirement: type: "temperature" value: - 0.15~0.85 Copy sneak: true advanced_requirement: type: "sneak" value: true Copy plugin-level: plugin: AureliumSkills level: 10 target: FARMING advanced_requirement: type: plugin-level value: plugin: AureliumSkills level: 10 target: FARMING Copy season: - Spring advanced_requirement: type: season value: - Spring condition_season: type: suitable-season value: - Spring condition_season: type: unsuitable-season value: - Winter Copy fertilizer: has: true fertilizer: has: false advanced_requirement: type: fertilizer value: has: true advanced_requirement: type: fertilizer value: has: true key: - speed_grow_1 - speed_grow_2 Copy item-in-hand: item: "AIR" item-in-hand: item: "*" # any item advanced_requirement: type: item-in-hand value: hand: other # the other hand item: "PAPER" amount: 32 Copy light: - 0~7 natural-light: - 7~14 advanced_requirement: type: light value: - 0~1 - 3~5 condition_light: type: natural-light-more-than value: 8 condition_light: type: natural-light-less-than value: 8 condition_light: type: light-less-than value: 8 condition_light: type: light-more-than value: 7 Copy gamemode: - creative advanced_requirement: type: gamemode value: - creative - adventure Copy condition_xxx: type: crow-attack value: chance: 0.005 fly-model: crow_fly stand-model: crow_stand Copy condition_xxx: type: water-more-than value: 0 ondition_xxx: type: water-more-than value: y: -1 # y defaults to -1 if not set value: 0 Copy condition_xxx: type: water-less-than value: 1 condition_xxx: type: water-less-than value: y: -1 # y defaults to -1 if not set value: 1 Copy condition_xxx: type: point-more-than value: 1 Copy condition_xxx: type: point-less-than value: 1 Copy condition_xxx: type: moisture-more-than value: 0 condition_xxx: type: moisture-more-than value: y: -1 # y defaults to -1 if not set value: 0 Copy condition_xxx: type: moisture-less-than value: 1 condition_xxx: type: moisture-less-than value: y: -1 # y defaults to -1 if not set value: 1 Copy condition_xxx: type: pot value: y: -1 id: - default Copy condition_xxx: type: fertilizer value: - speed_grow_1 # has no fertilizer condition_xxx: type: fertilizer value: y: -1 # Y defaults to 0 has: false # blacklist ids condition_xxx: type: fertilizer value: y: -1 has: false type: - speed_grow_1 - soil_retain_2 # whitelist ids condition_xxx: type: fertilizer value: y: 0 has: true type: - speed_grow_1 - speed_grow_2 - speed_grow_3 Copy condition_xxx: type: fertilizer-type value: - SPEED_GROW # has no fertilizer condition_xxx: type: fertilizer value: y: -1 # Y defaults to 0 has: false # blacklist types condition_xxx: type: fertilizer value: y: -1 has: false type: - speed_grow - soil_retain # whitelist types condition_xxx: type: fertilizer value: y: 0 has: true type: - speed_grow Copy advanced_requirement: type: region value: mode: 1 # 1,2 values: - a - b region: mode: 2 values: - a - b Copy condition_xxx: type: hand value: hand #off_hand sun-brightdesktopmoon --- # βš™οΈ config.yml | CustomCrops | XiaoMoMi Plugins Copy # Do not change this value config-version: '${config_version}' # Enable or disable debugging mode debug: false # Enable or disable metrics collection using BStats metrics: true # Enable automatic update checks update-checker: true # Force the locale (e.g., zh_cn) force-locale: '' # World settings worlds: # Some servers use separate directories for player worlds, which may not be in the server's root directory. # This option allows you to specify a custom path to these world folders. This is only applicable for Bukkit worlds. absolute-world-folder-path: '' # Specifies which worlds the plugin's mechanisms should apply to # Options: whitelist/blacklist/regex mode: blacklist list: - blacklist_world # A world that doesn't exist settings: # Default settings that apply to all worlds _DEFAULT_: # Whether to enable the plugin's pre-configured systems # Disabling this stops all mechanisms from ticking unless fully managed via the API. # If you're not familiar with using CustomCropsAPI, keep this set to true as it meets the needs of 99% of users. enable: true # Seasonal settings season: enable: true # Automatically cycle through seasons auto-alternation: true # Duration of each season in game days duration: 28 # This is different from the vanilla RandomTickSpeed. # "Random tick" here means randomly selecting n blocks within a 16x16x16 section every second for ticking, unlike Minecraft's per-tick approach. # Therefore, CustomCrops' random ticks have minimal impact on the server and run on multiple threads. random-tick-speed: 20 # The minimum tick interval in seconds when using scheduled tick mode # A value of 180s means a crop is guaranteed to tick at least once every 180 seconds # For crops, growth rates are nearly uniform under the same conditions # Sprinklers and pots operate periodically within this interval. min-tick-unit: 180 # Settings for ticking while the world is offline # Allows crops to grow even if the world is unloaded or the server is down # This might cause issues with time-dependent conditions like seasons offline-tick: enable: false # Maximum offline time recorded in seconds # Avoid setting this too high, as it may cause long-unloaded chunks to take a long time to load max-offline-seconds: 1200 # Maximum time allowed for loading a chunk # Sometimes, chunks with large amounts of data that have been unloaded for a long time can take a while to load, # potentially causing unexpected issues # This setting allows the plugin to forcibly interrupt the tick process if loading time exceeds a set threshold max-loading-time: 100 #ms # Crop settings crop: # [RANDOM_TICK] # Random tick mode mirrors vanilla behavior, where crops grow randomly # This randomness can cause significant stage differences among crops grown under identical conditions # [SCHEDULED_TICK] # Scheduled tick mode provides more predictable growth management, # ensuring crops grow at nearly the same rate mode: RANDOM_TICK # Tick interval determines how many times a block is ticked before its logic is executed tick-interval: 1 # Limit the number of crops per chunk (-1 means no limit) max-per-chunk: -1 # Pot settings pot: # RANDOM_TICK or SCHEDULED_TICK mode: SCHEDULED_TICK tick-interval: 3 max-per-chunk: -1 # Sprinkler settings sprinkler: # RANDOM_TICK or SCHEDULED_TICK mode: SCHEDULED_TICK tick-interval: 2 max-per-chunk: -1 # Override default settings for specific worlds here _WORLDS_: world_nether: enable: false world_the_end: enable: false # Mechanics settings mechanics: # Create additional ranks by adding more slashes, e.g., x/x/x/x/x # "x" represents weight, which determines the probability proportion # 17/2/1 = 85%/10%/5% # 85% is calculated as 17/(17+2+1) * 100% default-quality-ratio: 17/2/1 # Scarecrow settings to prevent crops from being attacked by crows scarecrow: enable: true id: 'scarecrow' type: ITEM_FRAME range: 7 # If enabled, the scarecrow's range will not be limited # It will protect all crops within the same chunk protect-chunk: false # Greenhouse glass prevents crops from withering due to seasonal changes greenhouse: enable: true # You can use a list of IDs here; vanilla blocks are also supported id: 'greenhouse_glass' type: CHORUS range: 5 # Synchronize seasons with another world sync-season: enable: false reference: world # Vanilla farmland mechanics vanilla-farmland: # Disable the moisture mechanics of vanilla farmland # This is useful if you prefer vanilla farmland but the water system conflicts with vanilla mechanics disable-moisture-mechanic: false # Prevent entities from trampling farmland prevent-trampling: false # Set hologram offset correction for different blocks hologram-offset-correction: "crop_stage_death": 0 # Specify block types that should be overridden by the plugin # Some common crops: WHEAT/CARROTS/POTATOES/BEETROOTS/SWEET_BERRY_BUSH override-vanilla-blocks: [] other-settings: # It is recommended to use MiniMessage format. If you want to use legacy color codes ("&"), enable support below. # Disabling this can improve performance legacy-color-code-support: true # Requires PlaceholderAPI to function placeholder-register: '{skill-level}': '%levelplugin_farming%' # To use items from other plugins item-detection-order: [] # Whether to protect the original lore of items # Uses the scoreboard component to identify the plugin's lore, # which may conflict with some plugins still using SpigotAPI#ItemMeta protect-original-lore: false # Whether to verify if a block/furniture matches the data in CustomCrops # Enable this if using Oraxen, as its API is more reliable double-check: false [PreviousπŸ’© Fertilizerchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/format/fertilizer) [NextπŸ’ͺ Actionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/action) Last updated 1 year ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Custom Season Provider | CustomCrops | XiaoMoMi Plugins Create a class that implements `SeasonProvider` and then register it on plugin enable Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.core.world.Season; import net.momirealms.customcrops.api.integration.SeasonProvider; import org.bukkit.World; import org.jetbrains.annotations.NotNull; public class MySeasonProvider implements SeasonProvider { @Override public @NotNull Season getSeason(@NotNull World world) { return ...; } @Override public String identifier() { return "MySeasonPlugin"; } } [PreviousOther Block Systemchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/other-block-system) Last updated 1 year ago sun-brightdesktopmoon Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.BukkitCustomCropsPlugin; import org.bukkit.plugin.java.JavaPlugin; public class MyPlugin extends JavaPlugin { @Override public void onEnable() { register(); } public void register() { BukkitCustomCropsPlugin.getInstance().getIntegrationManager().registerSeasonProvider(new MySeasonProvider()); } } sun-brightdesktopmoon --- # ⌨️ API | CustomCrops | XiaoMoMi Plugins Before using the CustomCrops API, make sure you have imported the Paper API. [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fassets.papermc.io%2Fweb%2Fandroid-chrome-512x512.png&width=20&dpr=3&quality=100&sign=be86b5e3&sv=2)Project setup | PaperMC Docsdocs.papermc.iochevron-right](https://docs.papermc.io/paper/dev/project-setup) Then you can add the CustomCrops API dependency to your project #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api#repository) πŸ“Œ Repository #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api#dependency) πŸ“Œ Dependency At last, don't forget to add CustomCrops to plugin.yml [Previous⚑️ Unsafe Commandschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/unsafe-commands) [NextBasic Operationschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations) Last updated 1 year ago sun-brightdesktopmoon Copy repositories { maven("https://repo.momirealms.net/releases/") } Copy dependencies { compileOnly("net.momirealms:custom-crops:{version}") } Copy depend: - CustomCrops sun-brightdesktopmoon --- # Basic Operations | CustomCrops | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#adapt-bukkit-location) Adapt Bukkit Location Copy Pos3 pos3 = Pos3.from(location); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-customcrops-world) Get CustomCrops world Copy BukkitCustomCropsPlugin.getInstance().getWorldManager().getWorld(Bukkit.getWorld("world")); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-remove-blockstate) Get/Remove Blockstate Copy CustomCropsWorld world = ...; world.getBlockState(pos3); world.removeBlockState(pos3); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#add-blockstate) Add Blockstate Copy CropBlock cropBlock = (CropBlock) BuiltInBlockMechanics.CROP.mechanic(); CustomCropsBlockState blockState = cropBlock.createBlockState(); cropBlock.id(blockState, "tomato"); cropBlock.point(blockState, 0); world.addBlockState(pos3, blockState); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#set-remove-get-custom-data-in-blockstate) Set/Remove/Get Custom Data in Blockstate Copy SynchronizedCompoundMap compoundMap = blockState.compoundMap(); compoundMap.remove("key"); compoundMap.put("key", new StringTag("key", "test")); compoundMap.get("key"); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-the-block-type-from-blockstate) Get the block type from blockstate ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-built-in-block-item-type-from-registry) Get built-in block/item type from Registry ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#place-remove-blocks-on-bukkit-worlds) Place/Remove blocks on Bukkit Worlds ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-ids) Get ids ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-configs-of-the-built-in-items) Get configs of the built-in items [Previous⌨️ APIchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api) [NextCustom Mechanismchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/custom-mechanism) Last updated 1 year ago * [Adapt Bukkit Location](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#adapt-bukkit-location) * [Get CustomCrops world](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-customcrops-world) * [Get/Remove Blockstate](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-remove-blockstate) * [Add Blockstate](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#add-blockstate) * [Set/Remove/Get Custom Data in Blockstate](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#set-remove-get-custom-data-in-blockstate) * [Get the block type from blockstate](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-the-block-type-from-blockstate) * [Get built-in block/item type from Registry](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-built-in-block-item-type-from-registry) * [Place/Remove blocks on Bukkit Worlds](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#place-remove-blocks-on-bukkit-worlds) * [Get ids](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-ids) * [Get configs of the built-in items](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations#get-configs-of-the-built-in-items) sun-brightdesktopmoon Copy CustomCropsBlock block = blockState.type(); if (block instanceof CropBlock cropBlock) { CropConfig cropConfig = cropBlock.config(blockState); } Copy PotBlock potBlock = (PotBlock) BuiltInBlockMechanics.POT.mechanic(); SeedItem seedItem = (SeedItem) BuiltInItemMechanics.SEED.mechanic(); Copy ItemManager itemManager = BukkitCustomCropsPlugin.getInstance().getItemManager(); itemManager.placeFurniture(location, "id", FurnitureRotation.NONE); itemManager.placeBlock(location, "id"); itemManager.removeFurniture(location); itemManager.removeBlock(location); Copy ItemManager itemManager = BukkitCustomCropsPlugin.getInstance().getItemManager(); String blockID = itemManager.blockID(block); String furnitureID = itemManager.furnitureID(entity); String itemID = itemManager.id(itemStack); Copy CropConfig cropConfig = Registries.CROP.get("tomato"); SprinklerConfig sprinklerConfig = Registries.SPRINKLER.get("sprinkler"); PotConfig potConfig = Registries.POT.get("default"); WateringCanConfig wateringCanConfig = Registries.WATERING_CAN.get("watering_can_1"); FertilizerConfig fertilizerConfig = Registries.FERTILIZER.get("quality_1"); sun-brightdesktopmoon --- # Other Block System | CustomCrops | XiaoMoMi Plugins In addition to the oraxen and ItemsAdder compatibility provided by the plugin, you can also adapt customcrops to your own server, especially for some large servers with independent development capabilities. To adapt your own plugin to customcrops you only need to implement two classes: `AbstractCustomEventListener` & `CustomItemProvider` Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.core.AbstractCustomEventListener; import net.momirealms.customcrops.api.core.AbstractItemManager; import org.bukkit.event.EventHandler; public class MyCustomListener extends AbstractCustomEventListener { public MyCustomListener(AbstractItemManager itemManager) { super(itemManager); } @EventHandler(ignoreCancelled = true) public void onInteractFurniture(FurnitureInteractEvent event) { itemManager.handlePlayerInteractFurniture(...); } @EventHandler(ignoreCancelled = true) public void onInteractCustomBlock(CustomBlockInteractEvent event) { itemManager.handlePlayerInteractBlock(...); } @EventHandler(ignoreCancelled = true) public void onBreakFurniture(FurnitureBreakEvent event) { itemManager.handlePlayerBreak(...); } @EventHandler(ignoreCancelled = true) public void onBreakCustomBlock(CustomBlockBreakEvent event) { itemManager.handlePlayerBreak(..); } @EventHandler(ignoreCancelled = true) public void onPlaceFurniture(FurniturePlaceEvent event) { itemManager.handlePlayerPlace(...); } @EventHandler(ignoreCancelled = true) public void onPlaceCustomBlock(CustomBlockPlaceEvent event) { itemManager.handlePlayerPlace(...); } } At last, register them on plugin enable [PreviousPlugin Eventschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/plugin-events) [NextCustom Season Providerchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/custom-season-provider) Last updated 1 year ago sun-brightdesktopmoon Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.core.CustomItemProvider; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.checkerframework.checker.nullness.qual.Nullable; public class MyCustomItemProvider implements CustomItemProvider { @Override public boolean removeCustomBlock(Location location) { return ...; } @Override public boolean placeCustomBlock(Location location, String id) { return ...; } @Override public @Nullable Entity placeFurniture(Location location, String id) { return ...; } @Override public boolean removeFurniture(Entity entity) { return ...; } @Override public @Nullable String blockID(Block block) { return ...; } @Override public @Nullable String itemID(ItemStack itemStack) { return ...; } @Override public @Nullable ItemStack itemStack(Player player, String id) { return ...; } @Override public @Nullable String furnitureID(Entity entity) { return ...; } @Override public boolean isFurniture(Entity entity) { return ...; } } Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.BukkitCustomCropsPlugin; import net.momirealms.customcrops.api.core.AbstractItemManager; import org.bukkit.plugin.java.JavaPlugin; public class MyPlugin extends JavaPlugin { @Override public void onEnable() { register(); } public void register() { AbstractItemManager itemManager = BukkitCustomCropsPlugin.getInstance().getItemManager(); MyCustomListener listener = new MyCustomListener(itemManager); MyCustomItemProvider provider = new MyCustomItemProvider(); itemManager.setCustomEventListener(listener); itemManager.setCustomItemProvider(provider); } } sun-brightdesktopmoon --- # βš™οΈ Config | CustomNameplates | XiaoMoMi Plugins [config.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml) [bossbar.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bossbar.yml) [actionbar.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/actionbar.yml) [bubble.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml) [nameplate.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml) [advance-data.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/advance-data.yml) [PreviousπŸ“– Basic Font Knowledgechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge) [Nextconfig.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml) sun-brightdesktopmoon sun-brightdesktopmoon --- # ✏️ Text format | CustomNameplates | XiaoMoMi Plugins [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/text-format#legacy-color-code-outdated) Legacy color code (Outdated) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Copy &1 &2 &3 &a &b &c &m &l etc. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/text-format#minimessage-format-recommended) MiniMessage format (Recommended) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [https://docs.adventure.kyori.net/minimessage/format.htmlarrow-up-right](https://docs.adventure.kyori.net/minimessage/format.html) [PreviousπŸ€ CustomNameplateschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates) [Next❓️ Common Questionschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions) * [Legacy color code (Outdated)](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/text-format#legacy-color-code-outdated) * [MiniMessage format (Recommended)](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/text-format#minimessage-format-recommended) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ€ CustomNameplates | CustomNameplates | XiaoMoMi Plugins [✏️ Text formatchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/text-format) [❓️ Common Questionschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions) [πŸ“– Basic Font Knowledgechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge) [βš™οΈ Configchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config) [βž•οΈ Add New Contentschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents) [πŸ…ΏοΈ Custom Placeholderschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders) [πŸ…ΏοΈ Placeholderschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/placeholders) [βœ… Conditionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/condition) [🐚 Command & Permissionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/command-and-permission) [🀝 Compatibilitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility) [πŸ” Exampleschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples) [⌨️ APIchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api) [πŸ“ CustomNameplates Update: Version 2.4 to 3.0 Overviewchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview) [Next✏️ Text formatchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/text-format) sun-brightdesktopmoon sun-brightdesktopmoon --- # βž•οΈ Add New Contents | CustomNameplates | XiaoMoMi Plugins [🏷️ Nameplatechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/nameplate) [πŸ–ΌοΈ Backgroundchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/background) [πŸ’¬ Bubblechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/bubble) [πŸ”Ά Imagechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/image) [Previousadvance-data.ymlchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/advance-data.yml) [Next🏷️ Nameplatechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/nameplate) sun-brightdesktopmoon sun-brightdesktopmoon --- # Custom Mechanism | CustomCrops | XiaoMoMi Plugins This page will use sugarcane as an example to roughly implement a mechanism similar to the vanilla sugarcane. Firstly create two classes for both item and block Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.core.item.AbstractCustomCropsItem; import net.momirealms.customcrops.common.util.Key; public class SugarCaneItem extends AbstractCustomCropsItem { private static SugarCaneItem instance; public SugarCaneItem() { super(Key.key("customcrops", "sugarcane_item")); } public static SugarCaneItem instance() { if (instance == null) { instance = new SugarCaneItem(); } return instance; } } Then register it in `onEnable()` method Then we can create some basic logics for instance placing the sugarcane block Now you should be able to plant the sugarcane (I used a pineapple as a substitute in the gif because I haven't prepared the model for sugarcane yet) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2Ff3eQwD8.gif&width=768&dpr=3&quality=100&sign=bcc43a75&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F3367277500-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F3tsXOZ7EnqaBWiFptXXV%252Fuploads%252F7lsytwLmI3BujY3EkYps%252Fimage.png%3Falt%3Dmedia%26token%3D33771e2c-ebe2-4976-9454-b328816fbf0a&width=768&dpr=3&quality=100&sign=b1c00579&sv=2) insight mode Then we can configure the grow/break logics for sugarcane ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FYTNxP7R.gif&width=768&dpr=3&quality=100&sign=58c4cf8f&sv=2) [PreviousBasic Operationschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/basic-operations) [NextPlugin Eventschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customcrops/plugin-wiki/customcrops/api/plugin-events) Last updated 1 year ago sun-brightdesktopmoon Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.core.block.AbstractCustomCropsBlock; import net.momirealms.customcrops.common.util.Key; public class SugarCaneBlock extends AbstractCustomCropsBlock { private static SugarCaneBlock instance; private SugarCaneBlock() { super(Key.key("customcrops", "sugarcane_block")); } // This method is used to verify whether a block belongs to this mechanism // The id would be the item ID from the custom item plugin for instance Oraxen @Override public boolean isBlockInstance(String id) { return id.equals("customcrops:sugarcane_block_id"); } public static SugarCaneBlock instance() { if (instance == null) { instance = new SugarCaneBlock(); } return instance; } @Override public NamedTextColor insightColor() { return NamedTextColor.YELLOW; } } Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.BukkitCustomCropsPlugin; import net.momirealms.customcrops.api.core.Registries; import net.momirealms.customcrops.api.core.RegistryAccess; import net.momirealms.customcrops.api.event.CustomCropsReloadEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import java.util.List; public class YourPlugin extends JavaPlugin implements Listener { @Override public void onEnable() { RegistryAccess access = BukkitCustomCropsPlugin.getInstance().getRegistryAccess(); access.registerBlockMechanic(SugarCaneBlock.instance()); access.registerItemMechanic(SugarCaneItem.instance()); getServer().getPluginManager().registerEvents(this, this); } @EventHandler public void onPluginReload(CustomCropsReloadEvent event) { // ITEMS and BLOCKS are temporary mappings to associate item id with mechanism type // For example, if you have multiple blocks with the same mechanism, such as red wool, green wool, and gray wool, you need to register them in this registry. // This registry is cleared when the plugin is reloaded to apply changes to the configuration file // NOTE: NEVER USE THE REGISTRIES ANNOTATED WITH @DONOTUSE for (String sugarcaneItem : List.of("customcrops:sugarcane_item_id")) { Registries.ITEMS.register(sugarcaneItem, SugarCaneItem.instance()); } for (String sugarcaneBlock : List.of("customcrops:sugarcane_block_id")) { Registries.BLOCKS.register(sugarcaneBlock, SugarCaneBlock.instance()); } } } Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.BukkitCustomCropsPlugin; import net.momirealms.customcrops.api.core.ExistenceForm; import net.momirealms.customcrops.api.core.InteractionResult; import net.momirealms.customcrops.api.core.item.AbstractCustomCropsItem; import net.momirealms.customcrops.api.core.world.CustomCropsBlockState; import net.momirealms.customcrops.api.core.world.CustomCropsWorld; import net.momirealms.customcrops.api.core.world.Pos3; import net.momirealms.customcrops.api.core.wrapper.WrappedInteractEvent; import net.momirealms.customcrops.api.util.LocationUtils; import net.momirealms.customcrops.common.util.Key; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.Entity; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import java.util.Collection; import java.util.List; public class SugarCaneItem extends AbstractCustomCropsItem { private static SugarCaneItem instance; public SugarCaneItem() { super(Key.key("customcrops", "sugarcane_item")); } public static SugarCaneItem instance() { if (instance == null) { instance = new SugarCaneItem(); } return instance; } @Override public InteractionResult interactAt(WrappedInteractEvent wrapped) { // Sugarcane should be planted on blocks if (wrapped.existenceForm() != ExistenceForm.BLOCK) return InteractionResult.PASS; // Sugarcane should be planted on the upper face if (wrapped.clickedBlockFace() != BlockFace.UP) return InteractionResult.PASS; // Get the location of the clicked block Location location = wrapped.location(); Block block = location.getBlock(); // should be planted on sand or dirt if (block.getType() != Material.SAND && block.getType() != Material.RED_SAND && block.getType() != Material.DIRT) { return InteractionResult.PASS; } // should be planted near water outer: { for (BlockFace face : List.of(BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST)) { if (block.getRelative(face).getType() == Material.WATER) { break outer; } } return InteractionResult.PASS; } // check if the place is suitable for planting Location sugarcaneLocation = location.clone().add(0,1,0); if (!suitableForPlant(sugarcaneLocation)) { return InteractionResult.PASS; } // reduce the amount of item wrapped.itemInHand().setAmount(wrapped.itemInHand().getAmount() - 1); // Get the CustomCrops world and add block state CustomCropsWorld world = wrapped.world(); CustomCropsBlockState newBlockState = SugarCaneBlock.instance().createBlockState(); world.addBlockState(Pos3.from(sugarcaneLocation), newBlockState); // place the block BukkitCustomCropsPlugin.getInstance().getItemManager().placeBlock(sugarcaneLocation, "customcrops:sugarcane_block_id"); return InteractionResult.COMPLETE; } private boolean suitableForPlant(Location location) { Block block = location.getBlock(); if (block.getType() != Material.AIR) return false; Location center = LocationUtils.toBlockCenterLocation(location); Collection entities = center.getWorld().getNearbyEntities(center, 0.5,0.5,0.5); entities.removeIf(entity -> (entity instanceof Player || entity instanceof Item)); return entities.isEmpty(); } } Copy package net.momirealms.customcrops.api.example; import net.momirealms.customcrops.api.BukkitCustomCropsPlugin; import net.momirealms.customcrops.api.core.block.AbstractCustomCropsBlock; import net.momirealms.customcrops.api.core.world.CustomCropsBlockState; import net.momirealms.customcrops.api.core.world.CustomCropsWorld; import net.momirealms.customcrops.api.core.world.Pos3; import net.momirealms.customcrops.api.core.wrapper.WrappedBreakEvent; import net.momirealms.customcrops.api.misc.NamedTextColor; import net.momirealms.customcrops.api.util.LocationUtils; import net.momirealms.customcrops.common.util.Key; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import java.util.Collection; import java.util.Optional; public class SugarCaneBlock extends AbstractCustomCropsBlock { private static SugarCaneBlock instance; private SugarCaneBlock() { super(Key.key("customcrops", "sugarcane_block")); } @Override public boolean isBlockInstance(String id) { return id.equals("customcrops:sugarcane_block_id"); } public static SugarCaneBlock instance() { if (instance == null) { instance = new SugarCaneBlock(); } return instance; } @Override public void randomTick(CustomCropsBlockState state, CustomCropsWorld world, Pos3 location, boolean offlineTick) { // firstly check if it's the top block Pos3 upper = location.add(0,1,0); Optional upperState = world.getBlockState(upper); if (upperState.isPresent() && upperState.get().type() instanceof SugarCaneBlock) { return; } // get the current height int height = 1; for (int i = 1; i < 4; i++) { Pos3 under = location.add(0,-i,0); Optional optionalState = world.getBlockState(under); if (optionalState.isPresent() && optionalState.get().type() instanceof SugarCaneBlock) { height++; } else { break; } } if (height >= 4) return; // check if there's enough space for growing Location upperBukkitLocation = upper.toLocation(world.bukkitWorld()); // switch to the main thread BukkitCustomCropsPlugin.getInstance().getScheduler().sync().run(() -> { if (!suitableForGrow(upperBukkitLocation)) { return; } // place the upper block BukkitCustomCropsPlugin.getInstance().getItemManager().placeBlock(upperBukkitLocation, "customcrops:sugarcane_block_id"); world.addBlockState(upper, createBlockState()); }, upperBukkitLocation); } private boolean suitableForGrow(Location location) { Block block = location.getBlock(); if (block.getType() != Material.AIR) return false; Location center = LocationUtils.toBlockCenterLocation(location); Collection entities = center.getWorld().getNearbyEntities(center, 0.5,0.5,0.5); entities.removeIf(entity -> (entity instanceof Player || entity instanceof Item)); return entities.isEmpty(); } @Override public void onBreak(WrappedBreakEvent event) { Location location = event.location(); Pos3 pos3 = Pos3.from(location); CustomCropsWorld world = event.world(); // build the item ItemStack itemToDrop = BukkitCustomCropsPlugin.getInstance().getItemManager().build(null, "customcrops:sugarcane_item_id"); // break the upper blocks for (int i = 0; i < 4; i++) { Pos3 upper = pos3.add(0, i,0); Optional optionalState = world.getBlockState(upper); if (optionalState.isPresent() && optionalState.get().type() instanceof SugarCaneBlock) { world.removeBlockState(upper); Location temp = upper.toLocation(world.bukkitWorld()); BukkitCustomCropsPlugin.getInstance().getItemManager().removeBlock(temp); temp.getWorld().dropItemNaturally(temp, itemToDrop); } else { break; } } } @Override public NamedTextColor insightColor() { return NamedTextColor.YELLOW; } } sun-brightdesktopmoon --- # πŸ…ΏοΈ Custom Placeholders | CustomNameplates | XiaoMoMi Plugins [Switch Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/switch-text) [Background/Nameplate/Bubble Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/background-nameplate-bubble-text) [Shift Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/shift-text) [Conditional Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/conditional-text) [Static Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/static-text) [Vanilla Hudchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/vanilla-hud) [PreviousπŸ”Ά Imagechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/image) [NextSwitch Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/switch-text) sun-brightdesktopmoon sun-brightdesktopmoon --- # bossbar.yml | CustomNameplates | XiaoMoMi Plugins **Bossbar Section:** You can create multiple bossbar sections, each with its own settings. In this example, we have a `bossbar_1` section. But you can create more for instance `bossbar_2` Copy # You can create as many bossbar sections as you'd like bossbar_1: ... bossbar_2: ... **Bossbar Color:** Choose the color of the bossbar using the `color` field. The available options are: `BLUE`, `GREEN`, `PINK`, `PURPLE`, `RED`, `WHITE`, and `YELLOW`. For this example, the color is set to `YELLOW`. If you need to hide a specific bossbar, you need to modify the configuration in config.yml Copy bossbar_1: # BLUE, GREEN, PINK, PURPLE, RED, WHITE, YELLOW color: YELLOW **Progress Bar Style:** Set the appearance of the progress bar with the `overlay` field. Options include `"progress"`, `"notched_6"`, `"notched_10"`, `"notched_12"`, and `"notched_20"`. Here, it is set to `PROGRESS`. Copy bossbar_1: # "progress", "notched_6", "notched_10", "notched_12", "notched_20" overlay: PROGRESS **Conditions:** You can define conditions that must be met for the bossbar to be displayed. In the `conditions` section, each condition has a type (e.g., `permission`) and a `refresh-interval` to prevent heavy conditions from lagging the server. The `value` field lists the permissions required. For example, if a player has the `bossbar.show` permission, the bossbar will be shown. You can view all supported conditions here [βœ… Condition](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/condition) Copy bossbar_1: conditions: condition_1: type: permission refresh-interval: 20 # How often, in ticks, to check if the player still has the required permission value: - bossbar.show **Text Display Order:** The bossbar can display a sequence of messages, defined under `text-display-order`. Each message has a `duration` (in ticks, where 20 ticks = 1 second) and the text to display. For example: * The first message (`text: '%np_background_hello%'`) displays for 100 ticks (5 seconds). * The second message (`text: '%np_background_time% %np_background_location% %np_background_weather%'`) displays for 200 ticks (10 seconds). * The third message (`text: '%np_background_update%'`) displays for 100 ticks (5 seconds). You can add conditions for specific text messages. In the third message, a condition is defined that checks if the player has the `nameplates.admin` permission and if the value `%np_is-latest%` equals `false`. Only if both conditions are met will this message be displayed. If you don't need the text of the carousel, just configure it like this [Previousconfig.ymlchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml) [Nextactionbar.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/actionbar.yml) sun-brightdesktopmoon Copy bossbar_1: # The bossbar will cycle through the text in this exact order: text-display-order: 1: duration: 100 text: '%np_background_hello%' 2: duration: 200 text: '%np_background_time% %np_background_location% %np_background_weather%' refresh-frequency: 1 3: duration: 100 text: '%np_background_update%' conditions: permission: nameplates.admin equals: value1: '%np_is-latest%' value2: 'false' Copy bossbar_1: text: '%np_background_hello%' sun-brightdesktopmoon --- # actionbar.yml | CustomNameplates | XiaoMoMi Plugins **Conditions:** You can define specific conditions under which the actionbar will be shown. In this case, the `condition_1` checks whether a player has the `actionbar.show` permission. The `refresh-interval` specifies how often, in ticks, the permission should be rechecked (20 ticks = 1 second). The permission check ensures only players with the proper permission will see the actionbar. You can view all supported conditions here [βœ… Condition](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/condition) Copy actionbar: conditions: condition_1: type: permission refresh-interval: 20 # Refresh rate, in ticks, to recheck the permission status value: - actionbar.show **Text Display Order:** This section determines the order in which the actionbar messages are displayed. Each message has a: * **Duration:** The time the text will be visible, measured in ticks. For example, `duration: -1` means the message will stay on the screen indefinitely until manually removed or replaced. * **Text:** This defines the message that will appear in the actionbar. For example, `%np_conditional_actionbar%` is the placeholder text being displayed. Copy actionbar: text-display-order: 1: duration: -1 text: '%np_conditional_actionbar%' conditions: {} In the case of only one carousel text, this configuration is equivalent [Previousbossbar.ymlchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bossbar.yml) [Nextbubble.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml) sun-brightdesktopmoon Copy actionbar: text: '%np_conditional_actionbar%' sun-brightdesktopmoon --- # advance-data.yml | CustomNameplates | XiaoMoMi Plugins #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/advance-data.yml#default-advance) **Default Advance:** The `default` value defines the default width (in pixels or another unit) for characters in a font. In this file, all the entries have a `default` value of `9.0`, meaning those unknown characters will have a width of 9 units unless specified otherwise in the `values` section. Copy # namespace:font minecraft:default: # default advance default: 9.0 **Template Loading Sequence:** This specifies the order in which font templates (character sets) will be loaded. The sequence includes: * `unifont` (a Unicode font), * `nonlatin_european` (for non-Latin European characters), * `accented` (accented characters), * `ascii` (standard ASCII characters), * `space` (handling spaces). Copy minecraft:default: template-loading-sequence: # templates are registered in config.yml - unifont - nonlatin_european - accented - ascii - space **Override Values:** Specific characters can have their widths overridden in the `values` section. For example, the character `默` has a width of `9.0`. [Previousnameplate.ymlchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml) [Nextβž•οΈ Add New Contentschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents) sun-brightdesktopmoon Copy minecraft:default: values: 默: 9.0 sun-brightdesktopmoon --- # Cosmetics | CustomNameplates | XiaoMoMi Plugins Players can wear hats, but some hats are extremely tall and will cover the player's nameplate. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility/cosmetics#ecosmetics-magiccosmetics) ECosmetics / MagicCosmetics ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- add `offset-y` option in hat config [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility/cosmetics#hmccosmetics) HMCCosmetics --------------------------------------------------------------------------------------------------------------------------------------------------------- add `hat-height` option in hat config [Previous🀝 Compatibilitychevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility) [NextπŸ” Exampleschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples) Last updated 1 month ago * [ECosmetics / MagicCosmetics](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility/cosmetics#ecosmetics-magiccosmetics) * [HMCCosmetics](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility/cosmetics#hmccosmetics) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ–ΌοΈ Background | CustomNameplates | XiaoMoMi Plugins Basics Background is made up of three parts: left middle and right. I think it's easy to understand how the background works. The plugin obtains the width of your text and uses the binary search method to piece together a background image that adapts to the text. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/background#add-a-new-background-configuration) Add a new background configuration --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FIdlam4Pz8QEWhTdXXRhV%2Fimage.png&width=768&dpr=3&quality=100&sign=1b352e90&sv=2) Background config contains 9 images and a YAML config file. **height/ascent**: > * height: The height of the character, measured in pixels. Can be negative. This tag is separate from the area used in the source texture and just rescales the displayed result. > > * ascent: The ascent of the character, measured in pixels. This value adds a vertical shift to the displayed result. > ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fa6RV4rgppGGc12PGgz2O%2Fimage.png&width=768&dpr=3&quality=100&sign=f3c1c4b&sv=2) [Previous🏷️ Nameplatechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/nameplate) [NextπŸ’¬ Bubblechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/bubble) sun-brightdesktopmoon Copy left: image: b0 height: 14 ascent: 7 right: image: b0 height: 14 ascent: 7 middle: height: 14 ascent: 7 1: b1 2: b2 4: b4 8: b8 16: b16 32: b32 64: b64 128: b128 sun-brightdesktopmoon --- # Static Text | CustomNameplates | XiaoMoMi Plugins **Static-text** will always occupy a fixed text width, meaning the width of the text and the generated offset characters will be constant. This ensures that the layout remains consistent, regardless of the actual content, which is useful for maintaining uniform spacing in the display. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FGy2sr5UHcgTkCkXGbQ0w%2Fimage.png&width=768&dpr=3&quality=100&sign=95c0f4e9&sv=2) Copy static-text: money_hud: position: right # right / middle / left text: '%np_image_coin% %np_shift_money%' value: 180 For example, if your text width is 50px, the plugin will generate a transparent image with a total width of 130px. This results in a combined width of 180px (50 + 130 = 180). [PreviousConditional Textchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/conditional-text) [NextVanilla Hudchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/vanilla-hud) sun-brightdesktopmoon sun-brightdesktopmoon --- # Switch Text | CustomNameplates | XiaoMoMi Plugins The `switch-text` feature maps the result of a variable (such as the player's world name) to other values based on the content of the `switch` option. The `default` setting determines what text should be displayed if no matching value is found in the mapping. This allows for flexible text customization based on different variable conditions, ensuring that appropriate text is shown even when a match isn't available. Copy switch-text: world: switch: '%player_world%' case: 'world': "Overworld" 'world_nether': "The Nether" 'world_the_end': "The End" default: "Unknown world" ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fwv7sz7ua0V0W7NnDkqtZ%2Fimage.png&width=768&dpr=3&quality=100&sign=dd63f5fe&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FmmiPEdZGJO85YEtlMKTB%2Fimage.png&width=768&dpr=3&quality=100&sign=2253fc5b&sv=2) [PreviousπŸ…ΏοΈ Custom Placeholderschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders) [NextBackground/Nameplate/Bubble Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/background-nameplate-bubble-text) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ’¬ Bubble | CustomNameplates | XiaoMoMi Plugins [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/bubble#basics) Basics --------------------------------------------------------------------------------------------------------------------------------------------- You can refer to this page since they are working in almost the same way [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/bubble#add-a-new-bubble-configuration) Add a new Bubble configuration --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FWosn6o7l1WSPZwo59pBF%2Fimage.png&width=768&dpr=3&quality=100&sign=2e547d80&sv=2) Bubble config contains 4 images and a YAML config file. **height/ascent**: > * height: The height of the character, measured in pixels. Can be negative. This tag is separate from the area used in the source texture and just rescales the displayed result. > > * ascent: The ascent of the character, measured in pixels. This value adds a vertical shift to the displayed result. > [PreviousπŸ–ΌοΈ Backgroundchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/background) [NextπŸ”Ά Imagechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/image) Last updated 1 month ago * [Basics](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/bubble#basics) * [Add a new Bubble configuration](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/bubble#add-a-new-bubble-configuration) sun-brightdesktopmoon Copy left: image: chat_left height: 13 ascent: 9 middle: image: chat_middle height: 13 ascent: 9 right: image: chat_right height: 13 ascent: 9 tail: image: chat_tail height: 13 ascent: 9 sun-brightdesktopmoon --- # πŸ”Ά Image | CustomNameplates | XiaoMoMi Plugins You can create as many images as you want in CustomNameplates ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FhfDUUFC9v5lxLkRWwxPl%2Fimage.png&width=768&dpr=3&quality=100&sign=21ab4a04&sv=2) Image config contains an image and a YAML config file. Copy image: bell height: 10 ascent: 4 **height/ascent**: > * height: The height of the character, measured in pixels. Can be negative. This tag is separate from the area used in the source texture and just rescales the displayed result. > > * ascent: The ascent of the character, measured in pixels. This value adds a vertical shift to the displayed result. > ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/image#how-to-create-images-without-shadow) How to create images without Shadow? #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/image#for-1.21.4) For 1.21.4+ [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fassets.papermc.io%2Fweb%2Fandroid-chrome-512x512.png&width=20&dpr=3&quality=100&sign=be86b5e3&sv=2)Format | PaperMC Docsdocs.advntr.devchevron-right](https://docs.advntr.dev/minimessage/format.html#shadow-color) #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/image#for-1.21.3-and-below) For 1.21.3 and below To create images without shadow you should set the image's **alpha** to 254 (In another way, it's the transparency). For the moment you can only do that with an image editor for instance Aseprite/PhotoShop. Or you can just configure like this, the plugin would process the image for you If you still don't know how to do that, plugin provides another way to remove shadow easily where you can surround your images with tag. [PreviousπŸ’¬ Bubblechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/bubble) [NextπŸ…ΏοΈ Custom Placeholderschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders) Last updated 1 year ago sun-brightdesktopmoon Copy image: bell height: 10 ascent: 4 shadow: false Copy <#FFFEFD>IMAGE # legacy method <#F0F0F0>IMAGE # new method sun-brightdesktopmoon --- # Vanilla Hud | CustomNameplates | XiaoMoMi Plugins **Vanilla-hud** offers a HUD similar to the default health bar in Minecraft. To make it work, you simply need to provide the current value and the maximum value for the variable. The `reverse` option determines the display direction of the vanilla HUD, allowing you to control whether the bar fills from left to right or right to left. This gives flexibility in customizing how the HUD is presented in your plugin. Copy vanilla-hud: stamina_hud: reverse: true images: empty: stamina_0 half: stamina_1 full: stamina_2 placeholder: value: '1.1' max-value: '2' ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FeHbYYesQUzik8pyewDWQ%2Fimage.png&width=768&dpr=3&quality=100&sign=26e37e4a&sv=2) [PreviousStatic Textchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/static-text) [NextπŸ…ΏοΈ Placeholderschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/placeholders) sun-brightdesktopmoon sun-brightdesktopmoon --- # nameplate.yml | CustomNameplates | XiaoMoMi Plugins #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml#preview-duration) **Preview Duration:** * The `preview-duration` determines how long, in seconds, the nameplate preview will be shown to the player. In this configuration, it is set to 5 seconds. Copy preview-duration: 5 #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml#default-nameplate) **Default Nameplate:** * The `default-nameplate` defines the nameplate that will be displayed if a player's nameplate is set to "none." In this case, it is set to `'none'`, meaning no specific nameplate will be displayed by default. Copy default-nameplate: 'none' #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml#always-show-nameplate) **Always Show Nameplate:** * The `always-show` option controls whether the nameplate is always visible to the player, regardless of their current state. Setting this to `false` means the nameplate will not always be visible. Copy always-show: false #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml#nameplate-configuration) **Nameplate Configuration:** * **Prefix:** The `prefix` specifies a string to be displayed before the player's name. Here, `%np_switch_nameplate_color_prefix%` is used as the placeholder for colors. * **Player Name:** The `player-name` defines how the player's name is displayed. The placeholder `%np_shift_player_name%` is used here to ensure the player name remains unaffected by the client-side `Force Unicode Font` setting. * **Suffix:** The `suffix` adds a string after the player's name, here set to `%np_switch_nameplate_color_suffix%` to close color tags Copy nameplate: prefix: '%np_switch_nameplate_color_prefix%' player-name: '%np_shift_player_name%' suffix: '%np_switch_nameplate_color_suffix%' #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml#unlimited-tags) **Unlimited Tags:** The `unlimited` section defines custom tags that can be displayed along with the player's nameplate. Each tag has specific behavior and appearance settings: * **Tag 1:** * **Text:** The text to be displayed, here using the placeholder `%np_tag-image%`. * **Translation:** The `translation` field moves the tag relative to the player's nameplate, with `0,0.2,0` as the offset (X, Y, Z). * **Viewer and Owner Conditions:** These conditions determine who can see the tag and under what circumstances. For tag\_1, the owner must: * Have a nameplate (`has-nameplate: true`), * Be affected by the `INVISIBILITY<0` potion effect, * Not be disguised (`self-disguised: false`) \[Requires LibsDisguise\]. * **Other Attributes:** The tag is affected by crouching, the player's scale attribute, and spectator mode. It has a `line-width` of 1024 and a transparent background (`0,0,0,0`). * **Tag 2:** Similar to tag\_1, but with a slight adjustment in the translation (`0.01,0.2,0.01`). * **Tag 3:** This tag differs from the others in that it is only displayed when the player does **not** have a nameplate (`has-nameplate: false`). It also has a different background color (`64,0,0,0`), giving it a partially opaque black background. [Previousbubble.ymlchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml) [Nextadvance-data.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/advance-data.yml) sun-brightdesktopmoon Copy unlimited: tag_1: text: '%np_tag-image%' translation: 0,0.2,0 viewer-conditions: { } owner-conditions: has-nameplate: true potion-effect: "INVISIBILITY<0" self-disguised: false affected-by-crouching: true affected-by-scale-attribute: true affected-by-spectator: true line-width: 1024 background-color: 0,0,0,0 tag_2: text: '%np_tag-text%' translation: 0.01,0.2,0.01 viewer-conditions: { } owner-conditions: has-nameplate: true potion-effect: "INVISIBILITY<0" self-disguised: false affected-by-crouching: true affected-by-scale-attribute: true affected-by-spectator: true line-width: 1024 background-color: 0,0,0,0 tag_3: text: '%np_tag-text%' translation: 0,0.2,0 viewer-conditions: { } owner-conditions: has-nameplate: false potion-effect: "INVISIBILITY<0" self-disguised: false affected-by-crouching: true affected-by-scale-attribute: true affected-by-spectator: true line-width: 1024 background-color: 64,0,0,0 # other properties has-shadow: true shadow-strength: 1.0 shadow-radius: 0.0 is-see-through: false opacity: -1 use-default-background-color: false alignment: CENTER scale: 1,1,1 view-range: 1.0 sun-brightdesktopmoon --- # 🏷️ Nameplate | CustomNameplates | XiaoMoMi Plugins [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/nameplate#basics) Basics ------------------------------------------------------------------------------------------------------------------------------------------------ Nameplate is made up of three parts: left middle and right. The left and right parts will be distributed on both sides of the player name, while the middle part will copy itself to fit the length of the player name. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/nameplate#add-a-new-nameplate-configuration) Add a new nameplate configuration ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fo0ygubKCHAf2wteQL5d0%2Fimage.png&width=300&dpr=3&quality=100&sign=dc7ccfe5&sv=2) Nameplate config contains 3 images and a YAML config file. Copy display-name: Sad Cat command-suggestion: Sad Cat min-width: 0 # This option decides the minimum width of the nameplate left: image: cat_left height: 16 ascent: 12 middle: image: cat_middle height: 16 ascent: 12 right: image: cat_right height: 16 ascent: 12 **display-name**: The nameplate's display name **height/ascent**: > * height: The height of the character, measured in pixels. Can be negative. This tag is separate from the area used in the source texture and just rescales the displayed result. > > * ascent: The ascent of the character, measured in pixels. This value adds a vertical shift to the displayed result. > Note: In default config, most nameplate images are square, but it's not a must ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FBkgUvnda1iAkckjsG7jV%2FTG%24G1XY6HQ%28IE4%257B_%5DM5%404BP.png&width=300&dpr=3&quality=100&sign=992c30ed&sv=2)![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2F5AqnGzaZeqhZQl1rcxrq%2F%254VYF9JM%28R%7E5QF7ED6%25V5UH.png&width=300&dpr=3&quality=100&sign=7bde17e9&sv=2) [Previousβž•οΈ Add New Contentschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents) [NextπŸ–ΌοΈ Backgroundchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/background) Last updated 1 month ago * [Basics](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/nameplate#basics) * [Add a new nameplate configuration](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/add-new-contents/nameplate#add-a-new-nameplate-configuration) sun-brightdesktopmoon sun-brightdesktopmoon --- # Conditional Text | CustomNameplates | XiaoMoMi Plugins **conditional-text** contains conditions and their corresponding display content. The evaluation follows a top-to-bottom order, and it is determined solely by the sequence in the configuration file, not by any `priority` settings or names. This means the first matching condition in the file is the one that will be used. Copy conditional-text: weather: priority_1: text: 'Sunny' conditions: weather: - clear priority_2: text: 'Rainy' conditions: weather: - rain priority_3: text: 'Thunder' conditions: weather: - thunder ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fqic29ei2Ca4jBOqgOIqv%2Fimage.png&width=768&dpr=3&quality=100&sign=94b2309e&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FDRNuLPEHLEwher5Gytr0%2Fimage.png&width=768&dpr=3&quality=100&sign=afceeff4&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FSGIKgV8QHoG3KcwQJiEX%2Fimage.png&width=768&dpr=3&quality=100&sign=57f4791f&sv=2) [PreviousShift Textchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/shift-text) [NextStatic Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/static-text) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ“– Basic Font Knowledge | CustomNameplates | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#try-sending-texts-with-font) Try sending texts with font Minecraft chat component contains many decorators, one of them is font. Most of the characters are stored in `minecraft:default` font. Thin font characters are stored in `minecraft:uniform` font and enchantment table characters are stored in `minecraft:alt` font. You can send text with font by running a simple command. It's easy to find that the same text in different fonts has different shapes. Copy /tellraw @p {"text":"Hello!","font":"minecraft:default"} ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2F45fNDDWbfAZBwVTfopKh%2Fimage.png&width=300&dpr=3&quality=100&sign=cd06aeea&sv=2) Copy /tellraw @p {"text":"Hello","font":"minecraft:uniform"} ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FQHkTugttFgdkM0BfkyVO%2Fimage.png&width=300&dpr=3&quality=100&sign=5648a58&sv=2) Copy /tellraw @p {"text":"Hello","font":"minecraft:alt"} ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FvJx0HV2mwAXIv8IW3NSj%2Fimage.png&width=300&dpr=3&quality=100&sign=f13b5884&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#what-does-minecrarft-wiki-say-about-bitmap-provider) **What does Minecrarft wiki say about "**Bitmap provider**"** > #### > > [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#bitmap-provider) > > Bitmap provider > > The `bitmap` provider defines simple bitmap glyphs – glyphs from textures. It references a single PNG file, a list of the characters it applies to, an optional height, and an ascent. > > Textures may be any size, and glyphs may be any color. White glyphs can be colored any other color in-game. Other colors retain that tint when re-colored. Black glyphs always appear black. The glyph's widths are automatically determined based on the last right-most column of pixels containing any alpha value above 0. Glyphs themselves must not be larger than 512Γ—512 pixels. The chars field is a list of strings. The characters inside each string entry inside this list are mapped to the corresponding positions in the referenced file. The texture is divided evenly according to the number of strings in the list, and the length of the longest string in that list. > > The height field is the scale of the resulting glyph. This scale should generally match the a glyph's individual height, or be a power of it. While heights outside of this recommended range are allowed and are valid, the resulting glyphs declared inside the provider appears warped when rendered in-game. The height field is optional. When not defined, it defaults to 8, regardless of the underlying texture resolution. > > The ascent field is the amount of vertical shifting is applied to the glyph. In typography, the ascent is the distance above the baseline to the cap height (top of glyph). The baseline in a glyph is the line where the descender begins. For example, in the lowercase letter y, the bottom end of the y extends past the baseline. In Vanilla, when the height is 8, the ascent is most often 7, as the descender is 1. **In CustomNameplates you can easily understand it as** ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#what-are-the-benefits-of-using-other-fonts-compared-to-minecraft-default) What are the benefits of using other fonts compared to minecraft:default? As we can easily see that ItemsAdder and Oraxen are both using that font to register custom images. The issue is that "minecraft:default" font is the default font, so players can send the images if they found the original character. So those plugins will try their best to prevent players from sending these characters. If you don't register images into minecraft:default font, You don’t have to worry about players sending your custom images. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#how-can-i-use-customnameplates-placeholders-in-other-plugin) How can I use CustomNameplates placeholders in other plugin Not all the plugins on the market support custom font. If you saw a plugin that supports "MiniMessage" and "PlaceholderAPI", there's 90% chance of supporting it. It's a shame that some plugin developers would convert MiniMessage into legacy format and let Spigot handle the legacy color codes. [Previous❓️ Common Questionschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions) [Nextβš™οΈ Configchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config) * [Try sending texts with font](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#try-sending-texts-with-font) * [What does Minecrarft wiki say about "Bitmap provider"](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#what-does-minecrarft-wiki-say-about-bitmap-provider) * [What are the benefits of using other fonts compared to minecraft:default?](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#what-are-the-benefits-of-using-other-fonts-compared-to-minecraft-default) * [How can I use CustomNameplates placeholders in other plugin](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge#how-can-i-use-customnameplates-placeholders-in-other-plugin) sun-brightdesktopmoon Copy image: bell # The file name height: 10 # The size of the image ascent: 4 # The Y position of the character (no higher than height) sun-brightdesktopmoon --- # bubble.yml | CustomNameplates | XiaoMoMi Plugins #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml#sender-and-viewer-requirements) **Sender and Viewer Requirements:** * **Sender Requirements:** To send a bubble, the player must meet the conditions defined under `sender-requirements`. In this case: * The player needs the `bubbles.send` permission. * The player must also have the specified `potion-effect`, in this case, `"INVISIBILITY<0"`, which means the player doesn't have invisibility potion effect * **Viewer Requirements:** To view a bubble, the player must have the `bubbles.see` permission as defined under `viewer-requirements`. Copy sender-requirements: permission: bubbles.send potion-effect: "INVISIBILITY<0" viewer-requirements: permission: bubbles.see #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml#blacklist-channels) **Blacklist Channels:** * The `blacklist-channels` section allows you to specify which channels will not display bubbles. In this example: * The channels "Private" and "Staff" are blacklisted, meaning bubbles won't be shown in these channels. Copy blacklist-channels: - Private - Staff #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml#channel-mode) **Channel Mode:** * The `channel-mode` option controls who can see bubbles within channels: * **ALL:** All players will be able to see the bubble. * **JOINED:** Only players in the same channel can see each other's bubbles. * **CAN\_JOIN:** Players who have permission to join specific channels will see the bubble in those channels. In this configuration, `channel-mode` is set to `ALL`, meaning all players can see the bubble. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml#default-bubble) **Default Bubble:** * If a player has no specific bubble assigned, the `default-bubble` setting defines which bubble should be displayed. Here, it is set to `'chat'`. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml#display-settings) **Display Settings:** * **Y-Offset:** The `y-offset` adjusts the position of the bubble relative to the highest nameplate. In this case, it is set to `0.1`, meaning it will be displayed slightly above the nameplate. * **View Range:** The `view-range` defines how far away a player can be to still see the bubble. Here, it is set to `0.5`. (0.5 \* view distance) #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml#bubble-display-timing) **Bubble Display Timing:** * **Stay Duration:** The `stay-duration` specifies how long (in ticks) the bubble will stay visible. In this case, it is set to `150 ticks`, which equals 7.5 seconds. * **Appear and Disappear Durations:** The `appear-duration` and `disappear-duration` control how long it takes for the bubble to fade in and out. Here, the bubble will take 4 ticks (0.2 seconds) to appear and 2 ticks (0.1 seconds) to disappear. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bubble.yml#bubble-settings) **Bubble Settings:** * Under `bubble-settings`, you can configure individual bubbles: * **Display Name:** The `display-name` is the name of the bubble; in this case, it is called `"White Bubbles"`. * **Max Lines:** The `max-lines` setting determines how many lines of text can be displayed. For the "chat" bubble, up to 3 lines are allowed. * **Lines:** Each line corresponds to a specific chat bubble (e.g., `chat_1`, `chat_2`, `chat_3`). * **Line Width:** The `line-width` defines the maximum width of each line, here set to `150`. * **Background Color:** The `background-color` specifies the ARGB values (alpha, red, green, blue) for the bubble's background. In this case, it's set to `0,0,0,0` (fully transparent). * **Text Prefix and Suffix:** These fields allow you to add formatting to the text. The `text-prefix` here uses a `` color tag and a custom font called "nameplates" with a shift effect (`shift_0`). The `text-suffix` closes the font and color tag. [Previousactionbar.ymlchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/actionbar.yml) [Nextnameplate.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/nameplate.yml) sun-brightdesktopmoon Copy channel-mode: ALL Copy default-bubble: 'chat' Copy y-offset: 0.1 view-range: 0.5 Copy stay-duration: 150 appear-duration: 4 disappear-duration: 2 Copy bubble-settings: chat: display-name: "White Bubbles" max-lines: 3 lines: 1: chat_1 2: chat_2 3: chat_3 line-width: 150 background-color: 0,0,0,0 text-prefix: "" text-suffix: "" sun-brightdesktopmoon --- # πŸ” Examples | CustomNameplates | XiaoMoMi Plugins [Stamina Barchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar) [One Time Bedrock ActionBarchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/one-time-bedrock-actionbar) [Side Money Barchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/side-money-bar) [PreviousCosmeticschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility/cosmetics) [NextStamina Barchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar) sun-brightdesktopmoon sun-brightdesktopmoon --- # One Time Bedrock ActionBar | CustomNameplates | XiaoMoMi Plugins Some users may not need to display the gold amount and simply want a black background box with the default fading effect. In that case, the following configuration can be used: Copy # config.yml other-actionbar-stay-time: 100 Copy # configs/actionbar.yml actionbar: conditions: "!equals": value1: '%np_actionbar%' value2: '' text: "%np_background_other_actionbar%" [PreviousStamina Barchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar) [NextSide Money Barchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/side-money-bar) Last updated 22 days ago sun-brightdesktopmoon sun-brightdesktopmoon --- # config.yml | CustomNameplates | XiaoMoMi Plugins #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml#module-settings) **Module Settings:** * This section controls which modules are active: * `nameplates`, `backgrounds`, `bubbles`, `bossbars`, `actionbars`, and `images` are all set to `true`, meaning these features are enabled. Modifying these settings can affect resource pack generation, so reinstalling the resource pack may be necessary if you experience issues. Copy modules: nameplates: true backgrounds: true bubbles: true bossbars: true actionbars: true images: true #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml#plugin-integrations) **Plugin Integrations:** * **resource-pack:** Here, you can choose whether to integrate resource packs from specific plugins like `ItemsAdder` and `Oraxen`. * **chat integrations:** Supported chat plugins can be integrated for features like blacklist channels and ignoring functionality. Copy integrations: resource-pack: ... chat: ... #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml#resource-pack-generation-settings) **Resource Pack Generation Settings:** * **disable-generation-on-start:** Set to `false`, allowing resource pack generation when the server starts. * **namespace:** This field defines the namespace for your resource pack, here set to `"nameplates"`. * **font:** Specifies which font to use. The default font is set to `"default"`. * **initial-char:** Defines the starting character for custom fonts. Here, `뀁` is used, which won't affect normal Korean characters during chat. * **image-path:** Specifies where the PNG files for various assets (nameplates, backgrounds, images, etc.) will be generated. These paths help maintain an organized resource pack structure. * **transparent-bossbar:** Settings for generating transparent bossbars * **legacy-unicodes:** Enables support for legacy Unicode characters in Minecraft 1.20+ clients, adding approximately 900KB to your resource pack size. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml#additional-settings) **Additional Settings:** * **legacy-color-code-support:** Enables support for legacy Minecraft color codes (using `&`). Disabling this can improve color formatting performance. * **send-delay:** Specifies a delay for actionbar/bossbar to ensure compatibility with other plugins. * **catch-other-plugin-actionbar:** Set to `true` to capture actionbars from other plugins. * **unsafe-chat-event:** Set to whether the plugin should listen for chat events canceled by unknown plugins. * **refresh intervals:** Defines the default refresh intervals for conditions and placeholders. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml#font-templates) **Font Templates:** * **font-templates:** This section defines how the system loads different fonts, such as `space`, `unihex`, and `bitmap` fonts. You can add new configurations here or replace existing font templates. It manages the various character types provided by [Minecraft Font Providersarrow-up-right](https://minecraft.wiki/w/Font#Providers) * **Font Configuration Options:** * `file`: Refers to a file located in the `/CustomNameplates/font` directory. * `custom`: Specifies whether to use the default PNG bitmap font provided by the client. * `generate`: Indicates whether to include a copy of this font in the generated resource pack. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/config.yml#shift-fonts) **Shift fonts:** See [Shift Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/shift-text) [Previousβš™οΈ Configchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config) [Nextbossbar.ymlchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/config/bossbar.yml) sun-brightdesktopmoon Copy resource-pack: disable-generation-on-start: false namespace: "nameplates" font: "default" initial-char: '뀁' image-path: nameplates: 'font/nameplates/' backgrounds: 'font/backgrounds/' images: 'font/images/' bubbles: 'font/bubbles/' space-split: 'font/base/' shader: enable: true hide-scoreboard-number: false # 1.19.4 - 1.20.3 animated-text: false ItemsAdder-text-effects: false transparent-bossbar: color: YELLOW "1_20_2+": true "1_17-1_20_1": true legacy-unicodes: true Copy other-settings: legacy-color-code-support: true send-delay: 0 catch-other-plugin-actionbar: true unsafe-chat-event: false default-condition-refresh-interval: 1 default-placeholder-refresh-interval: 1 placeholder-refresh-interval: "%player_name%": 100 "%vault_prefix%": 1 Copy other-settings: font-templates: space: space: ' ': 4 β€Œ: 0 unihex: unifont: file: "unifont.zip" generate: false size_overrides: - from: "、" to: "γƒΏ" left: 0 right: 15 - from: "γˆ€" to: "ιΏΏ" left: 0 right: 15 - from: "α„€" to: "α‡Ώ" left: 0 right: 15 - from: "γ„°" to: "㆏" left: 0 right: 15 - from: "κ₯ " to: "κ₯Ώ" left: 0 right: 15 - from: "ힰ" to: "퟿" left: 0 right: 15 - from: "κ°€" to: "힯" left: 1 right: 15 - from: "ο€€" to: "ο«Ώ" left: 0 right: 15 - from: "!" to: "~" left: 0 right: 15 unifont_jp: file: "unifont_jp.zip" generate: false filter: jp: true size_overrides: - from: "γˆ€" to: "ιΏΏ" left: 0 right: 15 - from: "ο€€" to: "ο«Ώ" left: 0 right: 15 bitmap: ascii: codepoints: "ascii" file: "ascii.png" height: 8 custom: false # Is this a non-default Minecraft font? If enabled, plugin will create a new font image in the generated resource pack ascii_sga: codepoints: "ascii_sga" file: "ascii_sga.png" height: 8 custom: false asciillager: codepoints: "asciillager" file: "asciillager.png" height: 8 custom: false nonlatin_european: codepoints: "nonlatin_european" file: "nonlatin_european.png" height: 8 custom: false accented: codepoints: "accented" file: "accented.png" height: 12 custom: false legacy_unicode: legacy_unicode: file: "unicode_page_%02x.png" height: 8 custom: false unicode: unicode: file: "unicode_page_%02x.png" sizes: "glyph_sizes.bin" ttf: example: generate: false file: "example.ttf" size: 10.0 oversample: 8.0 skip: [] Copy other-settings: shift-fonts: shift_0: - space - nonlatin_european:7 - accented:9 - ascii:7 - unifont_jp - unifont shift_1: - space - nonlatin_european:3 - accented:6 - ascii:3 - legacy_unicode:3 shift_2: - space - ascii:-15 sun-brightdesktopmoon --- # ❓️ Common Questions | CustomNameplates | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q1-purple-bossbars) Q1: Purple bossbars The default bossbar in plugin should be Yellow. If you see a purple bossbar, it's a bug in Lunar Client. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q2-how-to-use-images-from-itemsadder-oraxen) Q2: How to use Images from ItemsAdder/Oraxen You should surround your images with font tags for instance Copy %img_xxx% # Don't forget to close the tag ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q3-the-background-doesnt-fit-the-text) Q3: The background doesn't fit the text This is because the plugin doesn't know the advance(width) of your custom images. Images registered in CustomNameplates would fit the background but if you are using another plugin for instance ItemsAdder to create new images, you should input your images' advance at **/configs/advance-data.yml.** ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FCqZNsGY1ENwH3UJBlX1T%2F7D1A659B809DDD22F34A11C576B142D6.png&width=768&dpr=3&quality=100&sign=169f5fc8&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q4-im-using-a-custom-bitmap-font) Q4: I'm using a custom bitmap font If you are using a custom font through bitmap, just put it into plugin's /font folder and override the previous one. Then delete the `/tmp` folder from the plugin folder. At last, restart the server. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FjxB13fEqolZBS3m565da%2Fimage.png&width=768&dpr=3&quality=100&sign=94010eef&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q5-whats-the-black-square) Q5: What's the black square? This is caused by ItemsAdder hud. Just disable it in ItemsAdder config.yml ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FJXucpqyIFn23Qiju9Zn2%2Fimage.png&width=768&dpr=3&quality=100&sign=759d5da2&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q6-i-want-to-move-the-image-down-up) Q6: I want to move the image down/up If the image is registered by CustomNameplates, simply edit the `ascent` option. You can't move the image down/up from CustomNameplates side if you are using an image from other plugins. Actually it's easy to fix because in those plugins they provide an option to edit the image's ascent (In ItemsAdder it's called `y_position`) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2F030uofho8ddLagCgfytx%2Fimage.png&width=768&dpr=3&quality=100&sign=6631fef3&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q7-players-cant-see-bossbar) Q7: Players can't see bossbar You should give them permission "bossbar.show" or remove the permission condition from bossbar configs. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q8-bubbles-not-working) Q8: Bubbles not working This is because any chat plugin would cancel the player chat event. To solve that, firstly check if the plugin is officially supported in config.yml and enable the integration if available If you are using an unsupported plugin, you can make a suggestion, but only if that plugin has an API repository. The worst solution is to turn on `unsafe-chat-event` in config.yml ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q9-bossbar-conflicts-with-hud-plugins) Q9: Bossbar conflicts with HUD plugins Setting `send-delay` to a proper value in config.yml would fix ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q10-shader-conflicts) Q10: Shader conflicts If you encounter shader conflicts, you will need to either merge the shaders (which requires some GLSL knowledge) or disable the CustomNameplates shader. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q11-super-dark-background) Q11: Super dark background If you notice that your background color is unusually dark, it means the shader has not been successfully applied to your client. This is usually caused by a shader conflict, as the client can only apply one shader at a time. If you need to use multiple shaders, you'll have to manually merge them. If you're unable to resolve the issue, you can consider reducing the opacity of the image as an alternative solution. This can help mitigate the visual impact of the shader conflict. (Alternative images can be downloaded here. To use, replace the ones under /contents/backgrounds/ folder) file-archive 8KB [backgrounds.zip](https://content.gitbook.com/content/38qW4kbjQZD9awFw00si/blobs/U7yGFVWEy3UHT9fnRGwV/backgrounds.zip) archive downloadDownload[arrow-up-right-from-squareOpen](https://content.gitbook.com/content/38qW4kbjQZD9awFw00si/blobs/U7yGFVWEy3UHT9fnRGwV/backgrounds.zip) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FxHXc1iDxGUlW8YglTHD6%2F0dd5156d2da75f777cc414f3a04633df.png&width=768&dpr=3&quality=100&sign=577c26ff&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q12-player-names-are-displayed-like) Q12: Player names are displayed like β€œβ–‘β–‘β–‘β–‘β€ This issue occurs because **unifont\_jp** cannot be read by clients running versions 1.19.4 to 1.20.3, and **unifont** cannot be read by 1.19.4 clients. This means that compatibility between certain fonts and specific Minecraft versions may lead to display issues. If you're running a 1.20+ server, you can consider removing **unifont\_jp** as shown in the example below if you don't really need it: If you're running a 1.19.4 server, you can configure as shown in the example below: ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Ft4I4HuGeogJULTMOBL9W%2Fimage.png&width=768&dpr=3&quality=100&sign=7802791&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q13-how-to-use-ttf-fonts) Q13: How to use TTF fonts Uncomment the ttf section in `config.yml` and replace `example` with the font name you use. Then put your TTF file under `/CustomNameplates/font` and restart your server. Then you are allowed to use ttf in shift-fonts Please note that ttf text advance calculations may not be accurate. Therefore it is not currently recommended for very large fonts. If you find that the advance of a certain character is incorrect, you can use a text editor to edit the advance data of the corresponding character in `/tmp/xxx.tmp(Requires a restart to apply)` [Previous✏️ Text formatchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/text-format) [NextπŸ“– Basic Font Knowledgechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/basic-font-knowledge) Last updated 1 year ago * [Q1: Purple bossbars](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q1-purple-bossbars) * [Q2: How to use Images from ItemsAdder/Oraxen](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q2-how-to-use-images-from-itemsadder-oraxen) * [Q3: The background doesn't fit the text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q3-the-background-doesnt-fit-the-text) * [Q4: I'm using a custom bitmap font](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q4-im-using-a-custom-bitmap-font) * [Q5: What's the black square?](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q5-whats-the-black-square) * [Q6: I want to move the image down/up](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q6-i-want-to-move-the-image-down-up) * [Q7: Players can't see bossbar](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q7-players-cant-see-bossbar) * [Q8: Bubbles not working](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q8-bubbles-not-working) * [Q9: Bossbar conflicts with HUD plugins](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q9-bossbar-conflicts-with-hud-plugins) * [Q10: Shader conflicts](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q10-shader-conflicts) * [Q11: Super dark background](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q11-super-dark-background) * [Q12: Player names are displayed like β€œβ–‘β–‘β–‘β–‘β€](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q12-player-names-are-displayed-like) * [Q13: How to use TTF fonts](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/common-questions#q13-how-to-use-ttf-fonts) sun-brightdesktopmoon Copy minecraft:default: default: 8 template-loading-sequence: - unifont - nonlatin_european - accented - ascii - space # The values here would override the size of the character in this font values: 默: 17 # Input the character here "%placeholder%": 17 # Input the placeholder here Copy huds: enabled: false force_color: enabled: false color: '#FFFFFF' Copy bossbar_1: conditions: condition_1: type: permission refresh-interval: 20 value: - bossbar.show Copy integrations: # Some chats, such as staff chats or menu inputs, may need to be excluded from capture. # Supported chat plugins are listed below, which allow blacklist channels and /ignore functionality to work correctly. chat: TrChat: false VentureChat: false HuskChat: false CarbonChat: false AdvancedChat: false Essentials: false Copy # config.yml shift-fonts: shift_0: - space - nonlatin_european:7 - accented:9 - ascii:7 #- unifont_jp - unifont Copy # config.yml shift-fonts: shift_0: - space - nonlatin_european:7 - accented:9 - ascii:7 - unicode Copy ttf: example: generate: false # Should this TTF file be included in the generated pack file: example.ttf # Define the TTF file to load the font from size: 10.0 # Set font size oversample: 8.0 # Oversample rate for TTF rendering skip: [] # Skipped characters in list format Copy shift_3: - space - example:3 # the number here is the Y shift sun-brightdesktopmoon --- # Background/Nameplate/Bubble Text | CustomNameplates | XiaoMoMi Plugins The `background-text` provides a border that adjusts to the width of the text. You can control whether it has a shadow using the `shadow` option, and adjust the left and right margins using the `margin` option. This allows for a fully customizable background appearance, giving you precise control over text presentation. Copy background-text: weather: background: bedrock_1 text: '%np_image_weather% %np_shift_weather%' shadow: false left-margin: 1 right-margin: 1 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FeHZsZupKEk6l9ZnAttbl%2Fimage.png&width=768&dpr=3&quality=100&sign=4334f7de&sv=2) shadow: false ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2F8lUDxmw6wKUreJp3quNT%2Fimage.png&width=768&dpr=3&quality=100&sign=1a3f1466&sv=2) shadow: true ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FlL33SseSU7PKIl1LEvpV%2Fimage.png&width=768&dpr=3&quality=100&sign=89ab3ab2&sv=2) right-margin: 20 **Nameplate-text** and **Bubble-text** work in a similar way, providing flexible control over text formatting and display. Below is how they function: ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2F2kfe1GCXD0dxQNl6hNR7%2Fimage.png&width=768&dpr=3&quality=100&sign=acc7844b&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FUqXKcv4uYjwj1OzB9YjO%2Fimage.png&width=768&dpr=3&quality=100&sign=dbed02d4&sv=2) [PreviousSwitch Textchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/switch-text) [NextShift Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/shift-text) sun-brightdesktopmoon Copy nameplate-text: halloween: nameplate: halloween text: 'Today is Halloween! Trick or treat!' left-margin: 1 right-margin: 1 Copy bubble-text: chat: bubble: chat_1 text: 'Nice to meet you!' left-margin: 1 right-margin: 1 sun-brightdesktopmoon --- # πŸ“„ Format | CustomFishing | XiaoMoMi Plugins [πŸ›’ Marketchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/market) [✨ Effectchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) [πŸŽ‰ Eventchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event) [✏️ Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/text) [🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) [πŸ¦– Entitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/entity) [🧊 Blockchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/block) [πŸ† Lootchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/loot) [πŸ—Ώ Totemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem) [πŸ•ΉοΈ MiniGamechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame) [πŸ… Competitionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition) [Previousβš–οΈ Weight System \[MUST READ\]chevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read) [NextπŸ›’ Marketchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/market) sun-brightdesktopmoon sun-brightdesktopmoon --- # ⌨️ API | CustomNameplates | XiaoMoMi Plugins Before using the CustomNameplates API, make sure you have imported the Paper API. [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fassets.papermc.io%2Fweb%2Fandroid-chrome-512x512.png&width=20&dpr=3&quality=100&sign=be86b5e3&sv=2)Project setup | PaperMC Docsdocs.papermc.iochevron-right](https://docs.papermc.io/paper/dev/project-setup) Then you can add the CustomNameplates API dependency to your project #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api#repository) πŸ“Œ Repository #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api#dependency) πŸ“Œ Dependency At last, don't forget to add CustomNameplates to plugin.yml [PreviousSide Money Barchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/side-money-bar) [NextBasic Operationschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations) sun-brightdesktopmoon Copy repositories { maven("https://repo.momirealms.net/releases/") } Copy dependencies { compileOnly("net.momirealms:custom-nameplates:{version}") } Copy depend: - CustomNameplates sun-brightdesktopmoon --- # ✏️ Text | CustomFishing | XiaoMoMi Plugins The plugin employs the `MiniMessage` ([https://docs.advntr.dev/minimessage/format.htmlarrow-up-right](https://docs.advntr.dev/minimessage/format.html) ) format for text representation. This system provides a rich and flexible way to format text with colors, styles, and other features. However, if you're more comfortable with or require the old color format (using the '&' symbol), it's still supported. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/text#legacy-color-code-support) Legacy Color Code Support: Here's how it should look in the `config.yml`: To enable the support for the legacy color format: Copy other-settings: legacy-color-code-support: true [PreviousπŸŽ‰ Eventchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event) [Next🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) sun-brightdesktopmoon sun-brightdesktopmoon --- # 🀝 Compatibility | CustomNameplates | XiaoMoMi Plugins [Cosmeticschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility/cosmetics) [Previous🐚 Command & Permissionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/command-and-permission) [NextCosmeticschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility/cosmetics) sun-brightdesktopmoon sun-brightdesktopmoon --- # 🐚 Command & Permission | CustomNameplates | XiaoMoMi Plugins Commands and their corresponding permissions are fully customizable. You can view all the plugin’s commands and permissions here. [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=fd1317f9&sv=2)Custom-Nameplates/backend/src/main/resources/commands.yml at main Β· Xiao-MoMi/Custom-NameplatesGitHubchevron-right](https://github.com/Xiao-MoMi/Custom-Nameplates/blob/main/backend/src/main/resources/commands.yml) permission description nameplates.equip.\[nameplate\] Access to a certain nameplate bubbles.equip.\[bubble\] Access to a certain bubble [Previousβœ… Conditionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/condition) [Next🀝 Compatibilitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/compatibility) sun-brightdesktopmoon sun-brightdesktopmoon --- # Shift Text | CustomNameplates | XiaoMoMi Plugins **shift-text** provides vertical offset for text. The default configuration applies a slight downward shift to better align the text with the background positioning. This ensures that the text is displayed in harmony with other visual elements, such as nameplates or bubbles, improving overall aesthetic consistency. Copy # /configs/custom-placeholder.yml shift-text: weather: text: "Weather: %np_conditional_weather%" font: shift_1 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FSlVQSEVMVhxyDkmggWmW%2Fimage.png&width=768&dpr=3&quality=100&sign=14839f6b&sv=2) Fonts are registered within the `config.yml` file. Here are a few examples to demonstrate how this system works: Using **shift\_1** as an example, if the `ascii` font has a height of 8 pixels (font image height) and an ascent of 3, it means the text is shifted downward by 5 pixels relative to its normal position. This downward offset is calculated as the difference between the height and ascent (`8 - 3 = 5`), meaning the text will appear lower than usual to align with other elements. Here’s an example of the **default height** configuration for fonts in `config.yml`: For the **accented** font, due to its larger height, a higher ascent value is used to maintain proper alignment. In this case, an ascent of 6 is applied instead of 3, balancing the larger font height for accented characters. By adjusting the values in the configuration, you'll notice a clear visual difference in how the text is rendered. Here’s an example of how these adjustments might look: (Please note that after making these adjustments, you'll need to **reload your resource pack** for the changes to take effect! This ensures that all the new font settings, such as the updated heights and ascents, are properly applied and reflected in-game.) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FEMkoUJwxjq1Ok8jyzMJc%2Fimage.png&width=768&dpr=3&quality=100&sign=81b3b03f&sv=2) ascii:3 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FdZMmdez4xY6ewo89gGF9%2Fimage.png&width=768&dpr=3&quality=100&sign=547b9fe3&sv=2) ascii:-15 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FddWt9eXwVM4Zl7VSG9Pg%2Fimage.png&width=768&dpr=3&quality=100&sign=665f0b76&sv=2) ascii:-30 When using this in practice, you only need to select the specific character sets you plan to use and create offset fonts accordingly. This approach minimizes the size of the resource pack by avoiding the inclusion of unnecessary character sets, leading to better performance and faster loading times. In the default configuration, since only numbers are used for displaying gold, `money` uses `shift_2` and selected the ASCII character set. This efficiently minimizes the resource pack by only including the necessary characters for the money display. [PreviousBackground/Nameplate/Bubble Textchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/background-nameplate-bubble-text) [NextConditional Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/conditional-text) sun-brightdesktopmoon Copy # config.yml shift-fonts: shift_1: - "space" - "nonlatin_european:3" - "accented:6" - "ascii:3" - "legacy_unicode:3" Copy ascii: 8 ascii_sga: 8 asciillager: 8 nonlatin_european: 8 accented: 12 Copy shift_1: - "space" - "nonlatin_european:3" - "accented:6" - "ascii:-15" - "legacy_unicode:3" Copy shift_1: - "space" - "nonlatin_european:3" - "accented:6" - "ascii:-30" - "legacy_unicode:3" Copy # config.yml shift-fonts: shift_2: - "space" - "ascii:-15" Copy # /configs/custom-placeholder.yml shift-text: money: text: "%vault_eco_balance%" font: shift_2 sun-brightdesktopmoon --- # πŸ¦– Entity | CustomFishing | XiaoMoMi Plugins Entity configuration is straightforward. It only requires an ID and a velocity setting. Depending on the entity you are using, some plugins allow the use of properties. [ItemsAdderchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/itemsadder) [MythicMobschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mythicmobs) Copy skeleton: entity: skeleton velocity: horizontal: 1 vertical: 1.3 properties: {} **Entity ID**: A unique identifier for each entity. This ensures the game or plugin can recognize and differentiate between various entities. **Velocity**: This refers to the speed of an entity's movement when getting out of water surface. **Properties**: These are additional settings that can define an entity's behavior, appearance, or other characteristics. The available properties can vary based on the type of entity and the specific plugin in use. [Previous🎁 Itemchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) [Next🧊 Blockchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/block) sun-brightdesktopmoon sun-brightdesktopmoon --- # Oraxen | CustomFishing | XiaoMoMi Plugins For items: Copy material: Oraxen:id For blocks: Copy block: Oraxen:id [PreviousMythicMobschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mythicmobs) [NextEcoItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/ecoitems) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ•ΉοΈ MiniGame | CustomFishing | XiaoMoMi Plugins Mini game config has these two properties that would apply for all game types: **difficulty & time** Copy # The difficulty of the game (1~100) (EFAULT VALUE: "20~80") difficulty: 15~30 difficulty: 50 # Maximum allowed game time in seconds (DEFAULT VALUE: 15) time: 15~25 time: 15 Mini games provide fun for fishing and can to some extent prevent players from using automatic fishing. Here are the inbuilt game types: [Accruate clickchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/accruate-click) [Holdchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/hold) [Tensionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/tension) [Clickchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/click) [Dancechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/dance) [PreviousπŸ—Ώ Totemchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem) [NextAccruate clickchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/accruate-click) sun-brightdesktopmoon sun-brightdesktopmoon --- # Accruate click v2 | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FNzbF5ys.gif&width=768&dpr=3&quality=100&sign=90387e70&sv=2) Copy accurate_click_game: game-type: accurate_click_v2 difficulty: 30~80 time: 15 title: total-width: 10~12 success-width: 1~3 body: "-" target: "-" pointer: "-" subtitle: 'Reel in at the most critical moment' [PreviousAccruate clickchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/accruate-click) [NextAccruate click v3chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/accruate-click-v3) sun-brightdesktopmoon sun-brightdesktopmoon --- # MMOItems | CustomFishing | XiaoMoMi Plugins For items: Copy material: MMOItems:TYPE:ID [PreviousNexochevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/nexo) [NextNeigeItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/neigeitems) sun-brightdesktopmoon sun-brightdesktopmoon --- # Hold | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FWUGdPHgVcnvGttfedQO3%2Fimage.png&width=768&dpr=3&quality=100&sign=e5e091ac&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FRDY0JLc.gif&width=768&dpr=3&quality=100&sign=10ee9c29&sv=2) [PreviousAccruate click v3chevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/accruate-click-v3) [NextHold v2chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/hold-v2) sun-brightdesktopmoon Copy hold_game_easy: game-type: hold difficulty: 15~35 time: 15 title: '{progress}' # Tip would show on the title to guide the player how to play tip: 'Press to start' subtitle: font: 'customfishing:default' bar: 'λ€Œ' judgment-area: 'λ€’' pointer: '뀁' arguments: punishment: 0.2 bar-effective-area-width: 155 judgment-area-offset: -160 judgment-area-width: 45 pointer-icon-width: 5 water-resistance: 0.15 pulling-strength: 0.35 loosening-strength-loss: 0.25 elasticity: false elasticity-power: 0.7 hold-time-requirements: - 3 - 3 - 4 progress: - '뀁' - '뀂' - '뀃' - '뀄' - 'λ€…' - '뀆' - '뀇' - 'λ€ˆ' - '뀉' sun-brightdesktopmoon --- # Accruate click v3 | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FjGtr5Vj.gif&width=768&dpr=3&quality=100&sign=96321387&sv=2) Copy accurate_click_game: game-type: accurate_click_v3 difficulty: 40~60 time: 150 title: Reel in at the most critical moment subtitle: font: 'customfishing:default' bar: 'λ€Œ' judgment-area: 'λ€”' pointer: '뀁' arguments: bar-effective-area-width: 155 judgment-area-offset: -160 judgment-area-width: 27 pointer-icon-width: 5 pointer-offset: -158 max-speed: 150 min-speed: 15 [PreviousAccruate click v2chevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/accruate-click-v2) [NextHoldchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/hold) sun-brightdesktopmoon sun-brightdesktopmoon --- # Nexo | CustomFishing | XiaoMoMi Plugins For items: Copy material: Nexo:id For blocks: Copy block: Nexo:id [PreviousEcoItemschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/ecoitems) [NextMMOItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mmoitems) sun-brightdesktopmoon sun-brightdesktopmoon --- # 🧊 Block | CustomFishing | XiaoMoMi Plugins The fishing plugin introduces a unique feature that enables players to fish up blocks! This isn't limited to vanilla blocks or the default fishing loots. The plugin seamlessly integrates with other plugins, allowing users to set up custom blocks. One of the highlights of this feature is the capability to fish up chests filled with randomized items, making every catch a potential surprise! Copy apple_crate: block: barrel velocity: horizontal: 1.07 vertical: 1.5 properties: directional: true storage: apple_1: item: APPLE amount: 1~2 chance: 0.8 apple_2: item: APPLE amount: 1~2 chance: 0.8 **Block Type:** Define the type of block. In this case, it's a barrel. **Velocity**: This refers to the speed of the block's movement when getting out of water surface. **Properties:** Configure the behavior and characteristics of the block. **Available properties:** [PreviousπŸ¦– Entitychevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/entity) [NextπŸ† Lootchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/loot) sun-brightdesktopmoon Copy directional-4: true directional-6: true moisture: 4 campfire: true rotatable: true noteblock: instrument: PIANO note: 7 age: 4 turtle-eggs: 3 storage: apple_1: # Tip: To use Custom Fishing items, just input "CustomFishing:type:id" item: APPLE amount: 1~2 chance: 0.8 sun-brightdesktopmoon --- # NeigeItems | CustomFishing | XiaoMoMi Plugins For items: Copy material: NeigeItems:id [PreviousMMOItemschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mmoitems) [NextExecutableItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/executableitems) sun-brightdesktopmoon sun-brightdesktopmoon --- # Click | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FhxHnhyC.gif&width=768&dpr=3&quality=100&sign=bba88525&sv=2) Copy click_game: game-type: click difficulty: 40~60 # amount of click time: 15 left-click: true # true = left click / false = right click title: '{progress}' subtitle: "Left click {clicks} times to win. Time left {time_left}s" [PreviousTensionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/tension) [NextDancechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/dance) sun-brightdesktopmoon sun-brightdesktopmoon --- # MythicMobs | CustomFishing | XiaoMoMi Plugins For items: Copy material: MythicMobs:id For mobs: Copy entity: MythicMobs:id properties: level: 0.0 [PreviousItemsAdderchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/itemsadder) [NextOraxenchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/oraxen) sun-brightdesktopmoon sun-brightdesktopmoon --- # ItemsAdder | CustomFishing | XiaoMoMi Plugins For items: Copy material: ItemsAdder:namespace:id For blocks: Copy block: ItemsAdder:namespace:id For mobs: Copy mob: ItemsAdder:namespace:id properties: frustumCulling: false # if this entity needs to be frozen if not visible by the player. noBase: false # if this custom entity doesn't have a Bukkit real entity as base noHitbox: false # if this custom entity bones have the armorstands hitboxes or not [Previous🀝 Compatibilitychevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility) [NextMythicMobschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mythicmobs) sun-brightdesktopmoon sun-brightdesktopmoon --- # AdvancedEnchantments | CustomFishing | XiaoMoMi Plugins For enchantments: Copy AE:enchantment:level: ... [PreviousSupported levelerschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/supported-levelers) [NextEcoEnchantschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/ecoenchants) sun-brightdesktopmoon sun-brightdesktopmoon --- # Tension | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FZv8Ts8fUYuZhx7Uomoqm%2Fimage.png&width=768&dpr=3&quality=100&sign=150c3705&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FpQ185gn.gif&width=768&dpr=3&quality=100&sign=cc351a93&sv=2) [PreviousHold v2chevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/hold-v2) [NextClickchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/click) sun-brightdesktopmoon Copy tension_game_easy: game-type: tension difficulty: 20~35 time: 15 title: '{progress}' # Tip would show on the title to guide the player how to play tip: 'Press to start' subtitle: font: 'customfishing:default' bar: '뀑' fish: '뀍' struggling-fish: - λ€Ž - 뀏 - λ€Ž - 뀐 arguments: bar-effective-area-width: 218 fish-offset: -221 fish-start-position: 165 fish-icon-width: 8 success-position: 21 ultimate-tension: 50 normal-pull-tension-increase: 1 struggling-tension-increase: 2 loosening-tension-loss: 2 tension: - '뀑' - 'λ€’' - '뀓' - 'λ€”' - '뀕' - 'λ€–' - 'λ€—' - 'λ€˜' - 'λ€™' sun-brightdesktopmoon --- # 🀝 Compatibility | CustomFishing | XiaoMoMi Plugins [ItemsAdderchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/itemsadder) [MythicMobschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mythicmobs) [Oraxenchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/oraxen) [EcoItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/ecoitems) [Nexochevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/nexo) [MMOItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mmoitems) [NeigeItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/neigeitems) [ExecutableItemschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/executableitems) [mcMMO Treasurechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mcmmo-treasure) [Supported levelerschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/supported-levelers) [AdvancedEnchantmentschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/advancedenchantments) [EcoEnchantschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/ecoenchants) [BattlePasschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/battlepass) [BetonQuest 3.0chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/betonquest-3.0) [ClueScrollschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/cluescrolls) [RealisticSeasonschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/realisticseasons) [Questschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/quests) [TypeWriterchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/typewriter) [Zaphkielchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/zaphkiel) [AuraSkillschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/auraskills) [PreviousπŸ…ΏοΈ Placeholder & Expressionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression) [NextItemsAdderchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/itemsadder) sun-brightdesktopmoon sun-brightdesktopmoon --- # Dance | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FeRrMZrn.gif&width=768&dpr=3&quality=100&sign=fde899f7&sv=2) Copy dance_game: game-type: dance difficulty: 40~60 # (The amount of buttons would be difficulty/4) time: 15 easy: true # (true = ←→ / false = ←→↑↓) tip: '↑: Jump | ↓: Sneak | ←: LeftClick | β†’: RightClick' title: left-button: '← ' left-button-correct: '← ' left-button-wrong: '← ' left-button-current: '← ' right-button: 'β†’ ' right-button-correct: 'β†’ ' right-button-wrong: 'β†’ ' right-button-current: 'β†’ ' up-button: '↑ ' up-button-correct: '↑ ' up-button-wrong: '↑ ' up-button-current: '↑ ' down-button: '↓ ' down-button-correct: '↓ ' down-button-wrong: '↓ ' down-button-current: '↓ ' display-amount: 7 # (Max amount of buttons to be displayed at the same time) subtitle: "Dance to win. Time left {time_left}s" sound: correct: "minecraft:block.amethyst_block.hit" wrong: "minecraft:block.anvil.land" [PreviousClickchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/click) [NextπŸ… Competitionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition) sun-brightdesktopmoon sun-brightdesktopmoon --- # mcMMO Treasure | CustomFishing | XiaoMoMi Plugins Firstly create an item loot in /item folder Copy mcmmo: material: mcMMO:treasure ... (loot properties) then add it loot-conditions.yml Copy - mcmmo:+10 [PreviousExecutableItemschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/executableitems) [NextSupported levelerschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/supported-levelers) sun-brightdesktopmoon sun-brightdesktopmoon --- # RealisticSeasons | CustomFishing | XiaoMoMi Plugins For requirements: Copy season: - spring - autumn - summer - winter [PreviousClueScrollschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/cluescrolls) [NextQuestschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/quests) sun-brightdesktopmoon sun-brightdesktopmoon --- # EcoItems | CustomFishing | XiaoMoMi Plugins For items: Copy material: EcoItems:id [PreviousOraxenchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/oraxen) [NextNexochevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/nexo) sun-brightdesktopmoon sun-brightdesktopmoon --- # Accruate click | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FQSqig5l8GmuOsebVgSkV%2Fimage.png&width=768&dpr=3&quality=100&sign=55fdee31&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2F4F3zV0Q.gif&width=768&dpr=3&quality=100&sign=44b6df8f&sv=2) [PreviousπŸ•ΉοΈ MiniGamechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame) [NextAccruate click v2chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/accruate-click-v2) sun-brightdesktopmoon Copy rainbow_1: game-type: accurate_click title: '<#fd4036>RED!' subtitle: font: 'customfishing:default' bar: '뀋' pointer: '뀁' arguments: pointer-offset: -119 pointer-width: 5 width-per-section: 16 max-speed: 150 min-speed: 15 success-rate-sections: 1: 1 2: 0 3: 0 4: 0 5: 0 6: 0 7: 0 Copy accurate_click_bar_1_easy: game-type: accurate_click difficulty: 15~30 time: 15 title: - 'So close, stay cool!' - 'The fish is hooked, focus on it!' - 'Sturdy on! Victory is almost ours!' subtitle: font: 'customfishing:default' bar: '뀂' pointer: '뀁' arguments: pointer-offset: -183 pointer-width: 5 width-per-section: 16 max-speed: 150 min-speed: 15 success-rate-sections: 1: 0 2: 0 3: 0 4: 0.2 5: 0.6 6: 1 7: 0.6 8: 0.2 9: 0 10: 0 11: 0 sun-brightdesktopmoon --- # Side Money Bar | CustomNameplates | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F2449012911-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F38qW4kbjQZD9awFw00si%252Fuploads%252F3110UME9ks74gmTtpguQ%252Fimage.png%3Falt%3Dmedia%26token%3D784310d7-6a70-408b-91a8-a2b26ef02002&width=768&dpr=3&quality=100&sign=28efcc7a&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/side-money-bar#tutorial) Tutorial First, we need to prepare a new background configuration. Please place the following content into the plugin's `contents/background` folder. file-archive 7KB [backgrounds.zip](https://2449012911-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F38qW4kbjQZD9awFw00si%2Fuploads%2F1k3jweXmXvYKy1eCBo3E%2Fbackgrounds.zip?alt=media&token=77e180bf-f46a-412f-bcd3-39e47b33c493) archive downloadDownload[arrow-up-right-from-squareOpen](https://2449012911-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F38qW4kbjQZD9awFw00si%2Fuploads%2F1k3jweXmXvYKy1eCBo3E%2Fbackgrounds.zip?alt=media&token=77e180bf-f46a-412f-bcd3-39e47b33c493) Secondly open your `/contents/images/coin.yml` file and modify the `ascent` value to a lower position. Then add a new shift font in `config.yml` At last open `configs/custom-placeholders.yml` and add or modify the configuration as follows: ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/side-money-bar#tips) Tips If you want to add another line, such as the player's points, simply follow the same steps as above: create a new background, shift-font, and image configuration, but with a smaller ascent value. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F2449012911-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F38qW4kbjQZD9awFw00si%252Fuploads%252FmeXVo3vVfZfGFW5n3Kzv%252Fimage.png%3Falt%3Dmedia%26token%3Dc3066847-cabc-49e8-9dc7-799dc49acca1&width=768&dpr=3&quality=100&sign=f0ba6570&sv=2) If you don't need a background, simply replace the `background-text` variable with the `shift-text` variable. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F2449012911-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F38qW4kbjQZD9awFw00si%252Fuploads%252FuBLUbKC5ccpURBUUbl9C%252Fimage.png%3Falt%3Dmedia%26token%3D5fc92d0a-1e5d-4ee3-bf4a-e39d9ca11bf9&width=768&dpr=3&quality=100&sign=d5a96bfe&sv=2) Of course, you can also use a custom font if you think it looks better. Just don't forget to create a more compact background and icon. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2F2449012911-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F38qW4kbjQZD9awFw00si%252Fuploads%252FfIHwQxN1ANGTox6q17f7%252Fimage.png%3Falt%3Dmedia%26token%3D30c2437c-cae9-4413-a5e4-4c1657ede6c0&width=768&dpr=3&quality=100&sign=3b57168e&sv=2) [PreviousOne Time Bedrock ActionBarchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/one-time-bedrock-actionbar) [Next⌨️ APIchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api) Last updated 22 days ago * [Tutorial](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/side-money-bar#tutorial) * [Tips](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/side-money-bar#tips) sun-brightdesktopmoon Copy image: coin height: 10 ascent: -40 shadow: false Copy other-settings: shift-fonts: shift_3: - "space" - "ascii:-41" Copy conditional-text: actionbar: priority_1: text: '%np_background_other_actionbar%' # hides the money hud when a player is other game mode conditions: condition_or: type: "||" refresh-interval: 1 value: condition_gamemode: type: "!gamemode" refresh-interval: 1 value: survival priority_2: text: '%np_static_other_actionbar%%np_static_money_hud%' # displays the money hud + other plugin's actionbar message conditions: condition_other_actionbar: type: "!equals" refresh-interval: 1 value: value1: '%np_actionbar%' value2: "" priority_3: text: '%np_offset_210%%np_static_money_hud%' # displays the money hud only Copy background-text: money_hud: background: black text: '%np_shift_money%' shadow: false left-margin: 4 right-margin: 1 Copy static-text: money_part: position: left text: '%np_background_money_hud%' value: 0 money_hud: position: left text: '%np_static_money_part%%np_offset_-6%%np_image_coin%' value: 0 other_actionbar: position: middle text: "%np_background_other_actionbar%" value: 210 Copy shift-text: money: text: "100.0k" font: shift_3 Copy conditional-text: actionbar: priority_1: text: '%np_background_other_actionbar%' # hides the hud when a player is other game mode conditions: condition_or: type: "||" refresh-interval: 1 value: condition_gamemode: type: "!gamemode" refresh-interval: 1 value: survival priority_2: text: '%np_static_other_actionbar%%np_static_money_hud%%np_static_point_hud%' # displays the money hud + point hud + other plugin's actionbar message conditions: condition_other_actionbar: type: "!equals" refresh-interval: 1 value: value1: '%np_actionbar%' value2: "" priority_3: text: '%np_offset_210%%np_static_money_hud%%np_static_point_hud%' # displays the money hud and the point hud Copy background-text: point_hud: background: black_2 # You'll need to create this background text: '%np_shift_point%' shadow: false left-margin: 4 right-margin: 1 Copy static-text: point_part: position: left text: '%np_background_point_hud%' value: 0 point_hud: position: left text: '%np_static_point_part%%np_offset_-6%%np_image_bell%' value: 0 Copy shift-text: point: text: "12345" font: shift_4 # You'll need to create this shift font Copy static-text: money_part: position: left text: '%np_shift_money%' value: 0 point_part: position: left text: '%np_shift_point%' value: 0 money_hud: position: left text: '%np_image_coin%%np_static_money_part%' value: 0 point_hud: position: left text: '%np_image_bell%%np_static_point_part%' value: 0 sun-brightdesktopmoon --- # Basic Operations | CustomNameplates | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#get-api-instance) Get API instance Copy CustomNameplatesAPI api = CustomNameplatesAPI.getInstance(); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#create-text-with-images) Create text with images Copy Optional background = api.getBackground("bedrock_1"); if (background.isPresent()) { String textWithBackground = api.createTextWithImage("Test Message", background.get(), 1, 1); } ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#subscribe-events) Subscribe events Copy CustomNameplates.getInstance().getEventManager().subscribe(CommandFeedbackEvent.class, event -> { if (event.key().equals("xxx.xxx")) { if (event.sender() instanceof Player player) { event.cancelled(true); player.sendActionBar("xxxxxxx"); } } }); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#get-the-advance-of-the-text) Get the advance of the text [Previous⌨️ APIchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api) [NextπŸ“ CustomNameplates Update: Version 2.4 to 3.0 Overviewchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview) * [Get API instance](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#get-api-instance) * [Create text with images](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#create-text-with-images) * [Subscribe events](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#subscribe-events) * [Get the advance of the text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations#get-the-advance-of-the-text) sun-brightdesktopmoon Copy float advance = api.getTextAdvance("111 1234"); sun-brightdesktopmoon --- # BetonQuest 3.0 | CustomFishing | XiaoMoMi Plugins [https://modrinth.com/plugin/betonquestaddonarrow-up-right](https://modrinth.com/plugin/betonquestaddon) [PreviousBattlePasschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/battlepass) [NextClueScrollschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/cluescrolls) Last updated 2 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # TypeWriter | CustomFishing | XiaoMoMi Plugins [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=fd1317f9&sv=2)GitHub - Xiao-MoMi/CustomFishingTypeWriterExtension: Integrate CustomFishing with TypewriterGitHubchevron-right](https://github.com/Xiao-MoMi/CustomFishingTypeWriterExtension) [PreviousQuestschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/quests) [NextZaphkielchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/zaphkiel) sun-brightdesktopmoon sun-brightdesktopmoon --- # ClueScrolls | CustomFishing | XiaoMoMi Plugins Copy common_1: lore: '&aβ˜… &fCatch %amount% fish: %completed%' clueType: customfishing_loot amount: 7-15 objective: Catch %amount% tuna fish clueName: Fisherman data: id: tuna_fish <- specific loot id: any <- any loot common_2: lore: '&aβ˜… &fCatch %amount% golden star fish: %completed%' clueType: customfishing_group amount: 7-15 objective: Catch %amount% golden star fish clueName: Fisherman data: group: golden_star [PreviousBetonQuest 3.0chevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/betonquest-3.0) [NextRealisticSeasonschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/realisticseasons) sun-brightdesktopmoon sun-brightdesktopmoon --- # Hold v2 | CustomFishing | XiaoMoMi Plugins ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2F6Ua0Sm5.gif&width=768&dpr=3&quality=100&sign=3a5cbc70&sv=2) Copy hold_game_easy: game-type: hold_v2 difficulty: 100 time: 15 title: '{progress}' left-click: true # true = left click / false = right-click # Tip would show on the title to guide the player how to play tip: 'Press to start' subtitle: font: 'customfishing:default' bar: 'λ€Œ' judgment-area: 'λ€’' pointer: '뀁' arguments: punishment: 0.2 bar-effective-area-width: 155 judgment-area-offset: -160 judgment-area-width: 45 pointer-icon-width: 5 water-resistance: 0.15 pulling-strength: 3 loosening-strength-loss: 0.5 elasticity: false elasticity-power: 0.7 hold-time-requirements: - 3 - 3 - 4 progress: - '뀁' - '뀂' - '뀃' - '뀄' - 'λ€…' - '뀆' - '뀇' - 'λ€ˆ' - '뀉' [PreviousHoldchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/hold) [NextTensionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/tension) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ…ΏοΈ Placeholders | CustomNameplates | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/placeholders#common-placeholders) Common Placeholders If you want to use with PlaceholderAPI in other plugins, simply replace `%np_` with `%nameplates_`. (e.g. `%nameplates_offset_30%`) If this is a nested placeholder and contains relational placeholders, add `%rel_` before the placeholder. (e.g. `%rel_np_conditional_friend%`) If this placeholder is shared by all players, you can add `%shared_` before the placeholder to improve performance (e.g. `%shared_customcrops_season_world%`) placeholder value %player\_name% player name %player\_x% x coordinate %player\_y% y coordinate %player\_z% z coordinate %player\_world% world name %player\_remaining\_air% the remaining oxygen %np\_offset\_\[-256~256\]% generate offset characters %np\_tag-image% nameplate image %np\_tag-text% nameplate text %np\_tag% full nameplate tag %np\_equipped\_nameplate% id of the equipped nameplate %np\_equipped\_nameplate-name% display name of the equipped nameplate %np\_equipped\_bubble% id of the equipped bubble %np\_equipped\_bubble-name% display name of the equipped bubble %np\_is-latest% check if the plugin is the latest %np\_gradient\_\[1~20\]% generate gradient offset numbers based on speed (1~20) %np\_time\_12% time in 12-hour format %np\_time\_24% time in 24-hour format %np\_biome% id of the biome %np\_actionbar% actionbar message from other plugins or commands %np\_image\_\[id\]% the image registered in CustomNameplates %np\_img\_\[id\]% the raw image character %np\_is\_showing% gets whether the player has used the toggle command to display the tag (true/false) %np\_is\_previewing% gets whether the player is previewing the tag (true/false) %np\_conditional\_\[id\]% [Conditional Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/conditional-text) %np\_background\_\[id\]% %np\_background-text\_\[id\]% %np\_background-image\_\[id\]% [Background/Nameplate/Bubble Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/background-nameplate-bubble-text) %np\_nameplate\_\[id\]% %np\_nameplate-text\_\[id\]% %np\_nameplate-image\_\[id\]% [Background/Nameplate/Bubble Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/background-nameplate-bubble-text) %np\_bubble\_\[id\]% %np\_bubble-text\_\[id\]% %np\_bubble-image\_\[id\]% [Background/Nameplate/Bubble Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/background-nameplate-bubble-text) %np\_switch\_\[id\]% [Switch Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/switch-text) %np\_vanilla\_\[id\]% [Vanilla Hud](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/vanilla-hud) %np\_static\_\[id\]% [Static Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/static-text) %np\_shift\_\[id\]% [Shift Text](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/shift-text) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/placeholders#extra-placeholders) Extra Placeholders Extra placeholders are additional variables provided by the plugin. These variables are currently only available after the PlaceholderAPI is installed, which provides some useful functions. placeholder value %npex\_offset\_\[number\]% generate offset characters %npex\_lunarphase\_\[world\]% gets the lunar phase in the specified world %npex\_lunarphase% gets the lunar phase in the world player in %npex\_weather\_\[world\]% gets the weather in the specified world %npex\_weather% gets the weather in the world player in %npex\_time12\_\[world\]% time in 12-hour format %npex\_time12% time in 12-hour format %npex\_time24\_\[world\]% time in 24-hour format %npex\_time24% time in 24-hour format %npex\_background\_\[id\]:\[left-margin\]:\[right-margin\]:\[width\]% generates a background based on the given parameters Example: %npex\_background\_bedrock\_1:1:1:20% %npex\_newline% returns \\n %npex\_smallfont\_\[placeholder/text\]% gets the text in small font ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fg4wtRrMAjHLwLx4VVuoA%2Fimage.png&width=300&dpr=3&quality=100&sign=30f7f90c&sv=2) %npex\_static\_\[position\]:\[value\]:\[text\]% create a static text (position = left,right,middle) [PreviousVanilla Hudchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/custom-placeholders/vanilla-hud) [Nextβœ… Conditionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/condition) Last updated 23 days ago * [Common Placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/placeholders#common-placeholders) * [Extra Placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/placeholders#extra-placeholders) sun-brightdesktopmoon sun-brightdesktopmoon --- # Stamina Bar | CustomNameplates | XiaoMoMi Plugins before: ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FOnbt1sSS30qH4Txz8AxR%2Fimage.png&width=768&dpr=3&quality=100&sign=b088dfe6&sv=2) after: ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fe1UZDdIzlJTUqQBtqN7u%2Fimage.png&width=768&dpr=3&quality=100&sign=cb2163f6&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FbuTaLtsxDmiwj5OFuCMf%2Fimage.png&width=768&dpr=3&quality=100&sign=a81cf687&sv=2) [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar#step-1) Step 1 ------------------------------------------------------------------------------------------------------------------------------------------ Move the image and text up Now reload the plugin and reinstall the resource pack to see the changes ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fjf7LPT1kv6trPpHJ1vQz%2Fimage.png&width=768&dpr=3&quality=100&sign=eb9238dd&sv=2) [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar#step-2) Step 2 ------------------------------------------------------------------------------------------------------------------------------------------ Default config hides the money when players are in water but in this case we don't have to hide it ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FRgjUtzZWTyu9Uner0nJe%2Fimage.png&width=768&dpr=3&quality=100&sign=1dbc894f&sv=2) Now reload the configs and see the result ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FK4cBhAa5pxZPyaxUrwgx%2Fimage.png&width=768&dpr=3&quality=100&sign=542d9172&sv=2) [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar#step-3) Step 3 ------------------------------------------------------------------------------------------------------------------------------------------ Add stamina bar Method 1: Since we know that the width of this hud is fixed, we can use `%nameplates_offset_100%%nameplates_vanilla_stamina_hud%` to add another line Method 2: We can also use static text [PreviousπŸ” Exampleschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples) [NextOne Time Bedrock ActionBarchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/one-time-bedrock-actionbar) Last updated 22 days ago * [Step 1](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar#step-1) * [Step 2](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar#step-2) * [Step 3](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/examples/stamina-bar#step-3) sun-brightdesktopmoon Copy /contents/images/coin.yml image: coin height: 10 ascent: -14 β†’ -5 Copy config.yml shift_2: - "space" - "ascii:-6" Copy plugins\CustomNameplates\configs\custom-placeholders.yml # before conditional-text: actionbar: priority_1: text: '%np_background_other_actionbar%' conditions: '||': '!=': value1: '%player_remaining_air%' value2: "300" '!gamemode': survival priority_2: text: '%np_static_money_hud%%np_offset_-179%%np_static_other_actionbar%' conditions: '!equals': value1: '%np_actionbar%' value2: "" priority_3: text: '%np_static_money_hud%' # after conditional-text: actionbar: priority_1: text: '%np_static_money_hud%%np_offset_-180%%np_static_other_actionbar%' conditions: '||': '!=': value1: '%player_remaining_air%' value2: "300" '!gamemode': survival priority_2: text: '%np_static_money_hud%%np_offset_-180%%np_static_other_actionbar%' conditions: '!equals': value1: '%np_actionbar%' value2: "" priority_3: text: '%np_static_money_hud%' Copy conditional-text: actionbar: priority_1: text: '%np_static_money_hud%%np_offset_-180%%np_static_other_actionbar%' conditions: '||': '!=': value1: '%player_remaining_air%' value2: "300" '!gamemode': survival priority_2: text: '%np_offset_100%%np_vanilla_stamina_hud%%np_offset_-180%%np_static_money_hud%%np_offset_-180%%np_static_other_actionbar%' conditions: '!equals': value1: '%np_actionbar%' value2: "" priority_3: text: '%np_offset_100%%np_vanilla_stamina_hud%%np_offset_-180%%np_static_money_hud%' Copy static-text: stamina_hud: position: right text: '%np_vanilla_stamina_hud%' value: 180 Copy conditional-text: actionbar: priority_1: text: '%np_static_money_hud%%np_offset_-180%%np_static_other_actionbar%' conditions: '||': '!=': value1: '%player_remaining_air%' value2: "300" '!gamemode': survival priority_2: text: '%np_static_stamina_hud%%np_offset_-180%%np_static_money_hud%%np_offset_-180%%np_static_other_actionbar%' conditions: '!equals': value1: '%np_actionbar%' value2: "" priority_3: text: '%np_static_stamina_hud%%np_offset_-180%%np_static_money_hud%' sun-brightdesktopmoon --- # ExecutableItems | CustomFishing | XiaoMoMi Plugins For items: Copy material: ExecutableItems:id [PreviousNeigeItemschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/neigeitems) [NextmcMMO Treasurechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mcmmo-treasure) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸŽ‰ Event | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#introduction) Introduction Events are the prerequisites that trigger actions. This article will detail all the configuration areas where events can be applied. Here's a simple example where players are given experience orbs on successful fishing Copy #contents/item/default.yml tuna_fish: events: success: # trigger action_mending: # actions type: mending value: 5 chance: 1.0 All the available action types can be found on [πŸ’ͺ Actionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/action) Here are the available triggers for different mechanics ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#loots) Loots Copy events: success: <- successful loot capture ... failure: <- failed loot capture ... hook: <- fish hooked (Requires reeling in) ... success-times: 1: <- number of successful loot captures ... 2: ... 999: ... consume: <- ate by player ... bite: <- fish attempt to eat the hook ... new_size_record: <- the size of fish caught exceeded personal record ... interact: <- interact with the item in hand ... ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#rods) Rods ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#baits) Baits ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#utils) Utils ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#totems) Totems [Previous✨ Effectchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) [Next✏️ Textchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/text) * [Introduction](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#introduction) * [Loots](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#loots) * [Rods](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#rods) * [Baits](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#baits) * [Utils](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#utils) * [Totems](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event#totems) sun-brightdesktopmoon Copy events: success: <- Successful loot capture ... failure: <- Failed loot capture ... hook: <- Fish hooked (Requires reeling in) ... cast: <- Cast the rod ... land: <- fishing hook land the liquid ... bite: <- Fish attempt to eat the hook ... escape: <- Fish escaped ... reel: <- reel in the rod ... Copy events: success: <- Successful loot capture ... failure: <- Failed loot capture ... cast: <- cast rod ... land: <- Fishing hook land the liquid ... hook: <- fish hooked (Requires reeling in) ... bite: <- fish attempt to eat the hook ... interact: <- interact with the item in hand ... escape: <- Fish escaped ... reel: <- reel in the rod ... Copy events: land: <- fishing hook land the liquid ... cast: <- cast the rod ... success: <- Successful loot capture ... failure: <- Failed loot capture ... interact: <- interact with the item in hand ... escape: <- Fish escaped ... reel: <- reel in the rod ... hook: <- fish hooked (Requires reeling in) ... Copy events: activate: <- activate the totem ... timer: <- timer ... end: <- expired ... sun-brightdesktopmoon --- # EcoEnchants | CustomFishing | XiaoMoMi Plugins For enchantments: Copy minecraft:enchantments:level: ... [PreviousAdvancedEnchantmentschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/advancedenchantments) [NextBattlePasschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/battlepass) sun-brightdesktopmoon sun-brightdesktopmoon --- # Quests | CustomFishing | XiaoMoMi Plugins [https://github.com/Xiao-MoMi/CustomFishingQuestsModule/releasesarrow-up-right](https://github.com/Xiao-MoMi/CustomFishingQuestsModule/releases) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FdSOEoGmEiuzN3gWBEG2n%2Fimage.png&width=768&dpr=3&quality=100&sign=30239804&sv=2) install ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FMoKh61k2oUXgT6RPiEOU%2Fimage.png&width=768&dpr=3&quality=100&sign=2ba1bd5c&sv=2) choose module ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2Foye6eP8CdTpBWLTm4qzp%2Fimage.png&width=768&dpr=3&quality=100&sign=b0e0f428&sv=2) choose objective [PreviousRealisticSeasonschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/realisticseasons) [NextTypeWriterchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/typewriter) sun-brightdesktopmoon sun-brightdesktopmoon --- # Zaphkiel | CustomFishing | XiaoMoMi Plugins For items: Copy material: Zaphkiel:id [PreviousTypeWriterchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/typewriter) [NextAuraSkillschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/auraskills) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ›’ Market | CustomFishing | XiaoMoMi Plugins **Enable Feature:** * `enable: true` This toggles whether the entire feature is enabled or disabled. Copy enable: true **Container Title:** * `title: 'Fish Market'` This specifies the title of the container. The title "Fish Market" is displayed with a gradient color effect transitioning between three given hex color codes. Copy title: 'Fish Market' Copy # Change title dynamically (since2.3.2) titles: deny: xxx limit: xxx allow: xxx **Limitation:** * `limitation:` This section defines the limitations related to earnings from the fish market. * `enable: true` means the limitation feature is turned on. * `earnings: 10000` specifies a cap on earnings at 10,000 units. Copy limitation: enable: true earnings: 10000 # Support expression and placeholders earnings: '1000 + 50 * {level}' **Market Menu Layout:** * `layout:` The layout section determines the visual arrangement of items/icons within the market menu. The symbols 'A', 'I', and 'B' reference specific items or icons. **Price Formula:** * `price-formula: '{base} + {bonus} * {size}'` This provides a formula to calculate the price of loots from "CustomFishing". **Item Price:** * `item-price:` This segment assigns fixed prices to items. For instance, the "COD" is priced at 10 units. Additionally, items with a `CustomModelData` like "PAPER" with data "999" is priced at 5 units. **Item Slot:** * `item-slot:` Dictates the slot where items (symbolized as 'I') to sell are placed. Items without an assigned price can still be placed if `allow-items-with-no-price` is set to true. **Dynamic Icons: (sell-icons / sell-all-icons)** This section manages interactive icons. Icons here have multiple functions: * `allow-icon`: Indicates permitted trades. * `deny-icon`: Represents denied trades due to a lack of items to sell. * `limit-icon`: Appears when the worth of items exceeds the daily earnable amount. Each icon is further configured with display settings and triggered actions, such as sounds, messages, or commands. **Decorative Icons:** * `decorative-icons:` These icons are purely for visual enhancement. They do not possess functional attributes. In this case, a `glass-pane` is assigned symbol 'A', with the material being `BLACK_STAINED_GLASS_PANE`. [PreviousπŸ“„ Formatchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format) [Next✨ Effectchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) sun-brightdesktopmoon Copy layout: - 'AAAAAAAAA' - 'AIIIIIIIA' - 'AIIIIIIIA' - 'AIIIIIIIA' - 'AAAABAAAA' Copy price-formula: '{base} + {bonus} * {size}' Copy item-price: COD: 10 PUFFERFISH: 10 SALMON: 10 TROPICAL_FISH: 10 PAPER:999: 5 Copy item-slot: symbol: 'I' allow-items-with-no-price: true Copy sell-all-icons: ... sell-icons: symbol: 'B' allow-icon: material: IRON_BLOCK display: name: '<#00CED1>● Ship the fish' lore: - 'You will get {money}$ by selling the fish' - 'You can earn {rest}' action: sound_action: type: sound value: key: 'minecraft:block.amethyst_block.place' source: 'player' volume: 1 pitch: 1 message_action: type: message value: 'You earned {money}$ by selling the fish! You can still get {rest}$ from market today' command_action: type: command value: 'money give {player} {money}' deny-icon: material: REDSTONE_BLOCK display: name: '● Denied trade' lore: - 'Nothing to sell!' action: sound_action: type: sound value: key: 'minecraft:entity.villager.no' source: 'player' volume: 1 pitch: 1 limit-icon: material: REDSTONE_BLOCK display: name: '● Denied trade' lore: - 'The worth of items exceeds the money that can be earned for the rest of today!' action: sound_action: type: sound value: key: 'minecraft:block.anvil.land' source: 'player' volume: 1 pitch: 1 Copy decorative-icons: glass-pane: symbol: 'A' material: BLACK_STAINED_GLASS_PANE display: name: ' ' sun-brightdesktopmoon --- # πŸ† Loot | CustomFishing | XiaoMoMi Plugins Loot configuration is closely integrated with item/block/entity configurations. This integration is vital to ensure that items/blocks/entities are properly registered as loot and can be invoked within the condition system. **Unique Key Names for Loot:** Every piece of loot should have a unique key name. No two loot items can have the same key name, preventing any potential conflicts. **Integration with Other Configurations:** For an item/block/entity to be registered as loot, it must be combined with its respective configuration. This ensures that the system recognizes the loot and its associated properties. **Condition System Invocation:** Once registered, the loot can be called upon within the condition system. This allows for more complex gameplay mechanics, such as spawning specific loot under certain conditions or scenarios. **Nick:** Determines what the loot shows like in fish finder and the return value of {nick} Every loot should have a nick, but most of the cases you don't have to manually set it. If a loot is item type, it would use "display.name" as nick if nick is not set, otherwise the nick would the loot ID. * **Example**: Copy nick: "This is a nick" **Visibility in Fish Finder:** Determines if the loot is visible or detectable when using a fish finder tool. * **Example**: Copy show-in-fishfinder: true **Disable Statistics:** If enabled, statistics related to this specific loot won't be tracked or displayed. * **Example**: **Disable Global Event:** If enabled, those events configurated in config.yml would no longer take effects on this loot * **Example**: **Disable Mini-Games:** Indicates if mini-games associated with this loot are disabled. Some items might be too worthless, making it preferable to skip the mini-game phase. * **Example**: **Immediate Mini-Game Start:** If set to true, upon encountering the loot, the related mini-game will commence immediately without any delay. * **Example**: **Prevent grabbing:** Prevent players from grabbing the dropped loots * **Example**: **To inventory:** Directly adds the loot to player's inventory * **Example**: **Competition Score:** Represents the score or value of the loot when used within competitions. * **Example**: **Loot Group:** The group of the loot, making it easier to modify the weight. If you don't know what weight is, read the article below [βš–οΈ Weight System \[MUST READ\]chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read) * **Example**: **Statistics key:** If you want different loots to share the same statistics you can add statistics key to the loot. For instance you have "tuna\_fish", "tuna\_fish\_silver\_star" and "tuna\_fish\_golden\_star", if you want %fishingstats\_size-record\_tuna% to return the max size of three, you can add this section to the three loots as follows: **Base effects:** Set the initial effects of the loot. **Custom data: (since 2.2.20)** Custom data allows you customize some special data for the loot and use it with internal placeholder `{data_xxx}` for instance `{data_max_weight}`. This allows you do many cool things for instance create weight properties to the item. Here's an example: [Previous🧊 Blockchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/block) [NextπŸ—Ώ Totemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem) Last updated 11 months ago sun-brightdesktopmoon Copy disable-stat: true Copy disable-global-event: true Copy disable-game: true Copy instant-game: true Copy prevent-grabbing: true Copy to-inventory: true Copy score: 10.5 Copy group: golden_star group: - golden_star - ocean Copy statistics: # for amount of fish caught amount: tuna # for the best size record size: tuna Copy base-effects: difficulty-adder: 10 difficulty-multiplier: 0.9 game-time-adder: 10 game-time-multiplier: 0.9 wait-time-adder: 10 wait-time-multiplier: 0.9 Copy #contents/item/default.yml test: material: cod display: name: "A fish with weight!" lore: - "Weight: {data_weight}kg" nbt: Weight: "(Double) {data_weight}" price: base: 50 custom-data: max_weight: 10 min_weight: 5 weight: "{weight}" some_text: "ABC" Copy #config.yml placeholder-register: '{weight}': "%math_2:_{random}*({data_max_weight}-{data_min_weight})+{data_min_weight}%" # You can also use the data in price-formula and most places price-formula: "{base} + {size} * {bonus} + {data_weight} * 10" sun-brightdesktopmoon --- # ✨ Effect | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#introduction) Introduction Fishing effect is a temporary buff that gives players a boost for a single fishing attempt. This boost can come from fishing rods, bait, or even enchantments and totems! The fishing effect follows a specific configuration format. Below is how all the effects are set up. All effects follow the format below: Copy star_fishing_rod: requirements: # requirements for using this item ... effects: effect_0: # effect name is customizable type: weight-mod # Aruguments value: - rubbish:-10 - golden_star_fish:+10 # Additional actions to run (Optional) actions: action_1: type: xxx value: xxx [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#bait) Bait ------------------------------------------------------------------------------------------------------------------------- To use bait, it needs to be placed in offhand or fishing bag. Every time the rod is cast, it will be thrown together with the hook. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#hook) Hook ------------------------------------------------------------------------------------------------------------------------- To equip hook on rod, make sure that you are in survival mode. Drag the hook onto your rod so it would be applied. To remove the hook from a rod, just right click the rod and the hook would be on your cursor. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FA6RINzI.gif&width=768&dpr=3&quality=100&sign=63da7c12&sv=2) hook and bait [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#effect-library) Effect Library --------------------------------------------------------------------------------------------------------------------------------------------- > weight-mod (weight-mod offers a way to adjust the weight or chance of a single Loot, making it easier to quickly change the probability of obtaining a particular item. If there's no loot available, the effect would not take effect) > weight-mod-ignore-conditions (The difference is that the effect would still take effect even if there's no such loot available) > group-mod (Unlike weight-mod, group-mod allows you to modify the weight of multiple loots at the same time. Of course, an item can belong to multiple groups, like the 'gold quality' group and the 'marine' group. For guidance on how to assign loots to groups, refer to the Loot System) > weight-group-ignore-conditions > wait-time (Adjust the waiting time for a fish to bite on the hook) > wait-time-multiplier (Adjust the waiting time for a fish to bite on the hook) ~(also named as "hook-time" in old versions)~ > difficulty (Adjust the game difficulty) > difficulty-multiplier (Adjust the game difficulty) > multiple-loot (Players can obtain multiple items in a single fishing attempt. Every 0.01 represents a 1% chance. If the value exceeds 1, players are guaranteed to get double the items with a small chance of getting triple. If the value surpasses 2, they are guaranteed to receive triple the items with a small chance of getting quadruple.) > lava-fishing (Allow players to fish in lava) > size (size offers a size boost for the loot, and the final size of the loot is added by this value. This option affects the scores in competitions where the fish size determines the points.) > size-multiplier (size-bonus offers a size boost for the loot, and the final size of the loot is multiplied by this value. This option affects the scores in competitions where the fish size determines the points.) > > ~(also named as "size-bonus" in old versions)~ > score (score gives a score boost during competitions, and the final score for the loot is added by this value. Note: This only works in TOTAL\_SCORE mode.) > score-multiplier (score-bonus gives a score boost during competitions, and the final score for the loot is multiplied by this value. Note: This only works in TOTAL\_SCORE mode.) ~(also named as "score-bonus" in old versions)~ > game-time (game-time allows you to adjust the duration of the mini-game, giving players more time to react and more opportunities to succeed.) > game-time-multiplier (game-time allows you to adjust the duration of the mini-game, giving players more time to react and more opportunities to succeed.) > conditional (Apply condition system to some effects) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#global-effects) Global Effects Global effects are located at config.yml. It allows you create global effects for players This is the default config which speeds up the fishing when there's a competition going on. [PreviousπŸ›’ Marketchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/market) [NextπŸŽ‰ Eventchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/event) * [Introduction](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#introduction) * [Bait](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#bait) * [Hook](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#hook) * [Effect Library](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#effect-library) * [Global Effects](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect#global-effects) sun-brightdesktopmoon Copy xxx_effect: type: weight-mod value: - rubbish:-10 - golden_star_fish:+10 Copy xxx_effect: type: weight-mod-ignore-conditions value: - enchantmentbook:+1 Copy xxx_effect: type: group-mod value: - gold:+20 - normal:-6 xxx_effect: type: group-mod value: - gold:+20 - normal:-6 Copy xxx_effect: type: group-mod-ignore-conditions value: - enchantment:+10 Copy xxx_effect: type: wait-time value: -20 <- reduce the wait time by 20ticks Copy xxx_effect: type: wait-time-multiplier value: 0.8 <- ">1" make the time longer; "<1" the opposite <- -20% wait time Copy xxx_effect: type: difficulty value: -17 <- -17 difficulty Copy xxx_effect: type: difficulty-multiplier value: 0.7 <- -30% difficulty Copy xxx_effect: type: multiple-loot value: 0.05 Copy xxx_effect: type: lava-fishing Copy xxx_effect: type: size value: 10.5 <- +10.5 fish size Copy xxx_effect: type: size-multiplier value: 1.3 <- +30% fish size Copy xxx_effect: type: score value: 20 <- +20 score Copy xxx_effect: type: score-multiplier value: 1.5 <- +50% score Copy xxx_effect: type: game-time value: 10 <- +10 seconds Copy xxx_effect: type: game-time-multiplier value: 1.3 <- +30% seconds Copy xxx_effect: type: conditional conditions: ... effects: ... Copy mechanics: global-effects: effect_1: type: conditional conditions: competition: ongoing: true id: - weekend_competition effects: effect_1: type: wait-time-multiplier value: 0.85 sun-brightdesktopmoon --- # 🧭 How to Configure Each File | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#loot-game-conditions.yml) loot/game-conditions.yml [βš–οΈ Weight System \[MUST READ\]chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#contents) /contents ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#item) /item [🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) [πŸ† Lootchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/loot) Copy rubbish: # Item part material: cod display: name: <#00BFFF>Radioactive Fish lore: - Protect the environment... custom-model-data: 50000 # Loot part nick: <#00BFFF>Radioactive Fish show-in-fishfinder: false disable-stat: true disable-game: true instant-game: false prevent-grabbing: false ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#entity) /entity [πŸ¦– Entitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/entity) [πŸ† Lootchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/loot) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#enchant) /enchant [✨ Effectchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#hook) /hook [✨ Effectchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) [🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#util) /util [✨ Effectchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) [🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#rod) /rod [🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) [✨ Effectchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#bait) /bait [✨ Effectchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/effect) [🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#block) /block [🧊 Blockchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/block) [πŸ† Lootchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/loot) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#competition) /competition [πŸ… Competitionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#totem) /totem [πŸ—Ώ Totemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#minigame) /minigame [πŸ•ΉοΈ MiniGamechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame) [Previous🎣 CustomFishingchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing) [Next❓️ Common questionschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions) * [loot/game-conditions.yml](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#loot-game-conditions.yml) * [/contents](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#contents) * [/item](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#item) * [/entity](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#entity) * [/enchant](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#enchant) * [/hook](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#hook) * [/util](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#util) * [/rod](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#rod) * [/bait](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#bait) * [/block](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#block) * [/competition](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#competition) * [/totem](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#totem) * [/minigame](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file#minigame) sun-brightdesktopmoon Copy magma_cube: # Loot part show-in-fishfinder: false disable-stat: true disable-game: true nick: Magma Cube # Entity Part entity: magma_cube velocity: horizontal: 1.1 vertical: 1.3 Copy # namespace:enchant:level minecraft:luck_of_the_sea:1: requirements: {} effects: group: type: group-mod value: - silver_star:+2 - golden_star:+1 Copy delicate_hook: # Item part material: SHEARS display: name: '<#1E90FF>Delicate hook' lore: - '' - '<#7FFFD4>Desciption:' - ' - An embodiment of craftsmanship and allure, the hook' - ' - is not your average piece of tackle. Polished to' - ' - perfection and intricately designed, it gleams in the' - ' - water, irresistibly drawing high-quality fish closer.' - '' - '<#FFD700>Effects:' - ' - Increase the chance of getting high quality fish' max-durability: 16 <- This property is required for a hook to work # Effect part effects: group: type: group-mod value: - silver_star:+1 - golden_star:+1 # Hook's unique property # Decides the lore on rod lore-on-rod: - '' - '<#7FFFAA>Equipped hook:' - ' - Delicate hook: {dur} times left' Copy fishfinder: # Item part material: PAPER display: name: '<#1E90FF>Fish Finder' lore: - '' - '<#7FFFD4>Desciption:' - ' - Compact yet powerful, it scans the waters' - ' - with precision, revealing the variety of' - ' - fish species lurking below the surface.' - ' - Whether you''re in uncharted territories or' - ' - familiar waters, this device ensures you''re' - ' - always informed about your aquatic neighbors.' - '' custom-model-data: 50000 Copy beginner_rod: # Item part material: fishing_rod display: name: "<#EEE9E9>Beginner's Fishing Rod" lore: - '' - '<#7FFFD4>Desciption:' - ' - Specially designed for those new to the art ' - ' - of fishing, the Beginner''s Fishing Rod is a' - ' - novice angler''s best friend.' - '' - '<#FFD700>Effects:' - ' - Increase the hook time' - ' - Reduces the challenge of fishing' custom-model-data: 50001 max-durability: 64 # Effect part effects: time_effect: type: hook-time value: 1.8 difficulty: type: difficulty value: -8 Copy magnetic_bait: # Item part material: paper display: name: 'Magnetic lures' lore: - '' - '<#7FFFD4>Desciption:' - 'Its radiant shimmer and unique energy pulse' - 'prove irresistible to curious fish, drawing' - 'them in with unprecedented speed. This is ' - 'not just a bait, it''s a spectacle that fish' - 'can''t help but investigate.' - '' - '<#FFD700>Effects:' - ' - Reduce hook time' - ' - More time for fishing' - '' custom-model-data: 50002 # Effect part effects: hooktime: type: hook-time value: 0.9 gametime: type: game-time value: 2 Copy carrot_crate: # Loot part show-in-fishfinder: false disable-stat: true nick: Carrot Crate # Block part block: barrel velocity: horizontal: 1.07 vertical: 1.5 properties: directional: true storage: carrot_1: item: Carrot amount: 1~2 chance: 0.8 carrot_2: item: Carrot amount: 1~2 chance: 0.8 sun-brightdesktopmoon --- # 🐚 Command & Permission | CustomFishing | XiaoMoMi Plugins The plugin's commands and corresponding permissions are completely customizable. You can modify it at will. The default commands and permission can be found on [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=fd1317f9&sv=2)Custom-Fishing/core/src/main/resources/commands.yml at main Β· Xiao-MoMi/Custom-FishingGitHubchevron-right](https://github.com/Xiao-MoMi/Custom-Fishing/blob/main/core/src/main/resources/commands.yml) commands.yml The only permission which is hard coded is the permission node for the rows of fishing bag Node Description fishingbag.rows.1~6 permission for fishing bag rows example: fishingbag.rows.2 [PreviousAuraSkillschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/auraskills) [NextπŸ“Š Import & Export Datachevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/import-and-export-data) sun-brightdesktopmoon sun-brightdesktopmoon --- # Supported levelers | CustomFishing | XiaoMoMi Plugins mcMMO [https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/arrow-up-right](https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/) AureliumSkills AuraSkills [https://www.spigotmc.org/resources/aurelium-skills-advanced-skills-stats-abilities-and-more.81069/arrow-up-right](https://www.spigotmc.org/resources/aurelium-skills-advanced-skills-stats-abilities-and-more.81069/) JobsReborn [https://www.spigotmc.org/resources/jobs-reborn.4216/arrow-up-right](https://www.spigotmc.org/resources/jobs-reborn.4216/) EcoSkills [https://www.spigotmc.org/resources/ecoskills-%E2%AD%95-addictive-mmorpg-skills-%E2%9C%85-create-custom-skills-stats-effects-mana-%E2%9C%A8-plug-play.95541/arrow-up-right](https://www.spigotmc.org/resources/ecoskills-%E2%AD%95-addictive-mmorpg-skills-%E2%9C%85-create-custom-skills-stats-effects-mana-%E2%9C%A8-plug-play.95541/) EcoJobs [https://www.spigotmc.org/resources/ecojobs-%E2%AD%95-powerful-employment-system-%E2%9C%85-create-custom-jobs-%E2%9C%A8-levelling-effects.105190/arrow-up-right](https://www.spigotmc.org/resources/ecojobs-%E2%AD%95-powerful-employment-system-%E2%9C%85-create-custom-jobs-%E2%9C%A8-levelling-effects.105190/) MMOCore [https://www.spigotmc.org/resources/mmocore.70575/arrow-up-right](https://www.spigotmc.org/resources/mmocore.70575/) Usage Example: Copy tuna_fish: material: cod display: name: Tuna Fish lore: - Tuna is a kind of healthy food. - 'size: {size_formatted}cm' custom-model-data: 50001 group: - ocean - no_star events: success: jobs_exp_action: type: plugin-exp value: plugin: JobsReborn exp: 15 target: Fisherman [PreviousmcMMO Treasurechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mcmmo-treasure) [NextAdvancedEnchantmentschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/advancedenchantments) sun-brightdesktopmoon sun-brightdesktopmoon --- # ❓️ Common questions | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q1.-how-to-import-items-from-other-plugins) Q1. How to import items from other plugins? Hold the item in hand and run `/cfishing items import test_item`, you will find the exported item at `CustomFishing/imported_items.yml`, then you can copy and paste the exported data to the place you want. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q2.-how-to-use-the-vanilla-1.20.5-custom-durability) Q2. How to use the vanilla 1.20.5+ custom durability? Firstly, delete the `max-durability` provided by the plugin so they would not conflict. Then use components section to add the `max_damage` property to the item. You can read this page for example [🎁 Itemchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q3.-how-to-use-items-blocks-from-other-plugins) Q3. How to use items/blocks from other plugins? in config.yml there's a section like this, let's take items as example Copy # CustomFishing supports using items/blocks from other plugins # If items share the same id, they would inherit the effects item-detection-order: - CustomFishing - vanilla block-detection-order: - vanilla For instance if you have ItemsAdder installed, and you want CustomFishing to check ItemsAdder's ID, you can add ItemsAdder to the order: Copy item-detection-order: - ItemsAdder - CustomFishing - vanilla However, the items in ItemsAdder all have namespaces, so in order to ensure that the IDs correspond, you need to modify the fishing rod configuration of Custom Fishing If you have MMOItems installed, you can configure like this (The capitalization used here is because MMOItems will convert all IDs to uppercase) If you have Nexo installed, you can configure like this ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q4.-how-to-integrate-my-leveler-plugin-with-customfishing) Q4. How to integrate my leveler plugin with CustomFishing? Some leveler plugins may provide skill modification fishing mechanisms, and in this regard, Custom Fishing is powerless unless both developers work together. But in most cases, those attribute gains can be applied to Customs Fishing as long as the plugins provide corresponding attribute variables and skill level variables. You can refer to this page for some examples [Supported levelerschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/supported-levelers) [πŸ…ΏοΈ Placeholder & Expressionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q5.-why-cant-i-have-minigames) Q5. Why can't I have minigames? If you have MMOCore installed, then your fishing mechanic would be like the picture below. The way to resolve the issue is deleting the fishing profession provided by MMOCore through deleting the YAML config. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#undefined) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FJb4zwMwy4K2rWnQPrs7s%2Fimage.png&width=300&dpr=3&quality=100&sign=33cab5ae&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q6.-how-to-enable-void-fishing-mechanic) Q6. How to enable void-fishing mechanic? Void fishing is a special mechanic registered by CustomFishing API. It allows registering any hook mechanic as you want if you know a little about coding. Firstly configure loots in loot-conditions.yml for the void for instance Then create an effect that allows void-fishing at the place you want. In this case I'm using the `global-effects` in config.yml Now you can fish in void! ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FhunMQTaJ9kmFTQOvF16k%2Fimage.png&width=768&dpr=3&quality=100&sign=2e718da7&sv=2) void fishing ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q7.-why-total_score-competition-not-works) Q7. Why TOTAL\_SCORE competition not works? You need to configure the score for each fish for this to work properly. [πŸ† Loot](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/loot) (See competition score on this page) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q8.-how-to-use-aureskills-mcmmo-fishing-loot-table) Q8. How to use AureSkills/mcMMO fishing loot table [mcMMO Treasurechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/mcmmo-treasure) [AuraSkillschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/auraskills) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q9.-how-to-fix-compatibility-issue-with-grappling-hook-plugins) Q9. How to fix compatibility issue with grappling hook plugins Take ExecuteableItems as an example, firstly add it to the `item-detection-order` in config.yml. Then add a rod blacklist requirement for it in config.yml [Previous🧭 How to Configure Each Filechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/how-to-configure-each-file) [Nextβš–οΈ Weight System \[MUST READ\]chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read) Last updated 2 months ago * [Q1. How to import items from other plugins?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q1.-how-to-import-items-from-other-plugins) * [Q2. How to use the vanilla 1.20.5+ custom durability?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q2.-how-to-use-the-vanilla-1.20.5-custom-durability) * [Q3. How to use items/blocks from other plugins?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q3.-how-to-use-items-blocks-from-other-plugins) * [Q4. How to integrate my leveler plugin with CustomFishing?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q4.-how-to-integrate-my-leveler-plugin-with-customfishing) * [Q5. Why can't I have minigames?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q5.-why-cant-i-have-minigames) * [](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#undefined) * [Q6. How to enable void-fishing mechanic?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q6.-how-to-enable-void-fishing-mechanic) * [Q7. Why TOTAL\_SCORE competition not works?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q7.-why-total_score-competition-not-works) * [Q8. How to use AureSkills/mcMMO fishing loot table](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q8.-how-to-use-aureskills-mcmmo-fishing-loot-table) * [Q9. How to fix compatibility issue with grappling hook plugins](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions#q9.-how-to-fix-compatibility-issue-with-grappling-hook-plugins) sun-brightdesktopmoon Copy namespace:beginner_rod: material: ItemsAdder:namespace:beginner_rod effects: effect_1: type: wait-time-multiplier value: 1.5 effect_2: type: difficulty value: -8 Copy item-detection-order: - MMOItems - CustomFishing - vanilla Copy BEGINNER_ROD: material: MMOItems:TOOL:BEGINNER_ROD effects: effect_1: type: wait-time-multiplier value: 1.5 effect_2: type: difficulty value: -8 Copy item-detection-order: - Nexo - CustomFishing - vanilla Copy beginner_rod: material: Nexo:beginner_rod effects: effect_1: type: wait-time-multiplier value: 1.5 effect_2: type: difficulty value: -8 Copy global-group: list: [] conditions: {} sub-groups: loots_in_void: conditions: in-void: true environment: - the_end list: - rubbish:+5 Copy mechanics: global-effects: void_fishing: type: void-fishing Copy item-detection-order: - ExecutableItems - CustomFishing - vanilla Copy mechanics: mechanic-requirements: rod_requirement: type: "!rod" value: - YourGrapplingHook sun-brightdesktopmoon --- # βœ… Condition | CustomNameplates | XiaoMoMi Plugins Plugin provides a powerful condition system. You can use both simple conditions and advanced conditions at the same time. Here are some examples for you to learn conditions. Advanced condition allows you to use more conditions with the same type in one section > simple biome condition Copy biome: - minecraft:ocean - minecraft:deep_ocean - minecraft:cold_ocean - minecraft:deep_cold_ocean - minecraft:frozen_ocean - minecraft:deep_frozen_ocean - minecraft:lukewarm_ocean - minecraft:deep_lukewarm_ocean - minecraft:warm_ocean > advanced condition (Allows you to use the same type of conditions) The section name ("requirement\_biome\_1" in this case) is completely customizable as long as it does not conflict with the condition type name. Copy requirement_biome_1: type: biome refresh-interval: 5 value: - minecraft:ocean - minecraft:deep_ocean - minecraft:cold_ocean - minecraft:deep_cold_ocean - minecraft:frozen_ocean - minecraft:deep_frozen_ocean - minecraft:lukewarm_ocean - minecraft:deep_lukewarm_ocean - minecraft:warm_ocean requirement_biome_2: type: '!biome' refresh-interval: 10 value: - minecraft:ocean - minecraft:deep_ocean - minecraft:cold_ocean [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/condition#condition-library) Condition Library ----------------------------------------------------------------------------------------------------------------------------------------------------- > time (Minecraft game time 0~23999) > ypos (Player's Y coordinate) > biome (Supports custom biomes) > world > weather > date (Real world date) > permission > β€œ>” β€œ>=” β€œ<” β€œ<=” β€œ==” β€œ!=” > β€œstartsWith” β€œendsWith” β€œequals” β€œcontains” β€œin-list” > logic (Create complex conditions) > inverted (3.0.25+) > level (Player exp level) > random (0~1) > cooldown > regex > environment > potion-effect > geyser/floodgate/is-bedrock-player (If the player is a badrock player) > gamemode > self-disguised (Requires LibsDisguises) > disguised-type (Requires LibsDisguises) > region (requires WorldGuard) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FsgPn5qBKWdcU4vAzIOD2%2Fimage.png&width=768&dpr=3&quality=100&sign=935344cb&sv=2) mode 1 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FS72ckLb0O9D9UgjMKeg9%2Fimage.png&width=768&dpr=3&quality=100&sign=fb0990a0&sv=2) mode 2 > is-passenger > teammate (if two players are in the same team) [PreviousπŸ…ΏοΈ Placeholderschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/placeholders) [Next🐚 Command & Permissionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/command-and-permission) Last updated 8 months ago sun-brightdesktopmoon Copy time: - 0~1000 - 2000~6000 advanced_requirement: type: time value: - 0~1000 - 2000~6000 Copy ypos: - 0~43 - -45~12 advanced_requirement: type: ypos value: - 0~43 - -45~12 Copy biome: - minecraft:plains <- whitelist '!biome': - minecraft:plains <- blacklist advanced_requirement: type: biome value: - minecraft:plains advanced_requirement: type: '!biome' value: - minecraft:plains Copy world: - world '!world': - blacklist_world advanced_requirement: type: world value: - world advanced_requirement: type: '!world' value: - blacklist_world Copy weather: - thunder - rainstorm - clear - rain advanced_requirement: type: 'weather' value: - thunder - clear - rain Copy date: - 12/25 - 6/1 advanced_requirement: type: 'date' value: - 12/25 - 6/1 Copy permission: customfishing.admin '!permission': blacklist.perm advanced_requirement: type: 'permission' value: customfishing.admin advanced_requirement: type: '!permission' value: blacklist.perm Copy '==': value1: '20' value2: '%player_health%' advanced_requirement: type: '==' value: value1: '20' value2: '%player_health%' Copy '!startsWith': value1: '%player_name%' value2: 'X' <- player names that are not starting with "X" advanced_requirement: type: 'contains' value: value1: '%player_name%' value2: '_' <- player names that contain "_" advanced_requirement: type: '!equals' value: value1: '%player_name%' value2: 'XiaoMoMi' <- player names that not equal "XiaoMoMi" advanced_requirement: type: 'in-list' value: papi: '%player_name%' values: - 'XiaoMoMi' - 'XIAOMOMI' - 'XlA0M0Ml' Copy advanced_requirement: type: '&&' value: in-lava: true requirement_time: type: time value: - 0~12000 '||': world: - world_nether '&&': ypos: - -64~-32 world: - world Copy inverted: requireent_1: type: "||" value: world: - world_nether advanced_requirement: type: 'inverted' value: requirement_world: type: world value: - world_nether Copy level: 10 advanced_requirement: type: 'level' value: 10 Copy random: 0.3 <- 30% chance advanced_requirement: type: 'random' value: 0.7 <- 70% chance Copy cooldown: key: unique time: 1000 #ms advanced_requirement: type: 'cooldown' value: key: A time: 100 #ms Copy regex: papi: "%xxx%" regex: "[A-Z]" advanced_requirement: type: 'regex' value: papi: "%xxx%" regex: "[A-Z]" Copy environment: - normal - nether - the_end advanced_requirement: type: '!environment' value: - nether - the_end - custom Copy potion-effect: "LUCK>=0" advanced_requirement: type: 'potion-effect' value: "LUCK!=-1" "-1": Player doesn't have such a potion effect "value no lower than 0": The potion effect's amplifier Examples: LUCK==1 LUCK<5 LUCK>=0 Copy geyser: false floodgate: false advanced_requirement: type: 'geyser' value: true is-bedrock-player: true Copy gamemode: - survival advanced_requirement: type: "!gamemode" value: - adventure Copy self-disguised: false Copy '!disguised-type': - ARROW Copy advanced_requirement: type: region value: mode: 1 # 1,2 values: - a - b region: mode: 2 values: - a - b Copy 'is-passenger': true Copy teammate: true sun-brightdesktopmoon --- # BattlePass | CustomFishing | XiaoMoMi Plugins Copy quests: 1: # Any loot type: customfishing_loot variable: none name: 'Any loot' required-progress: 5 points: 10 item: material: FISHING_ROD name: '&eAny loot' lore: - '&7To complete this quest, you must' - '&7Catch 5 fish.' - '' - '&7(&a%percentage_progress%&7)' 2: # Specific loot type: customfishing_loot variable: tuna_fish name: 'Tuna' required-progress: 5 points: 10 item: material: FISHING_ROD name: '&bTuna Fish' lore: - '&7To complete this quest, you must' - '&7Catch 5 Tuna Fish.' - '' - '&7(&a%percentage_progress%&7)' 3: # Loot Group type: customfishing_group variable: river name: 'Catch fish is river' required-progress: 5 points: 10 item: material: FISHING_ROD name: '&cCatch fish is river' lore: - '&7To complete this quest, you must' - '&7Catch 5 river fish.' - '' - '&7(&a%percentage_progress%&7)' [PreviousEcoEnchantschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/ecoenchants) [NextBetonQuest 3.0chevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/betonquest-3.0) sun-brightdesktopmoon sun-brightdesktopmoon --- # Events | CustomFishing | XiaoMoMi Plugins Available events can be found on [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=fd1317f9&sv=2)Custom-Fishing/api/src/main/java/net/momirealms/customfishing/api/event at main Β· Xiao-MoMi/Custom-FishingGitHubchevron-right](https://github.com/Xiao-MoMi/Custom-Fishing/tree/main/api/src/main/java/net/momirealms/customfishing/api/event) [Previous⌨️ APIchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api) [NextBasic Operationschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations) sun-brightdesktopmoon sun-brightdesktopmoon --- # ⌨️ API | CustomFishing | XiaoMoMi Plugins Before using the CustomFishing API, make sure you have imported the Paper API. [![Logo](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fassets.papermc.io%2Fweb%2Fandroid-chrome-512x512.png&width=20&dpr=3&quality=100&sign=be86b5e3&sv=2)Project setup | PaperMC Docsdocs.papermc.iochevron-right](https://docs.papermc.io/paper/dev/project-setup) Then you can add the CustomFishing API dependency to your project #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api#repository) πŸ“Œ Repository #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api#dependency) πŸ“Œ Dependency At last, don't forget to add CustomFishing to plugin.yml [PreviousπŸ“Š Import & Export Datachevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/import-and-export-data) [NextEventschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/events) sun-brightdesktopmoon Copy repositories { maven("https://repo.momirealms.net/releases/") } Copy dependencies { compileOnly("net.momirealms:custom-fishing:{version}") } Copy depend: - CustomFishing sun-brightdesktopmoon --- # πŸ“Š Import & Export Data | CustomFishing | XiaoMoMi Plugins Sometimes, you need to change the way data is stored, such as from H2 to MySQL. Firstly, you need to configure the new database in the database.yml file. Then ensure that there are no players on the server and execute the command `/customfishing data export` from `console`. After modifying the data storage method to MySQL, reload the plugin. At last run `/customfishing data import file_name.json.gz` [Previous🐚 Command & Permissionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/command-and-permission) [Next⌨️ APIchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api) sun-brightdesktopmoon sun-brightdesktopmoon --- # AuraSkills | CustomFishing | XiaoMoMi Plugins To use loot table from AuraSkills, firstly create a new config section under your /contents/items folder like this: Copy auraloots: tag: false material: "AuraSkills:loot" show-in-fishfinder: false Then you can use `auraloots` in your loot-conditions.yml Copy list: - 'auraloots:+15' Please note that with this compatibility, you do not need to repeatedly give the player fishing experience. Plugin will automatically use the AuraSkills setting. [PreviousZaphkielchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility/zaphkiel) [Next🐚 Command & Permissionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/command-and-permission) sun-brightdesktopmoon sun-brightdesktopmoon --- # Integration Provider | CustomFishing | XiaoMoMi Plugins You can register providers for items, creatures, enchantments, etc. for plugins to use. You only need to implement the interface with the corresponding parameters and finally reload the plugin to apply it. Copy BukkitCustomFishingPlugin api = BukkitCustomFishingPlugin.getInstance(); api.getIntegrationManager().registerBlockProvider(...); api.getIntegrationManager().registerEnchantmentProvider(...); api.getIntegrationManager().registerEntityProvider(...); api.getIntegrationManager().registerSeasonProvider(...); api.getIntegrationManager().registerLevelerProvider(...); api.getIntegrationManager().registerItemProvider(...); api.reload(); [PreviousBasic Operationschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations) [NextCustom Hook Logicschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/custom-hook-logics) sun-brightdesktopmoon sun-brightdesktopmoon --- # πŸ—Ώ Totem | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#totem-pattern) Totem pattern ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FVQHAEfX6ETbRAohljf5t%2Fimage.png&width=768&dpr=3&quality=100&sign=5a264d87&sv=2) north (-z) ↑ (-x) west ←┼→ east (+x) ↓ south (+z) **Core** Designate the core block within the pattern. The numbers correspond to layer, line, and index respectively. In this case, the core block is located in layer 3, line 1, and index 2. When referencing the layer portion below, this core points to the CRYING\_OBSIDIAN block. **Layer** Describes the layer-by-layer build of the structure. **Block Type** \*\_XXX: any block id ends with XXX XXX\_\*: any block id starts with XXX XXX: Vanilla block id (Capital letters) xxx: custom block id (ItemsAdder/Oraxen) Note: If you are using ItemsAdder, exclude the namespace namespace:block\_id (X) block\_id (√) **Block Data** Available data types: axis: x/y/z face: west/east/north/south/up/down half: bottom/up To use more block data together, just follow the example: XXX{data\_1=value\_1;data\_2=value\_2;data\_3=value\_3} **||** Represents OR ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F8U43OybXO1QNQcmyzIUA%2Fimage.png&width=768&dpr=3&quality=100&sign=e3bb9412&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#totem-properties) Totem properties ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#default-totems) Default totems ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FKNnthblqXnGKWoEhyXMP%2Fimage.png&width=768&dpr=3&quality=100&sign=78d18881&sv=2) golden star totem ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F1xuO1OIc7BdklAOFJdpD%2Fimage.png&width=768&dpr=3&quality=100&sign=470d7121&sv=2) double loot totem ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#particles) Particles * `**type: REDSTONE**`: This signifies the type of particle to be used. In this case, a `REDSTONE` particle type is chosen. [https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.htmlarrow-up-right](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.html) * `**polar-coordinates-formula:**` This section decides how the particle is positioned or how it moves in a polar coordinate system. * `**horizontal: '{radius}'**`: The radial distance from the totem core in the horizontal direction. * `**vertical: '-1.5'**`: The vertical position of the particle, relative to totem core. * `**theta:**` Theta is commonly used in polar coordinates to represent the angle of rotation. * `**draw-interval: 0.2**`: Specifies how frequently the angle changes or how fine-grained the particle's rotation is. A smaller value can lead to smoother transitions. * `**range:**` Specifies the range of theta. * `**0~360**`: The particle will be drawn in a full circle from 0 to 360 degrees. * `**task:**` Describes the task or action related to the particle's rendering. * `**period: 4**`: Indicates how often the particle effect should update or re-render. * `**delay: 0**`: The delay before the particle effect starts. Here, it starts immediately with no delay. * `**options:**` Example: ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F0RgpG34cppnIvOlz3rcl%2Fimage.png&width=768&dpr=3&quality=100&sign=baff4b1c&sv=2) [PreviousπŸ† Lootchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/loot) [NextπŸ•ΉοΈ MiniGamechevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame) * [Totem pattern](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#totem-pattern) * [Totem properties](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#totem-properties) * [Default totems](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#default-totems) * [Particles](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/totem#particles) sun-brightdesktopmoon Copy pattern: core: 4,2,2 # layer:4 line:2 index:2 -> DAYLIGHT_DETECTOR layer: 1: - 'AIR GOLD_BLOCK AIR' - 'GOLD_BLOCK GOLD_BLOCK GOLD_BLOCK' - 'AIR GOLD_BLOCK AIR' 2: - 'AIR AIR AIR' - 'AIR GOLD_BLOCK AIR' - 'AIR AIR AIR' 3: - 'AIR AIR AIR' - 'AIR LIGHTNING_ROD AIR' - 'AIR AIR AIR' 4: - 'AIR AIR AIR' - 'AIR DAYLIGHT_DETECTOR AIR' - 'AIR AIR AIR' Copy pattern: core: 3,1,2 layer: 4: - '*_STAIRS{face=east} OBSERVER{face=south} *_STAIRS{face=west}' 3: - 'AIR CRYING_OBSIDIAN AIR' 2: - 'AIR *_LOG{axis=y}||*_PILLAR{axis=y} AIR' 1: - 'AIR ANVIL AIR' Copy totem_key: duration: 300 <- in seconds radius: 10 <- effective range particles: ... pattern: ... effects: ... requirements: ... events: activate: ... Copy # REDSTONE options: color: 186,85,211 scale: 0.8 (0.1~4) # DUST_COLOR_TRANSITION options: from: 255,255,255 to: 0,0,0 scale: 0.8 Copy particles: particle_0: type: REDSTONE options: color: 178,34,34 scale: 1 polar-coordinates-formula: horizontal: '{radius}' vertical: '-1.5' theta: draw-interval: 0.2 range: - 0~360 task: period: 4 delay: 0 particle_1: type: REDSTONE options: color: 178,34,34 scale: 1 polar-coordinates-formula: horizontal: '{radius}/(2*cos({theta}))' vertical: '-1.5' theta: draw-interval: 0.2 range: - 0~60 - 120~180 task: period: 4 delay: 0 particle_2: type: REDSTONE options: color: 178,34,34 scale: 1 polar-coordinates-formula: horizontal: '-{radius}/(2*cos({theta}))' vertical: '-1.5' theta: draw-interval: 0.2 range: - 0~60 - 120~180 task: period: 4 delay: 0 particle_3: type: REDSTONE options: color: 178,34,34 scale: 1 polar-coordinates-formula: horizontal: '({radius})/(cos({theta}) + sqrt(3) * sin({theta}))' vertical: '-1.5' theta: draw-interval: 0.2 range: - 0~120 task: period: 4 delay: 0 particle_4: type: REDSTONE options: color: 178,34,34 scale: 1 polar-coordinates-formula: horizontal: '-({radius})/(cos({theta}) + sqrt(3) * sin({theta}))' vertical: '-1.5' theta: draw-interval: 0.2 range: - 0~120 task: period: 4 delay: 0 particle_5: type: REDSTONE options: color: 178,34,34 scale: 1 polar-coordinates-formula: horizontal: '-({radius})/(cos({theta}) - sqrt(3) * sin({theta}))' vertical: '-1.5' theta: draw-interval: 0.2 range: - 60~180 task: period: 4 delay: 0 particle_6: type: REDSTONE options: color: 178,34,34 scale: 1 polar-coordinates-formula: horizontal: '({radius})/(cos({theta}) - sqrt(3) * sin({theta}))' vertical: '-1.5' theta: draw-interval: 0.2 range: - 60~180 task: period: 4 delay: 0 sun-brightdesktopmoon --- # πŸ“ CustomNameplates Update: Version 2.4 to 3.0 Overview | CustomNameplates | XiaoMoMi Plugins The **CustomNameplates** plugin has received a major update, drawing inspiration from the text display feature introduced in Minecraft 1.19.4+. This article will detail all the updates from version 2.4 to 3.0, covering bug fixes and performance optimizations from previous versions. **Built-in Placeholder System:** The plugin no longer has a hard dependency on PlaceholderAPI. It now includes a built-in placeholder parsing system, which is faster and more efficient. All built-in placeholders start with `%np_`, while expansion placeholders from PlaceholderAPI start with `%nameplates_`. Using the built-in placeholders provides a noticeable performance boost compared to PlaceholderAPI, making the parsing process significantly faster! #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#performance-optimization-in-version-3.0) Performance Optimization in Version 3.0 In the 2.x versions, the plugin introduced the `refresh-interval` and `check-interval` options to reduce the resource consumption caused by condition and variable parsing. Although these options reduced update frequency and improved performance to some extent, the complex parsing process still resulted in repeated parsing of the same conditions and variables. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2F45dfhCdnfceUM2nh8yKB%2F2f99fcb5cda52eb7bedd5475c77ee68d.png&width=768&dpr=3&quality=100&sign=129f1e99&sv=2) /configs/bossbar.yml (2.0) In version 3.0, **CustomNameplates**' performance now depends only on the types of variables used and the refresh interval. This means that even if the same variable or condition is used multiple times, the plugin only updates it once, greatly reducing the resource consumption caused by repeated parsing. If you’re interested in how this optimization was achieved, you can check the source code on GitHub, which includes a complex pre-parsing system. Three new configuration options have been added to `config.yml` to better manage parsing frequency: * `default-condition-refresh-interval` (Default condition parsing interval) * `default-placeholder-refresh-interval` (Default placeholder parsing interval) * `placeholder-refresh-interval` (Custom parsing interval for specific variables) These intervals are measured in game ticks (50ms per tick). With these configurations, users can assign longer parsing intervals to performance-heavy variables, such as JavaScript-based variables, to reduce server load. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FniKMPWvlPYlsy2VrWmqF%2Fimage.png&width=768&dpr=3&quality=100&sign=c6e38e7a&sv=2) config.yml For conditions, the configuration is set up as shown in the example below (using `refresh-interval`): ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FRUKgeZrAcl8ihiV2UNMM%2Fimage.png&width=768&dpr=3&quality=100&sign=c828311&sv=2) /configs/bossbar.yml (3.0) #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#dynamic-condition-parsing-adjustments) Dynamic Condition Parsing Adjustments The new version supports dynamic adjustment of parsing intervals based on the context in which the conditions are used: * **Handling Same Conditions with Different Refresh Intervals:** If the same condition is used in multiple places with different refresh intervals, the plugin will dynamically adjust the parsing based on demand. For example, if a condition is used in a BossBar display with a refresh interval of 10, and in conditional-text with an interval of 5, the plugin will first parse the condition with an interval of 10 but adjust it to 5 when parsing conditional-text. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#accurate-character-advance-calculation) Accurate Character Advance Calculation In version 3.0, the method for calculating character advance has become more precise, aligning with the latest Minecraft client updates. The `font-width-data.yml` file has been renamed to `advance-data.yml`, and a large new configuration section, `font-templates`, has been added to `config.yml` to manage the various character types provided by [Minecraft Font Providersarrow-up-right](https://minecraft.wiki/w/Font#Providers) * **Font Configuration Options:** * `file`: Refers to a file located in the `/CustomNameplates/font` directory. * `custom`: Specifies whether to use the default PNG bitmap font provided by the client. * `generate`: Indicates whether to include a copy of this font in the generated resource pack. These options allow you to customize fonts used within the plugin and manage how and where they are sourced or generated. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#caching-and-memory-optimization) Caching and Memory Optimization All generated font advance data will be temporarily stored in the `/CustomNameplates/tmp` folder, speeding up subsequent server startups by preventing the need to recalculate font data each time. This caching mechanism improves startup performance. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#renaming-descent-text-to-shift-text) Renaming Descent-Text to Shift-Text Due to the increasing complexity of modern fonts, a single `descent` parameter is no longer sufficient. Therefore, `descent-text` has been renamed to `shift-text`. (`%nameplates_descent_xxx%` -> `%np_shift_xxx%`) This change also allows some configurations to use only the necessary subsets of fonts. For example, action bars displaying gold values might only use the ASCII character set, reducing unnecessary font set loading, which in turn minimizes the resource pack size and improves client performance. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FGy1GreiUQE3sLiWDaDlp%2Fimage.png&width=768&dpr=3&quality=100&sign=8eb0f9bc&sv=2) /configs/custom-placeholders.yml Shift-Text Format Example: The `font` field must be registered in the `shift-fonts` section in `config.yml`. For example: The colon `:` followed by a number represents an offset value used to adjust the position of characters. For bitmap fonts, the larger the number, the higher the `y`. For TrueType fonts (TTF), the larger the number, the lower the `y`. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#shift-text-memory-optimization) Shift-Text Memory Optimization In previous versions, creating multiple Unicode-supported `descent-text` instances resulted in redundant font width data being cached, each copy containing over 50,000 characters. In version 3.0, however, creating multiple `shift-text` instances will no longer increase memory usage, eliminating redundant data storage and improving memory management. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#automatic-character-width-calculation) Automatic Character Width Calculation In previous versions, users manually input the `width` parameter to set the character width, often leading to inaccurate results. In the new version, the plugin adopts the same calculation method as the client, automatically calculating the advance for added characters. As a result, the `width` option has been deprecated, simplifying the process and improving accuracy. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FYOZ10Kh6oWdIeaG0F7ck%2Fimage.png&width=768&dpr=3&quality=100&sign=9f7df11d&sv=2) image The new version has removed the `display name` and `text format` configurations from the `bubble` settings. These options have now been moved to `/configs/bubble.yml` to accommodate the new multi-line bubble feature. This change allows for better organization and more flexibility in customizing bubbles in line with the updated system. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2Fa6YLJ3Bi8IdVUDPHsWSn%2Fimage.png&width=768&dpr=3&quality=100&sign=6676cbe1&sv=2) /contents/bubbles/chat.yml (2.0) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FHt5BWiurSkmrIIRMrw0j%2Fimage.png&width=768&dpr=3&quality=100&sign=791a2b95&sv=2) /configs/bubble.yml (3.0) You’ll notice that the plugin registers a font called `shift_0`, which has no offset. This is due to a special client option called "Force Unicode Font." When users enable this option, they see thinner fonts, causing issues with alignment between nameplates, backgrounds, bubbles, and text. To address this, the plugin registers the `shift_0` font to ensure that the client and server font advance data are synchronized, forcing the fonts to align properly. This guarantees that the plugin's final visual effect matches the intended design, even when Unicode fonts are used. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#margin-configuration-adjustment) Margin Configuration Adjustment In previous versions, `left-margin` and `right-margin` were part of the background configuration. In version 3.0, these options have been moved to `background-text`. Additionally, the concept of margins has been introduced into `nameplate-text`, allowing users to more flexibly configure margins for nameplates. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FQyrYXKkCWJOVHpgnof7b%2Fimage.png&width=768&dpr=3&quality=100&sign=cd4388df&sv=2) /contents/backgrounds/bedrock\_1.yml ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2F85wWg2YxgI71i2VmMTCV%2Fimage.png&width=768&dpr=3&quality=100&sign=4fae9cf9&sv=2) /configs/custom-placeholder.yml (3.0) You'll notice that the previous `remove-shadow: true` option has now been changed to `shadow: false`. This is due to the new version using the updated color code `<#F0F0F0>` to remove shadows, which works differently from the old version, particularly in how it handles semi-transparent images. If you continue to use `remove-shadow`, it will apply the old version's color code. You don't need to change this option if you're comfortable with the previous behavior. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#dynamic-color-prefix-support) Dynamic Color Prefix Support The new version removes the player name color option in nameplates and replaces it with customizable color prefixes via `switch-text`. This allows users to fully customize colors, including dynamic gradient colors, making nameplates more flexible and visually appealing. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FdDesGZvbOtJ8HbBb3Xwl%2Fimage.png&width=768&dpr=3&quality=100&sign=be8f2e00&sv=2) /contents/nameplates/cat.yml ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FGxzrEN8KTmSRPv2RAZRB%2Fimage.png&width=768&dpr=3&quality=100&sign=fa6aeea4&sv=2) /configs/custom-placeholder.yml ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FREwtvDPdBnsldKYZ1wGo%2Fimage.png&width=768&dpr=3&quality=100&sign=7eccd4ad&sv=2) /configs/nameplate.yml #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/customnameplates-update-version-2.4-to-3.0-overview#changes-to-player-tag-display) Changes to Player Tag Display Player tags are now displayed using text mounted directly on the player, eliminating the need for compatibility with team-based plugins. As a result, nameplates only need to be installed on the backend server, and all compatibility settings for team plugins have been removed from `config.yml`. This method of mounting text display significantly reduces server bandwidth usage and performs better when players are riding other entities (e.g., boats or horses). Moreover, players can preview their nameplates instantly without any delay. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FsSF1c4DyWfcqJIeDsUy7%2Fimage.png&width=768&dpr=3&quality=100&sign=abd6d4&sv=2) config.yml (2.0) The shader has removed the old version’s code for offsetting entity name text and added a new method for removing shadows. At the same time, it retains the old shadow removal method for backward compatibility. This allows users to choose between the new and old shadow removal techniques, depending on their preferences or requirements. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FfUyUzKw1RbS90ZTfugbG%2Fimage.png&width=768&dpr=3&quality=100&sign=8abc28cd&sv=2) shader (2.0) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F38qW4kbjQZD9awFw00si%2Fblobs%2FwAWidhd51mkuCKKgANH1%2F612bbfd6d40eeb9c2498a89f47b01d81.png&width=768&dpr=3&quality=100&sign=4caa4daf&sv=2) shader (3.0) [PreviousBasic Operationschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customnameplates/plugin-wiki/customnameplates/api/basic-operations) sun-brightdesktopmoon Copy conditions: example_condition: type: "some_condition" value: ... refresh-interval: 100 # ticks Copy # custom-placeholder.yml shift-text: player_name: text: "%player_name%" font: shift_0 Copy shift-fonts: shift_0: - space - nonlatin_european:7 - accented:9 - ascii:7 - unifont_jp - unifont shift_2: - space - ascii:-15 sun-brightdesktopmoon --- # πŸ… Competition | CustomFishing | XiaoMoMi Plugins **Goal**: Determines the objective of the competition. For instance, `CATCH_AMOUNT` would mean the player who catches the most fish wins. Copy # TOTAL_SCORE # CATCH_AMOUNT # MAX_SIZE # MIN_SIZE # TOTAL_SIZE # RANDOM goal: CATCH_AMOUNT **Start-Weekday**: Specifies which days the competition starts. Copy start-weekday: - 6 - 7 **Start-Time**: Determines the time(s) the competition starts during the day. Copy start-time: - '9:30' - '14:30' - '20:00' **Duration:** Defines how long the competition lasts, in seconds. Copy duration: 300 **Minimum Players**: The minimum number of players required for the competition to start. (It's advised to keep it 0 if Redis ranking is enabled) **Skip-Actions**: Actions to be executed if the minimum number of players is not met. **Bossbar**: Settings related to the bossbar display during the competition. It provides information to players. **Actionbar**: An alternative UI to the bossbar. It provides information in the action bar. **Start and End Actions**: Defines the actions to be executed when the competition starts and ends. **Participation Actions**: Actions to be executed when a player joins the competition. **Participation Requirements**: Requirements for joining the competition **Rewards**: Determines the rewards for players based on their rankings or participation. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition#redis-ranking) Redis Ranking ------------------------------------------------------------------------------------------------------------------------------------------------ To set up a synchronized fishing competition across multiple servers, the plugin offers integration with Redis for real-time ranking updates. This ensures that players on different servers can compete in the same event and view live rankings. **Enabling Redis Ranking** Follow the steps below to activate the Redis ranking mechanism: 1. Navigate to your `config.yml` file. 2. Locate the `mechanics` section. 3. Inside the `competition` subsection, find `redis-ranking`. 4. Set the value of `redis-ranking` to `true`. **Redis Settings** To set up Redis, follow these steps: 1. Open the `database.yml` file. 2. Scroll to find the `Redis` section. 3. Update the configuration settings according to your Redis setup: Save and reload the plugin. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition#placeholder-limitation) Placeholder Limitation ------------------------------------------------------------------------------------------------------------------------------------------------------------------ The fishing plugin employs caching mechanisms to optimize performance, especially when syncing data across multiple servers through Redis. By default, for performance considerations, the plugin only syncs the real-time data variables of the top three competitors. If you wish to display more competitors' data in real-time, you need to adjust the placeholder-limit setting. 1. Navigate to your `config.yml` file. 2. Locate the `mechanics` section. 3. Navigate to the `competition` section. 4. Find the `placeholder-limit` setting. If it doesn't exist, you might need to add it manually. 5. Set its value to the number of top competitors' real-time data you wish to display. For example, if you want to display the top 5 competitors' data, set it to 5: [PreviousDancechevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/minigame/dance) [Nextβœ… Conditionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition) * [Redis Ranking](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition#redis-ranking) * [Placeholder Limitation](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition#placeholder-limitation) sun-brightdesktopmoon Copy min-players: 2 Copy skip-actions: broadcast: type: broadcast value: - 'The number of players is not enough for the fishing competition to be started as scheduled.' Copy bossbar: enable: true color: WHITE overlay: PROGRESS text: - '[<#87CEFA>🎣] Time Left: <#E6E6FA>{seconds}s | Your Rank: <#E6E6FA>{rank} | No.1 Player: <#E6E6FA>{1_player}' - '[<#87CEFA>🎣] Time Left: <#E6E6FA>{minute}{second} | Your Score: <#E6E6FA>{score} | No.1 Score: <#E6E6FA>{1_score}' - '[<#87CEFA>🎣] Time Left: <#E6E6FA>{minute}{second} | Winning condition: <#E6E6FA>{goal}' refresh-rate: 20 switch-interval: 200 only-show-to-participants: true Copy actionbar: enable: false text: - 'Time Left: <#E6E6FA>{seconds}s | Your Rank: <#E6E6FA>{rank} | No.1 Player: <#E6E6FA>{1_player}' - 'Time Left: <#E6E6FA>{minute}{second} | Your Score: <#E6E6FA>{score} | No.1 Score: <#E6E6FA>{1_score}' - 'Time Left: <#E6E6FA>{minute}{second} | Winning condition: <#E6E6FA>{goal}' refresh-rate: 5 switch-interval: 200 only-show-to-participants: true Copy start-actions: ... end-actions: ... Copy participate-actions: ... Copy participate-requirements: ... Copy rewards: 1: command_action: type: command value: - 'money give {player} 200' messages_action: type: message value: - '<#FF4500>[1st] Congratulations! You got the first prize!' 2: command_action: type: command value: - 'money give {player} 100' messages_action: type: message value: - '<#FF4500>[2nd] Just miss the opportunity, try next time!' 3: command_action: type: command value: - 'money give {player} 100' messages_action: type: message value: - '<#FF4500>[3rd] Just miss the opportunity, try next time!' # <-- 4,5,6... participation: command_action: type: command value: - 'money give {player} 10' messages_action: type: message value: - '<#FF4500>Thanks for participation!' Copy mechanics: competition: redis-ranking: true Copy Redis: enable: true # Set to true to enable Redis integration host: [Your_Redis_Host] # Replace with your Redis server's address #password: [Your_Password] # Uncomment and replace with your Redis password if required port: [Your_Redis_Port] # Replace with your Redis server's port use-ssl: [true/false] # Set to true if using SSL for Redis connections MaxTotal: 10 # Maximum number of resources that can be allocated by the pool MaxIdle: 10 # Maximum number of idle resources in the pool MinIdle: 1 # Minimum number of idle resources in the pool MaxWaitMillis: 30000 # Maximum amount of time the borrowObject method should block before throwing an exception MinEvictableIdleTimeMillis: 1800000 # Specifies the minimum amount of time an object may sit idle in the pool before it is eligible for eviction Copy mechanics: competition: placeholder-limit: 5 sun-brightdesktopmoon --- # βš–οΈ Weight System [MUST READ] | CustomFishing | XiaoMoMi Plugins [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#introduction) Introduction --------------------------------------------------------------------------------------------------------------------------------------------------- The probability system of the entire plugin is controlled by weights. What are weights? A weight represents the relative chance of obtaining a particular item. For instance, if item A has a weight of 10 and item B has a weight of 30, the probability of getting A is 25%, while the chance of getting B is 75%. This is the most scientific method for calculating probabilities. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#where-can-weights-be-used) Where can weights be used? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Where can weights be used? In fact, weights are applied in many parts of the plugin. For instance, adjusting weights based on conditions for loot, weights in mini-games, and item effects (like fishing rods) that offer weight modification features. They are typically configured in a list format and adhere to this specific configuration format. With weight modifications, we can achieve features that many other fishing plugins can't. For example, there's less trash in the ocean but it frequently appears in rivers. Players using a golden fishing rod have a higher chance to catch gold-quality loot. Or perhaps, to catch a ferocious shark, players must use shark bait. All these features can be realized through the weight system. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#weight-operations) Weight Operations ------------------------------------------------------------------------------------------------------------------------------------------------------------- Weight operations include + (addition), - (subtraction), \* (multiplication), / (division), % (modulus), and = (custom expression). ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#basic-operations) Basic Operations Let's first take a look at some basic weight operation expressions. For the operators `+`, `-`, `*`, `/`, and `%`, simply write the corresponding operator after the colon and then specify the corresponding value after it. This value can either be a registered placeholder or a fixed number. Copy rubbish:+10 rubbish:-5.5 rubbish:/2 rubbish:%6 rubbish:*{placeholder} ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#custom-operations) Custom Operations For the `=` operator, the plugin provides a more advanced expression system. You can freely use the expressions provided by the plugin. For example, this simple mathematical formula: You can also use `{0}` to represent the weight of the current entry at the time this expression is evaluated, or `{1}` to represent the sum of the weights of all entries (excluding those with weights less than or equal to 0) when this expression is evaluated. In this example, the weight of "rubbish" will be doubled compared to its previous value. In this example, the weight of "rubbish" will become 1% of the total weight of all loot. [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#configure-loot-conditions.yml-and-game-conditions.yml) Configure loot-conditions.yml & game-conditions.yml ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Some users may feel very confused after coming into this file. Custom Fishing is using a configuration file format that other plugins have never attempted before. Unlike other fishing plugins, Custom Fishing provides a tree like probability pool that can be freely modified in weight based on conditions. Now we will take you through the default configuration file to understand how this system works. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#groups) Groups **Please note: The "group" here has no relation to the group in the items. This "group" is simply a random name used to help users organize the file structure.** Firstly, we saw a section name called 'global group' `global-group` is just a random name that you can freely modify and add any group you want for instance: Upon careful observation, you will find that a group consists of three parts: list, conditions, and sub-groups. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#add-entry-to-list) Add Entry to List If you want a certain loot to appear, you just need to add it to the list with `=`or `+` If the file is loot-conditions.yml, you can put any id of the loots from `item/entity/block` folder If the file is game-conditions.yml, you can only put the id of the games from `minigame` folder In this strange configuration, the final weight of my\_fish is ((0+6-4)\*10/5)%3=1. Okay, it's funny that its weight has returned to 1 after circling around for a long time. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#conditions) Conditions Now let's continue to look at the conditions section. This section affects whether the weight operator of the list is executed. You can use most of the conditions provided by the conditional system. If you still don't know what the conditional system is, please read [βœ… Conditionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition) For example, if I want this fish to appear in my custom biome now, I can configure it like this Very good! You now know how the conditional system works, let's continue to look at how sub groups work. In this example, I created two subgroups, one of which cannot be executed because it violates an important principle: `The conditions of the subgroup cannot conflict with the conditions of the parent group` If a player is cute, then at last he can only get `cute_fish` because I set the weight of `my_fish` to 0 Suppose you have a requirement where the probability of obtaining a chest should always be around 2%, regardless of how the loot list changes. In that case, you can configure it as follows: Remember, the `loot-conditions.yml` is parsed from top to bottom, and from outside to inside. Therefore, you need to place the chest condition at the end. The example here is unrealistic because the fishing gear a player holds will often influence the weight of other items afterward, which could cause the 2% probability to become ineffective. Therefore, you can use `global-effects` and apply weight adjustments to individual loot items, as `global-effects` are always processed last. However, it provides enough insight and can be useful in certain scenarios. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#debug-the-loot-table) Debug the Loot Table Weights aren't very intuitive to me. How can I convert the weights into a percentage form? The plugin has already thought of this. You simply need to use the command `/customfishing debug loot `. It will calculate the probabilities of all potential loots based on the fishing rod, bait, and other factors you currently hold that can affect the fishing results. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FfNW6GpvVsFqWM7hOZAgb%2Fimage.png&width=768&dpr=3&quality=100&sign=34438cc2&sv=2) [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#advanced-tutorial) Advanced Tutorial ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#additional-weight-functions) Additional Weight Functions In addition to the basic `id:operation` format, the plugin also provides many other operation qualifiers. Next, I will explain each function one by one according to the examples. #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#group_for_each) group\_for\_each The `group_for_each` operation will apply a weight operation to each member within the group. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2Fw5mtpNYjRf0yzKHOoIQu%2Fimage.png&width=768&dpr=3&quality=100&sign=70fbafff&sv=2) In addition to using a single group like `river`, you can also combine groups. For example, `river&silver_star` represents loot that is in both the `river` and `silver_star` groups. Similarly, `river|ocean` represents loot that is in either the `river` or `ocean` group. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F63GbgRpLCs5O8BGTWzIU%2Fimage.png&width=768&dpr=3&quality=100&sign=a8f876bf&sv=2) #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#group_available_for_each) group\_available\_for\_each Unlike `group_for_each`, the objects affected by `group_available_for_each` must have already appeared earlier. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F34kq00uo9RbuBmJrK0kK%2Fimage.png&width=768&dpr=3&quality=100&sign=419a4865&sv=2) #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#group_total) group\_total The `group_total` operation will evenly distribute the weight among each member within the group to ensure that the total weight of the group remains consistent. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FHFVi9FdDVMPCqL7EdOBl%2Fimage.png&width=768&dpr=3&quality=100&sign=b5c694d2&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FO0qvkmYP96lRRNzmwZIN%2Fimage.png&width=768&dpr=3&quality=100&sign=c36f78c7&sv=2) #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#group_available_total) group\_available\_total The difference between `group_available_total` and `group_total` is that `group_available_total` only affects entries that have already appeared earlier. Due to the limitations of the 2.x architecture and performance considerations, the plugin does not dynamically track or calculate entries that have already appeared. This can lead to discrepancies in the total weight when using `group_available_total`. This issue will be resolved in the 3.0 refactor. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FqJGz1vlbZmjx5j6QgDrf%2Fimage.png&width=768&dpr=3&quality=100&sign=888b16f1&sv=2) #### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#loot_available) loot\_available Unlike regular weight operations, this one only targets entries that have already appeared earlier. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FadErqNuxiGxQGQTeynBr%2Fimage.png&width=768&dpr=3&quality=100&sign=cad9403f&sv=2) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2Fc5mnt0vpcATTbdBRXcag%2Fimage.png&width=768&dpr=3&quality=100&sign=eebe11c6&sv=2) ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#additional-placeholders) Additional Placeholders In the `=` expression, you can use `{entry_xxx}` to retrieve the weight of a specific entry that has appeared earlier, and use `{group_xxx}` to get the sum of the weights of all entries that meet the group conditions. In this example, I first added a +10 weight to all river fish, and then evenly distributed the total weight of the river fish across all ocean fish. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FednGcYainOr0wkv8NLGv%2Fimage.png&width=768&dpr=3&quality=100&sign=c2b7a16a&sv=2) In this example, I set the weight of the `golden_star` and `silver_star` to 10% and 30% of their weight without a star status. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FLwscTzWzvEa0m93D4Z4N%2Fimage.png&width=768&dpr=3&quality=100&sign=8cbbfb15&sv=2) For groups, you can also use the previously mentioned `&` and `|` operators. The `&` operator represents the intersection of groups (items that belong to both groups), while the `|` operator represents the union of groups (items that belong to either group). ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F8EmjahXVc0SHh5nWwUQ3%2Fimage.png&width=768&dpr=3&quality=100&sign=7741469f&sv=2) [Previous❓️ Common questionschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/common-questions) [NextπŸ“„ Formatchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format) * [Introduction](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#introduction) * [Where can weights be used?](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#where-can-weights-be-used) * [Weight Operations](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#weight-operations) * [Basic Operations](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#basic-operations) * [Custom Operations](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#custom-operations) * [Configure loot-conditions.yml & game-conditions.yml](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#configure-loot-conditions.yml-and-game-conditions.yml) * [Groups](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#groups) * [Add Entry to List](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#add-entry-to-list) * [Conditions](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#conditions) * [Debug the Loot Table](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#debug-the-loot-table) * [Advanced Tutorial](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#advanced-tutorial) * [Additional Weight Functions](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#additional-weight-functions) * [Additional Placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/weight-system-must-read#additional-placeholders) sun-brightdesktopmoon Copy rubbish:=100+sin(pi) Copy Built-in functions: abs: absolute value acos: arc cosine asin: arc sine atan: arc tangent cbrt: cubic root ceil: nearest upper integer cos: cosine cosh: hyperbolic cosine exp: euler's number raised to the power (e^x) floor: nearest lower integer log: logarithmus naturalis (base e) log10: logarithm (base 10) log2: logarithm (base 2) sin: sine sinh: hyperbolic sine sqrt: square root tan: tangent tanh: hyperbolic tangent signum: signum function Copy rubbish:={0}*2 Copy rubbish:={1}*0.01 Copy global-group: list: [] conditions: {} sub-groups: {} Copy river-group: list: [] conditions: {} sub-groups: {} ocean-group: list: [] conditions: {} sub-groups: {} nether-group: list: [] conditions: {} sub-groups: {} the-end-group: list: [] conditions: {} sub-groups: {} Copy global-group: list: - my_fish:+1 # Add my_fish to the loot table conditions: {} sub-groups: {} Copy global-group: list: - my_fish:=0 # set the weight - my_fish:+6 # plus - my_fish:-4 # minus - my_fish:*10 # multiply - my_fish:/5 # divide - my_fish:%3 # modular conditions: {} sub-groups: {} Copy global-group: list: - my_fish:+1 conditions: in-water: true biome: - my_namespace:my_custom_biome sub-groups: {} Copy global-group: list: - my_fish:+1 conditions: in-water: true biome: - my_namespace:my_custom_biome sub-groups: impossible_group: # This group would not work because the biome has to be list: # my_namespace:my_custom_biome before going into the inner - my_fish:+1 # sub-groups section conditions: biome: - minecraft:plains possible_group: list: - cute_fish:+1 - my_fish:=0 conditions: equals: value1: '%cute_player%' # This is just a fabricated placeholder value2: 'true' Copy global-group: list: [] conditions: {} sub-groups: fishs: list: - a:+5 - b:+7 - c:+19 conditions: {} sub-groups: {} chest: list: - chest:={1}*0.02 conditions: {} sub-groups: {} Copy global-group: list: - group_for_each:river:+10 conditions: {} sub-groups: {} Copy global-group: list: - 'group_for_each:river&silver_star:+10' conditions: {} sub-groups: {} Copy global-group: list: - gold_fish:=10 - group_available_for_each:river:+10 conditions: {} sub-groups: {} Copy global-group: list: - group_total:ocean:+10 conditions: {} sub-groups: {} Copy global-group: list: - 'group_total:ocean&golden_star:+10' conditions: {} sub-groups: {} Copy global-group: list: - tuna_fish:+10 - group_available_total:ocean:+10 conditions: {} sub-groups: {} Copy global-group: list: - tuna_fish:+10 - loot_available:tuna_fish:+10 conditions: {} sub-groups: {} Copy global-group: list: - gold_fish:+10 - loot_available:tuna_fish:+10 conditions: {} sub-groups: {} Copy global-group: list: - group_for_each:ocean:+10 - group_total:river:={group_ocean} conditions: {} sub-groups: {} Copy global-group: list: - tuna_fish:+10 - 'tuna_fish_silver_star:={entry_tuna_fish}*0.3' - 'tuna_fish_golden_star:={entry_tuna_fish}*0.1' conditions: {} sub-groups: {} Copy global-group: list: - group_for_each:ocean:+10 - 'rainbow_fish:={group_ocean&silver_star}*0.3' conditions: {} sub-groups: {} sun-brightdesktopmoon --- # Basic Operations | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#create-context) Create context Copy Player player = Bukkit.getPlayer("player"); Context context = Context.player(player); // You can create it with null, but please be careful not to use it in any place // where a player is needed, such as checking permissions, sending messages Context context = Context.player(null); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-plugin-instance) Get plugin instance Copy BukkitCustomFishingPlugin api = BukkitCustomFishingPlugin.getInstance() ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#build-an-item-instance) Build an item instance Copy ItemStack itemStack = api.getItemManager().buildInternal(context, "rubbish"); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-effect-modifier) Get effect modifier Copy Optional optional = api.getEffectManager().getEffectModifier("beginner_rod", MechanicType.ROD); if (optional.isPresent()) { EffectModifier modifier = optional.get(); } ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#create-new-effect-instance) Create new effect instance ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#apply-the-modifier) Apply the modifier ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-the-loot-at-a-certain-location) Get the loot at a certain location ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#convert-loot-into-an-itemstack) Convert loot into an itemStack ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-the-itemstack-from-fishinglootspawnevent) Get the itemStack from FishingLootSpawnEvent [PreviousEventschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/events) [NextIntegration Providerchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/integration-provider) * [Create context](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#create-context) * [Get plugin instance](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-plugin-instance) * [Build an item instance](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#build-an-item-instance) * [Get effect modifier](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-effect-modifier) * [Create new effect instance](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#create-new-effect-instance) * [Apply the modifier](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#apply-the-modifier) * [Get the loot at a certain location](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-the-loot-at-a-certain-location) * [Convert loot into an itemStack](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#convert-loot-into-an-itemstack) * [Get the itemStack from FishingLootSpawnEvent](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/basic-operations#get-the-itemstack-from-fishinglootspawnevent) sun-brightdesktopmoon Copy Effect effect = Effect.newInstance(); Copy // There are three stages in total // CAST: Determines what fishing mechanics are available (such as lava fishing) // LOOT: Affects the weight of the next loot // FISHING: Determines loot-related properties, such as size, score, and game difficulty modifier.apply(effect, FishingEffectApplyEvent.Stage.CAST, context); Copy context.arg(ContextKeys.LOCATION, player.getLocation()); // sets the player location context.arg(ContextKeys.OTHER_LOCATION, custom_location); // sets the custom location, in most cases, it's the hook's context.arg(ContextKeys.SURROUNDING, "water"); Loot loot = api.getLootManager().getNextLoot(effect, context); Copy if (loot.type() == LootType.ITEM) { ItemStack itemStack = api.getItemManager().buildInternal(context, loot.id()); } Copy @EventHandler public void onLootSpawn(FishingLootSpawnEvent event) { if (event.getEntity() instanceof Item item) { ItemStack itemStack = item.getItemStack(); } } sun-brightdesktopmoon --- # πŸ’ͺ Action | CustomFishing | XiaoMoMi Plugins The action system offers pre-set effects provided by the plugin. However, you can also add your own actions by using the API. This system can be applied anywhere an action can be triggered, like when you successfully catch a fish, when a competition ends and rewards are given out, or when selling fish. Action is composed of three parts Copy type: The action type value: The arguments of the action chance: Optional (0~1 Default: 1) If the value is an integer or a double value, you can use expression for instance Copy exp_action: type: exp value: '{level} * 3' [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/action#action-library) Action Library -------------------------------------------------------------------------------------------------------------------------------------- > message (Send a message to player) Copy messages_action: type: message value: - '<#FF4500>[1st] Congratulations! You got the first prize!' > random-message (Send a random message from the list) Copy message: type: random-message value: - 'Message 1' - 'Message 2' - 'Message 3' > broadcast (Send a message to online players) > command (Execute a console command) > player-command (Execute a command as player) > random-command (Execute a random console command from list) > close-inv (Close the inventory player is currently opening) > actionbar > random-actionbar > mending (Give player exp that would be applied to mending) > exp (Give player exp that would directly go into levels) > chain (Execute actions as a group) > delay (Delay x ticks) > timer > title > random-title > sound > potion-effect > plugin-exp (Experience from other plugins for instance a job/skill plugin) > conditional (Actions can only be triggered when player satisfy the conditions) > priority (Execute the first action group that meets the conditions.) > fake-item (Display a fake item for some time) Note: "opposite-yaw" and "yaw" cannot be used at the same time > hologram (Display a hologram for some time) > fish-finder > message-nearby > command-nearby > actionbar-nearby > title-nearby > food > saturation > item-amount > durability > give-item > give-money > take-money > level > context-arg > drop-random-items (Drop random items based on current conditions) [Previousβœ… Conditionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition) [NextπŸ…ΏοΈ Placeholder & Expressionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression) Last updated 2 months ago sun-brightdesktopmoon Copy broadcast_action: type: broadcast value: - '<#D4F2E7>◀─────────────────────────β—₯' - '' - ' [<#87CEFA>🎣] Fishing Competition' - '' - ' <#E1FFFF>Objectives:' - ' <#B0C4DE>Catch as many fish as possible' - ' <#B0C4DE>Start fishing to participate!' - '' - '<#D4F2E7>◣─────────────────────────◒' Copy command_action: type: command value: - 'money give {player} 200' Copy command_action: type: player-command value: - 'say hello' Copy command_action: type: random-command value: - 'money give {player} 200' - 'money give {player} 100' - 'money give {player} 50' Copy close_action: type: close-inv Copy actionbar_action: type: actionbar value: 'Hi' Copy actionbar_action: type: random-actionbar value: - 'Hi' - 'Hello' - 'Hola' Copy mending_action: type: mending value: 1 Copy exp_action: type: exp value: 1 Copy chain_action: type: chain value: action_1: ... action_2: ... chance: 0.5 Copy delay_action: type: delay value: delay: 20 async: false actions: action_1: ... action_2: ... Copy timer_action: type: timer value: delay: 3 async: false duration: 20 period: 2 actions: action_1: ... action_2: ... Copy title_action: type: title value: title: 'GG!' subtitle: 'You caught a {nick}' fade-in: 20 stay: 30 fade-out: 10 Copy title_action: type: random-title value: titles: - 'GG!' - 'Good Job!' subtitles: - 'You caught a {loot}' - 'Whoa! Nice catch!' - 'Oh {loot} here we go!' - 'Let''s see what it is!' fade-in: 20 stay: 30 fade-out: 10 Copy sound_action: type: sound value: key: 'minecraft:block.amethyst_block.place' source: 'player' volume: 1 pitch: 1 Copy potion_action: type: potion-effect value: type: 'blindness' duration: 20 amplifier: 0 Copy plugin_exp_action: type: plugin-exp value: plugin: mcMMO exp: 20 target: FISHING Copy conditional_action: type: conditional value: conditions: ... actions: ... Copy priority_action: type: priority value: priority_1: conditions: ... actions: ... priority_2: conditions: ... actions: ... others: actions: ... Copy fake_item_action: type: fake-item value: duration: 25 <- ticks position: other <- other/player item: water_effect use-item-display: true # whether to use item display (1.19.4+) y: 0 <- y offset x: 0 <- x offset z: 0 <- z offset yaw: 0 opposite-yaw: true range: 0 # If range = 0, the hologram can only be seen by one player Copy hologram_action: type: hologram value: duration: 20 <- ticks text: '{player} caught a {loot}!' position: player <- other/player use-text-display: true # whether to use text display (1.19.4+) rgba: 0,0,0,0 range: 16 # If range = 0, the hologram can only be seen by one player y: 2 <- y offset x: 0 <- x offset z: 0 <- z offset Copy finder_action: type: fish-finder value: surrounding: water # water / lava/ void ignore-gears: true Copy message_action: type: message-nearby value: message: - 'Hello {near}. This message is sent by {player}' range: 32 Copy command_action: type: command-nearby value: command: - 'give {near} apple' range: 32 Copy actionbar_action: type: actionbar-nearby value: actionbar: 'This is an actionbar' range: 32 Copy title_action: type: title-nearby value: title: 'Title' subtitle: 'subtitle' fade-in: 20 stay: 30 fade-out: 10 range: 32 Copy https://minecraft.wiki/w/Hunger food_action: type: food value: 2 Copy https://minecraft.wiki/w/Hunger saturation_action: type: saturation value: 1.5 Copy item_amount_action: type: item-amount value: # main / off hand: main amount: -1 Copy durability_action: type: durability value: # hand / offhand / feet / head / chest /legs slot: hand amount: -1 Copy item_action: type: give-item value: item: CustomFishing:star_rod amount: 1 to-inventory: false # whether to drop the item or go directly into inventory Copy money_action: type: give-money value: 100.12 Copy money_action: type: take-money value: 50.54 Copy money_action: type: level value: -10 Copy argument_action: type: context-arg value: test: custom another: another Copy drop_random_loots_action: type: drop-random-loots value: amount: 10 extra-attempts: 5 # how many times should the plugin try if the loot is not an item to-inventory: false sun-brightdesktopmoon --- # πŸ…ΏοΈ Placeholder & Expression | CustomFishing | XiaoMoMi Plugins [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#placeholderapi-placeholders) PlaceholderAPI placeholders ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ placeholder value %cfcompetition\_goingon% true: there's a competition going on false: the opposite %cfcompetition\_nextseconds% Get the countdown to the upcoming competition (Raw value) %cfcompetition\_nextsecond% %cfcompetition\_nextminute% %cfcompetition\_nexthour% %cfcompetition\_nextday% Get the countdown to the upcoming competition in days, hours, minutes, and seconds. (Formatted) %cfcompetition\_rank% Get the rank in current competition %cfcompetition\_score% Get the score in current competition %cfcompetition\_score\_% Get the score of the player in the specified ranking %cfcompetition\_player\_% Get the name of the player in the specified ranking %cfcompetition\_goal% Get the competition goal %cfcompetition\_seconds% Get the countdown for the current competition (Raw value) %cfcompetition\_second% %cfcompetition\_minute% %cfcompetition\_hour% Get the countdown for the current competition in hours, minutes, and seconds. (Formatted) placeholder value %fishingstats\_total% Get the total amount of fish caught. This value might vary from the vanilla statistics because in CustomFishing you can disable statistics for certain loots. %fishingstats\_amount\_% Get the total amount of a certain loot caught %fishingstats\_hascaught\_% If player has caught a certain loot. Value: true / false %fishingstats\_category\_total\_% Get the total amount of fish caught that in a specified category. %fishingstats\_category\_progress\_% Get the unlock progress of the loots in specified category. %fishingstats\_size-record\_% Get the size record of a certain loot placeholder value %customfishing\_market\_limit% Get the market's sell limitation %customfishing\_market\_earnings% Get today's earnings %customfishing\_market\_canearn% Get the money that can be earned in the rest of the day %customfishing\_random% Get random double value between 0-1 [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#internal-placeholders) Internal placeholders ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ placeholder value {second} {minute} {hour} Get the countdown for the current competition in hours, minutes, and seconds. {seconds} Get the countdown for the current competition (Raw value) {rank} Get the rank in current competition {score} Get the score in current competition {\_player} Get the name of the player in the specified ranking {\_score} Get the score of the player in the specified ranking {goal} Get the competition goal {loot} Get the type of the loot {id} Get the internal ID {record} {record\_formatted} Get the size record {clicks} Get the amount of clicks required in 'Click' game {left\_clicks} Get the remaining amount of clicks in 'Click' game {total\_amount} Get the number of fish caught {progress} Get the progress of the game {nick} Get the loot's nick {score} {score\_formatted} Return the score of the fish if competition goal is total score. Return the the size of the fish if comeptition goal is size related. Return "1" if the competition goal is catch amount. Return "0" if the loot doesn't have a score or there's no competition going on. {custom\_score} This value if only available if the score is modified with API {size} {size\_formatted} The size of the fish caught {min\_size} {max\_size} The min/max size of the fish {price} {price\_formatted} The final price of the fish caught {base} The base price of the fish caught {bonus} The bonus {x} X coodinate {y} Y coodinate {z} Z coodinate {other\_x} The other X coodinate {other\_y} The other Y coodinate {other\_z} The other Z coodinate {world} world {player} player {near} nearby player {money} {money\_formatted} The money that can be earned from selling {sold\_item\_amount} The amount of sold items {rest} {rest\_formatted} The rest of the money that can be earned in this day {time\_left} Totem effective time / game time left {0} The unmodified weight {rod} Get the rod ID {bait} Get the bait ID {hook} Get the hook ID {surrounding} Get the environment the hook in {random} Get random double value between 0-1 [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#register-placeholders) Register placeholders ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Plugin doesn't support using PlaceholderAPI placeholders directly. But there's a section in config.yml where you can customize the identifier of a placeholder and use it almost everywhere. Let's try the example below. Firstly make sure that you have installed PlaceholderAPI and Server Expansion. Then you can use {date} in your items [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#custom-expressions) Custom expressions ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Once you register a placeholder, you can use it almost everywhere in your plugin. For example, item properties, effects, NBT. * **Example 1** β‘  The probability of obtaining multiple loot increases. β‘‘ The fish will drop more experience points β‘’ Players can earn more from fishing every day β‘£ Players have less chance of getting rubbish from fishing β‘€ Players have more chance of getting quality fish * **Example 2** This example requires you to install [https://api.extendedclip.com/expansions/math/arrow-up-right](https://api.extendedclip.com/expansions/math/) & [https://api.extendedclip.com/expansions/vault/arrow-up-right](https://api.extendedclip.com/expansions/vault/) This example converts the money to integer format and displays the money the player would have if they sell the fish. Then we could replace the old section in config.yml [PreviousπŸ’ͺ Actionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/action) [Next🀝 Compatibilitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/compatibility) * [PlaceholderAPI placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#placeholderapi-placeholders) * [Internal placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#internal-placeholders) * [Register placeholders](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#register-placeholders) * [Custom expressions](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/placeholder-and-expression#custom-expressions) sun-brightdesktopmoon Copy placeholder-register: '{date}': '%server_time_yyyy-MM-dd-HH:mm:ss%' Copy rubbish: material: paper nick: Rubbish display: name: Rubbish lore: - 'Time to protect the environment...' - 'Caught at {date} by {player}' Copy # firstly register the placeholders we need in config.yml placeholder-register: '{skill-level}': '%xxxskill_fishing%' Copy #config.yml mechanics: global-effects: skill_effect: type: multiple-loot value: '{skill-level} * 0.02' Copy #contents/item/default.yml tuna_fish: events: success: action_mending: type: mending value: 5 + {skill-level} * {random} * 0.1 chance: 1.0 Copy # config.yml mechanics: market: limitation: enable: true earnings: '10000 + {skill-level} * 100' Copy global-group: list: [] conditions: {} sub-groups: loots_in_water: list: - 'rubbish:= 15 - ({skill-level} * 0.1)' Copy #config.yml mechanics: global-effects: skill_effect: type: group-mod value: - golden_star:+{skill-level} * 0.1 Copy # firstly register the placeholders we need in config.yml placeholder-register: '{money_int}': "%math_0_{money}%" '{money_after}': '%math_2_{money}+{vault_eco_balance}%' Copy sell-icons: symbol: 'B' allow-icon: material: IRON_BLOCK display: name: '<#00CED1>● Ship the fish' lore: - 'You will earn {money_int} coins from selling' - 'Your coins would be {money_after} after selling' action: command_action: type: command value: 'money give {player} {money_int}' sun-brightdesktopmoon --- # 🎁 Item | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/item#introduction) Introduction The item configuration format is a standardized system. Designed with versatility in mind, this format can be utilized in any context where items are needed. Common applications of this format include fishing loot, fishing rods, fishing baits, and even within market GUIs The items within the configuration are structured around keys. Each key contains a set of parameters that determine the characteristics and behavior of the item. The given example, "common\_bait", illustrates how a typical item is structured. Copy common_bait: material: paper display: name: '<#00BFFF>Common lures' lore: - '' - '<#7FFFD4>Desciption:' - 'Made from natural ingredients, it attracts' - "fish in a calm and steady manner. It's the" - 'go-to choice for those who prefer a ' - 'straightforward and reliable fishing experience.' - '' - '<#FFD700>Effects:' - ' - Reduce fishing difficulty' - '' custom-model-data: 50001 **Key:** The identifier for the item. In the provided example, the key is "common\_bait". **Material: (1.17-latest)** This defines the base material or the type of the item. For "common\_bait", the material is set to "paper". * **Example**: **Display: (1.17-latest)** This section provides the visual and descriptive aspects of the item. * **Name**: Determines the displayed name of the item. In this case, the name is "Common lures", and it's styled using color codes and text formatting. * **Example**: * ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FY7R1cUUimJat1KRnQqoR%2Fimage.png&width=768&dpr=3&quality=100&sign=564a98be&sv=2) * **Lore**: This is a list of descriptive lines that provide more information about the item. Each line can be formatted and colored, similar to the name. * **Example**: * ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F2B85u9Np7H4PGrktf9Do%2Fimage.png&width=768&dpr=3&quality=100&sign=1bb667de&sv=2) **Custom Model Data: (1.17-latest)** This parameter is used to assign a unique model data to the item. It can be especially useful when developers want to provide custom item textures or models in games. * **Example**: **Amount: (1.17-latest)** The quantity of the item that is being defined. * **Example**: **Tag: (1.17-latest)** Allows the addition of a Custom Fishing tag to the item. This tag is quite important for the plugin to identify items from CustomFishing. Disabling this might cause some issues. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FMKzQSOOzsTT10a8X5DPC%2Fimage.png&width=768&dpr=3&quality=100&sign=d012af61&sv=2) * **Example**: **Unbreakable: (1.17-latest)** Dictates whether the item is unbreakable * **Example**: **Item Flags: (1.17-1.20.4)** Lists specific flags altering the item's appearance or behavior. [https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemFlag.htmlarrow-up-right](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemFlag.html) * **Example**: **Max Durability: (1.17-latest)** Sets the item's custom durability. This option would turn the item into a custom durability item. If you prefer the new custom durability system introduced in 1.20.5, see the components section below. * **Example**: **Random Durability: (1.17-latest)** Decides if the item's durability is set randomly when acquired. This works for both vanilla durability and plugin's custom druability. * **Example**: **NBT: (1.17-latest)** Enables further customization using Named Binary Tags. If the tag value type is not specified, it might throw errors in some rare cases. ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FZfCBeXVfYX7UcaWUp1nM%2Fimage.png&width=768&dpr=3&quality=100&sign=e30f0717&sv=2) No enum constant found You can manually add the type to fix it for instance: Available value types: (Int) (Byte) (String) (Float) (String) (Double) (Short) (Long) (UUID) (Boolean) (IntArray) (ByteArray) * **Example**: **Components: (1.20.5-latest)** This is one of the most incredible updates to the plugin since 2.2.0. This section allows you to use any component type provided by Minecraft. Here are some examples to help you understand how to configure the component in CustomFishing configs. [https://minecraft.wiki/w/Data\_component\_format#Item\_formatarrow-up-right](https://minecraft.wiki/w/Data_component_format#Item_format) * **Example1**: ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FmiHeTf3ugpM6rII3smyy%2Fimage.png&width=768&dpr=3&quality=100&sign=807504b8&sv=2) Minecraft wiki * **Example2**: ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2F4HGQ2l0pv8hoOb5HhGwW%2Fimage.png&width=768&dpr=3&quality=100&sign=501c2be6&sv=2) Minecraft wiki * **Example3**: (Official custom durability system introduced in 1.20.5) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2Fn543FeNG86uGC0XdJ6RD%2Fimage.png&width=768&dpr=3&quality=100&sign=b3609f11&sv=2) Minecraft wiki **Price: (1.17-latest)** * **Description**: Determines the item's price. * **Base**: Initial price of the item. * **Bonus**: Multiplier applied based on size. * **Example**: **Stackable: (1.17-latest)** Indicates if the item can be stacked with similar items. * **Example**: **Placeable: (1.17-latest)** Allows the item (Player Head) to be placed * **Example**: **Head64: (1.17-latest)** Points to a base64 encoded string, generally utilized for custom player head textures. [https://minecraft-heads.com/custom-heads/arrow-up-right](https://minecraft-heads.com/custom-heads/) * **Example**: **(Stored) Enchantments: (1.17-latest)** Details enchantments that are directly applied to the item. * **Example**: **Random (Stored) Enchantments: (1.17-latest)** Enumerates possible enchantments that might be applied randomly upon the item's retrieval. Each potential enchantment is associated with a level and a chance of being applied. * **Example**: **(Stored) Enchantment Pool: (1.17-latest)** Enchantment pool provides the ability to control the amount of enchantments on one item instead of trying applying each configurated enchantment by probability. Plugin would not allow conflict enchantments to exist at the same time and EcoEnchants is totally compatible. From the example, we can infer that player has 60% chance of getting 1 enchantment, 30% chance of getting 2 and 10% chance of getting 3. amount weight probability 1 6 60% 2 3 30% 3 1 10% Now we assume that player can get 2 enchantments. **First enchantment** enchantment level weight probability unbreaking 3 1 2.5% unbreaking 2 3 7.5% unbreaking 1 6 15% sharpness 3 1 2.5% sharpness 2 3 7.5% sharpness 1 6 15% efficiency 3 2 5% efficiency 2 6 15% efficiency 1 12 30% **Second enchantment (Assuming the first enchantment is sharpness)** enchantment level weight probability unbreaking 3 1 3.33% unbreaking 2 3 10% unbreaking 1 6 20% ~sharpness~ ~3~ ~1~ ~0%~ ~sharpness~ ~2~ ~3~ ~0%~ ~sharpness~ ~1~ ~6~ ~0%~ efficiency 3 2 6.67% efficiency 2 6 20% efficiency 1 12 40% [Previous✏️ Textchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/text) [NextπŸ¦– Entitychevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/entity) sun-brightdesktopmoon Copy material: paper Copy display: name: '<#00BFFF>Simple lures' Copy display: lore: - '' - '<#7FFFD4>Description:' - 'Made from natural ingredients...' - '...' Copy custom-model-data: 50001 Copy amount: 1 Copy tag: false Copy unbreakable: false Copy item-flags: - HIDE_DYE Copy max-durability: 100 Copy random-durability: false Copy minecraft:custom_name: '(String) {"color":"white","italic":false,"text":"Fish Bone"}' Copy nbt: int_value: 10 double_value: 1.0 byte_array: (ByteArray) [0, 1, 2] expression: (Int) 1 + 2 * 3 + 4 Copy nbt: itemsadder: namespace: '(String) momirealms' id: 'rainbow_fish' Copy nbt: PublicBukkitValues: oraxen:id: alchemist Copy components: minecraft:food: nutrition: 4 saturation: 1.5 can_always_eat: true eat_seconds: 3 effects: - effect: id: minecraft:luck amplifier: 0 duration: 30 probability: 0.5 Copy components: minecraft:tool: rules: - blocks: "#minecraft:mineable/axe" speed: 300.0 correct_for_drops: true Copy components: minecraft:max_damage: 100 Copy price: base: 50 bonus: 2.5 Copy stackable: true Copy placeable: true Copy head64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmQ1Nzk4NzA1Yjc1YjUzY2VmNzExNjE5OGFiNWQzOGNjZGY5YjM2ODYxNzg0MjdmYjcxMDg5NmI1MjMwZDQ2MyJ9fX0= Copy enchantments: <- for gears minecraft:sharpness: 1 stored-enchantments: <- for enchantment books minecraft:sharpness: 1 Copy random-enchantments: lv3_unbreaking: enchant: minecraft:unbreaking level: 3 chance: 0.2 lv2_unbreaking: enchant: minecraft:unbreaking level: 2 chance: 0.5 lv1_unbreaking: enchant: minecraft:unbreaking level: 1 chance: 1 random-stored-enchantments: ... Copy enchantment-pool: # max enchantments on the item amount: 1: 6 2: 3 3: 1 pool: 'minecraft:unbreaking:1': 6 'minecraft:unbreaking:2': 3 'minecraft:unbreaking:3': 1 'minecraft:sharpness:1': 6 'minecraft:sharpness:2': 3 'minecraft:sharpness:3': 1 'minecraft:efficiency:1': 12 'minecraft:efficiency:2': 6 'minecraft:efficiency:3': 2 sun-brightdesktopmoon --- # βœ… Condition | CustomFishing | XiaoMoMi Plugins ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition#introduction) Introduction Plugin provides a powerful condition system. You can use both simple conditions and advanced conditions at the same time. Here are some examples for you to learn conditions. Note: In certain contexts, 'condition' and 'requirement' can be used interchangeably; it just depends on the situation. For instance, we might say the 'condition' for a piece of loot to appear, but when talking about the prerequisites for using a fishing rod, we'd say 'requirement'. > simple biome condition Copy biome: - minecraft:ocean - minecraft:deep_ocean - minecraft:cold_ocean - minecraft:deep_cold_ocean - minecraft:frozen_ocean - minecraft:deep_frozen_ocean - minecraft:lukewarm_ocean - minecraft:deep_lukewarm_ocean - minecraft:warm_ocean > advanced biome condition Copy requirement_biome: type: biome value: - minecraft:ocean - minecraft:deep_ocean - minecraft:cold_ocean - minecraft:deep_cold_ocean - minecraft:frozen_ocean - minecraft:deep_frozen_ocean - minecraft:lukewarm_ocean - minecraft:deep_lukewarm_ocean - minecraft:warm_ocean You must be wondering why there are two ways of writing conditions. This is because some conditions require feedback for unsatisfied situations. For instance, if you want to add a permission node to a fishing rod and notify the player when they can't use it, a simple condition alone cannot meet the requirements of the configuration file. Here's the rod example [πŸ’ͺ Actionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/action) [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition#condition-library) Condition Library ----------------------------------------------------------------------------------------------------------------------------------------------- > time (Minecraft game time 0~23999) > ypos (Player's Y coordinate) > in-lava (If the fishhook is in lava) > in-water (If the fishhook is in water) > in-void (If the fishhook is in void) > ice-fishing (If the fishhook is in a frozen river) > open-water (If the fishhook is in open water) > biome (Supports custom biomes) > world > region (requires WorldGuard) ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2Fmlwo37xSsKbcdWE0Mrzx%2Fimage.png&width=768&dpr=3&quality=100&sign=49c83c90&sv=2) mode 1 ![](https://mo-mi.gitbook.io/xiaomomi-plugins/~gitbook/image?url=https%3A%2F%2Fcontent.gitbook.com%2Fcontent%2F4KsISSEnC2HEdscZY9PQ%2Fblobs%2FQvTBF05f2H5UIDRGpkGG%2Fimage.png&width=768&dpr=3&quality=100&sign=b6d1701&sv=2) mode 2 > weather > date (Real life date) > permission > season (Requires RealisticSeasons/CustomCrops) > β€œ>” β€œ>=” β€œ<” β€œ<=” β€œ==” β€œ!=” (For numbers) > β€œstartsWith” β€œendsWith” β€œequals” β€œcontains” β€œin-list” > rod > hook > bait > loot (This can be used in game conditions) > plugin-level > logic (Create complex conditions) > level (Player exp level) > random (0~1) > cooldown > regex > item-in-hand > money > in-bag (whether item is in fishing bag) > competition (If there's a competition going on) > environment > potion-effect > has-stats (If a loot's statistics is enabled) > has-size (If a loot is item type and has size property) > loot-type > moon-phase > impossible > equipment > liquid-depth > loot-order (The number of the caught loot if player has multiple loot effects) > is-first-loot (If the loot is the first loot if player has multiple loot effects) > if the context has a player argument (This would be helpful if you want to disable some checks if no player present) > is-bedrock-player (Requires Geyser or FloodGate) > new-size-record (Checks if triggers the new size record) > group (Checks if the loot is in certain groups) [PreviousπŸ… Competitionchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/format/competition) [NextπŸ’ͺ Actionchevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/action) Last updated 9 months ago * [Introduction](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition#introduction) * [Condition Library](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/condition#condition-library) sun-brightdesktopmoon Copy star_fishing_rod: material: fishing_rod requirements: requirement_1: type: permission value: star_fishing_rod.use not-met-actions: <- optional section action_1: type: message value: 'You cannot use this rod!' <- feedback Copy time: - 0~1000 - 2000~6000 advanced_requirement: type: time value: - 0~1000 - 2000~6000 Copy ypos: - 0~43 - -45~12 advanced_requirement: type: ypos value: - 0~43 - -45~12 Copy in-lava: true advanced_requirement: type: in-lava value: true Copy in-water: true advanced_requirement: type: in-water value: true Copy in-void: true advanced_requirement: type: in-void value: true Copy ice-fishing: true advanced_requirement: type: ice-fishing value: true Copy open-water: true advanced_requirement: type: open-water value: true Copy biome: - minecraft:plains <- whitelist '!biome': - minecraft:plains <- blacklist advanced_requirement: type: biome value: - minecraft:plains advanced_requirement: type: '!biome' value: - minecraft:plains Copy world: - world '!world': - blacklist_world advanced_requirement: type: world value: - world advanced_requirement: type: '!world' value: - blacklist_world Copy advanced_requirement: type: region value: position: other # other/player (in most cases `other`=hook's position) mode: 1 # 1,2 values: - a - b region: position: other mode: 2 values: - a - b Copy weather: - thunder - clear - rain advanced_requirement: type: 'weather' value: - thunder - clear - rain Copy date: - 12/25 - 6/1 advanced_requirement: type: 'date' value: - 12/25 - 6/1 Copy permission: customfishing.admin '!permission': blacklist.perm advanced_requirement: type: 'permission' value: customfishing.admin advanced_requirement: type: '!permission' value: blacklist.perm Copy season: - summer - spring - autumn - winter advanced_requirement: type: 'season' value: - summer - spring - autumn - winter Copy '==': value1: '20' value2: '%player_health%' advanced_requirement: type: '==' value: value1: '20' value2: '%player_health%' Copy '!startsWith': value1: '%player_name%' value2: 'X' <- player names that are not starting with "X" advanced_requirement: type: 'contains' value: value1: '%player_name%' value2: '_' <- player names that contain "_" advanced_requirement: type: '!equals' value: value1: '%player_name%' value2: 'XiaoMoMi' <- player names that not equal "XiaoMoMi" advanced_requirement: type: 'in-list' value: papi: '%player_name%' values: - 'XiaoMoMi' - 'XIAOMOMI' - 'XlA0M0Ml' Copy rod: - starter_rod '!rod': - FISHING_ROD <- vanilla rod advanced_requirement: type: 'rod' value: - starter_rod Copy hook: - delicate_hook has-hook: false advanced_requirement: type: '!hook' value: - bad_hook advanced_requirement: type: 'has-hook' value: true Copy bait: - starter_bait has-bait: true advanced_requirement: type: '!bait' value: - shark_bait advanced_requirement: type: 'has-bait' value: true Copy loot: - tuna_fish advanced_requirement: type: '!loot' value: - shark Copy plugin-level: plugin: mcMMO level: 10 target: FISHING Copy advanced_requirement: type: '&&' value: in-lava: true requirement_time: type: time value: - 0~12000 '||': world: - world_nether '&&': ypos: - -64~-32 world: - world Copy level: 10 advanced_requirement: type: 'level' value: 10 Copy random: 0.3 <- 30% chance advanced_requirement: type: 'random' value: 0.7 <- 70% chance Copy cooldown: key: unique time: 1000 #ms advanced_requirement: type: 'cooldown' value: key: A time: 100 #ms Copy regex: papi: %xxx% regex: "[A-Z]" advanced_requirement: type: 'regex' value: papi: %xxx% regex: "[A-Z]" Copy item-in-hand: amount: 1 hand: main item: - APPLE - star_rod advanced_requirement: type: 'item-in-hand' value: hand: off amount: 1 item: - APPLE - star_rod Copy money: 100 advanced_requirement: type: 'money' value: 100 Copy in-bag: false advanced_requirement: type: 'in-bag' value: true Copy competition: ongoing: true id: <- optional - example_competition advanced_requirement: type: 'competition' value: ongoing: false Copy environment: - normal - nether - the_end advanced_requirement: type: '!environment' value: - nether - the_end - custom Copy potion-effect: "LUCK>=0" advanced_requirement: type: 'potion-effect' value: "LUCK!=-1" "-1": Player doesn't have such a potion effect "value no lower than 0": The potion effect's amplifier Examples: LUCK==1 LUCK<5 LUCK>=0 Copy has-stats: true advanced_requirement: type: 'has-stats' value: "true Copy has-size: true advanced_requirement: type: 'has-size' value: "true Copy loot-type: - item '!loot-type': - entity - block advanced_requirement: type: 'loot-type' value: item Copy moon-phase: - "full_moon" - "waning_gibbous" - "last_quarter" - "waning_crescent" - "new_moon" - "waxing_crescent" - "first_quarter" - "waxing_gibbous" advanced_requirement: type: 'moon-phase' value: - full_moon Copy impossible: true advanced_requirement: type: 'impossible' Copy advanced_requirement: type: 'equipment' value: # CHEST, LEGS, HEAD, FEET slot: HEAD item: - LEATHER_HELMET # vanilla item - custom_helmet # CustomFishing item - ItemsAdder:namespace:helmet # item from other plugins - Oraxen:helmet Copy liquid-depth: 1~10 advanced_requirement: type: 'liquid-depth' value: 5~30 Copy loot-order: 1 advanced_requirement: type: 'loot-order' value: 2 Copy is-first-loot: true Copy has-player: true advanced_requirement: type: 'has-player' value: false Copy is-bedrock-player: true Copy new-size-record: true Copy group: - golden_star - silver_star group_requirement: type: 'group' value: - golden_star - silver_star sun-brightdesktopmoon --- # Custom Games | CustomFishing | XiaoMoMi Plugins There are two methods to register a custom game type: using an expansion jar or a plugin. Using the **expansion jar** method requires placing the built jar file into the "expansion" folder, similar to how it works with PlaceholderAPI. If you're using the **plugin** method to register a custom game type, after adding the custom game factory, you will need to call the **CustomFishing's reload** function to apply the changes. ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/custom-games#using-a-plugin) Using a plugin Copy BukkitCustomFishingPlugin.getInstance().getGameManager().registerGameType("accurate_click_v2", ((id, section) -> { GameBasics basics = getGameBasics(section); return new AbstractGame(id, basics) { private final String barWidth = section.getString("title.total-width", "15~20"); private final String barSuccess = section.getString("title.success-width","3~4"); private final String barBody = section.getString("title.body",""); private final String left = section.getString("title.left",""); private final String right = section.getString("title.right",""); private final String barPointer = section.getString("title.pointer", ""); private final String barTarget = section.getString("title.target",""); private final String subtitle = section.getString("subtitle", "Reel in at the most critical moment"); @Override public BiFunction gamingPlayerProvider() { int minWidth = Integer.parseInt(barWidth.split("~")[0]); int maxWidth = Integer.parseInt(barWidth.split("~")[1]); int minSuccess = Integer.parseInt(barSuccess.split("~")[0]); int maxSuccess = Integer.parseInt(barSuccess.split("~")[1]); return (customFishingHook, gameSetting) -> new AbstractGamingPlayer(customFishingHook, gameSetting) { private final int totalWidth = RandomUtils.generateRandomInt(minWidth, maxWidth); private final int successWidth = RandomUtils.generateRandomInt(minSuccess, maxSuccess); private final int successPosition = ThreadLocalRandom.current().nextInt((totalWidth - successWidth + 1)) + 1; private int currentIndex = 0; private int timer = 0; private boolean face = true; @Override protected void tick() { timer++; if (timer % ((106 - (int) settings.difficulty()) / 5) == 0) { movePointer(); } showUI(); } private void movePointer() { if (face) { currentIndex++; if (currentIndex >= totalWidth - 1) { face = false; } } else { currentIndex--; if (currentIndex <= 0) { face = true; } } } private void showUI() { StringBuilder stringBuilder = new StringBuilder(); for (int i = 1; i <= totalWidth; i++) { if (i == currentIndex + 1) { stringBuilder.append(barPointer); continue; } if (i >= successPosition && i <= successPosition + successWidth - 1) { stringBuilder.append(barTarget); continue; } stringBuilder.append(barBody); } SparrowHeart.getInstance().sendTitle(getPlayer(), AdventureHelper.miniMessageToJson(left + stringBuilder + right), AdventureHelper.miniMessageToJson(subtitle), 0, 20, 0); } @Override public boolean isSuccessful() { if (isTimeOut) return false; return currentIndex + 1 <= successPosition + successWidth - 1 && currentIndex + 1 >= successPosition; } }; } }; })); ### [hashtag](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/custom-games#using-an-expansion-jar) Using an expansion jar [PreviousCustom Hook Logicschevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/custom-hook-logics) * [Using a plugin](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/custom-games#using-a-plugin) * [Using an expansion jar](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/custom-games#using-an-expansion-jar) sun-brightdesktopmoon Copy package net.momirealms.customfishing.api; import dev.dejvokep.boostedyaml.block.implementation.Section; import net.momirealms.customfishing.api.mechanic.fishing.CustomFishingHook; import net.momirealms.customfishing.api.mechanic.game.*; import net.momirealms.customfishing.api.mechanic.misc.value.MathValue; import net.momirealms.customfishing.common.helper.AdventureHelper; import net.momirealms.customfishing.common.util.RandomUtils; import net.momirealms.sparrow.heart.SparrowHeart; import java.util.concurrent.ThreadLocalRandom; import java.util.function.BiFunction; public class CustomGameFactory extends GameExpansion { @Override public String getVersion() { return "1.0"; } @Override public String getAuthor() { return "XiaoMoMi"; } @Override public String getGameType() { return "accurate_click_v2"; } @Override public GameFactory getGameFactory() { return ((id, section) -> { GameBasics basics = getGameBasics(section); return new AbstractGame(id, basics) { private final String barWidth = section.getString("title.total-width", "15~20"); private final String barSuccess = section.getString("title.success-width","3~4"); private final String barBody = section.getString("title.body",""); private final String left = section.getString("title.left",""); private final String right = section.getString("title.right",""); private final String barPointer = section.getString("title.pointer", ""); private final String barTarget = section.getString("title.target",""); private final String subtitle = section.getString("subtitle", "Reel in at the most critical moment"); @Override public BiFunction gamingPlayerProvider() { int minWidth = Integer.parseInt(barWidth.split("~")[0]); int maxWidth = Integer.parseInt(barWidth.split("~")[1]); int minSuccess = Integer.parseInt(barSuccess.split("~")[0]); int maxSuccess = Integer.parseInt(barSuccess.split("~")[1]); return (customFishingHook, gameSetting) -> new AbstractGamingPlayer(customFishingHook, gameSetting) { private final int totalWidth = RandomUtils.generateRandomInt(minWidth, maxWidth); private final int successWidth = RandomUtils.generateRandomInt(minSuccess, maxSuccess); private final int successPosition = ThreadLocalRandom.current().nextInt((totalWidth - successWidth + 1)) + 1; private int currentIndex = 0; private int timer = 0; private boolean face = true; @Override protected void tick() { timer++; if (timer % ((106 - (int) settings.difficulty()) / 5) == 0) { movePointer(); } showUI(); } private void movePointer() { if (face) { currentIndex++; if (currentIndex >= totalWidth - 1) { face = false; } } else { currentIndex--; if (currentIndex <= 0) { face = true; } } } private void showUI() { StringBuilder stringBuilder = new StringBuilder(); for (int i = 1; i <= totalWidth; i++) { if (i == currentIndex + 1) { stringBuilder.append(barPointer); continue; } if (i >= successPosition && i <= successPosition + successWidth - 1) { stringBuilder.append(barTarget); continue; } stringBuilder.append(barBody); } SparrowHeart.getInstance().sendTitle(getPlayer(), AdventureHelper.miniMessageToJson(left + stringBuilder + right), AdventureHelper.miniMessageToJson(subtitle), 0, 20, 0); } @Override public boolean isSuccessful() { if (isTimeOut) return false; return currentIndex + 1 <= successPosition + successWidth - 1 && currentIndex + 1 >= successPosition; } }; } }; }); } private GameBasics getGameBasics(Section section) { return GameBasics.builder() .difficulty(MathValue.auto(section.get("difficulty", "20~80"), false)) .time(MathValue.auto(section.get("time", 15), false)) .build(); } } sun-brightdesktopmoon --- # Custom Hook Logics | CustomFishing | XiaoMoMi Plugins To override the system that comes with the plugin, just follow the steps below. As long as interface(`HookMechanic`) is implemented and added to the list of available mechanisms, the custom logics can start working (note: the order of addition affects the priority of mechanism judgment) Copy CustomFishingHook.mechanicProviders((h, c, e) -> { ArrayList mechanics = new ArrayList<>(); mechanics.add(new VanillaMechanic(h, c)); mechanics.add(new LavaFishingMechanic(h, e, c)); return mechanics; }); Copy package net.momirealms.customfishing.api.mechanic.fishing.hook; import net.momirealms.customfishing.api.BukkitCustomFishingPlugin; import net.momirealms.customfishing.api.event.FishingHookStateEvent; import net.momirealms.customfishing.api.mechanic.config.ConfigManager; import net.momirealms.customfishing.api.mechanic.context.Context; import net.momirealms.customfishing.api.mechanic.context.ContextKeys; import net.momirealms.customfishing.api.mechanic.effect.Effect; import net.momirealms.customfishing.api.mechanic.effect.EffectProperties; import net.momirealms.customfishing.api.util.EventUtils; import net.momirealms.customfishing.common.plugin.scheduler.SchedulerTask; import net.momirealms.customfishing.common.util.RandomUtils; import net.momirealms.sparrow.heart.SparrowHeart; import net.momirealms.sparrow.heart.feature.fluid.FluidData; import org.bukkit.*; import org.bukkit.block.BlockFace; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.FishHook; import org.bukkit.entity.Player; import org.bukkit.persistence.PersistentDataType; import org.bukkit.util.Vector; import java.util.Objects; import java.util.concurrent.ThreadLocalRandom; public class LavaFishingMechanic implements HookMechanic { private final FishHook hook; private final Effect gearsEffect; private final Context context; private ArmorStand tempEntity; private SchedulerTask task; private int timeUntilLured; private int timeUntilHooked; private int nibble; private boolean hooked; private float fishAngle; private int currentState; private int jumpTimer; private boolean firstTime = true; private boolean freeze = false; public LavaFishingMechanic(FishHook hook, Effect gearsEffect, Context context) { this.hook = hook; this.gearsEffect = gearsEffect; this.context = context; } @Override public boolean canStart() { if (!(boolean) gearsEffect.properties().getOrDefault(EffectProperties.LAVA_FISHING, false)) { return false; } if (hook.isInLava()) { return true; } float lavaHeight = 0F; Location location = this.hook.getLocation(); FluidData fluidData = SparrowHeart.getInstance().getFluidData(location); if (fluidData.getFluidType() == Fluid.LAVA || fluidData.getFluidType() == Fluid.FLOWING_LAVA) { lavaHeight = (float) (fluidData.getLevel() * 0.125); } return lavaHeight > 0 && location.getY() % 1 <= lavaHeight; } @Override public boolean shouldStop() { if (hook.isInLava()) { return false; } return hook.isOnGround() || (hook.getLocation().getBlock().getType() != Material.LAVA && hook.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() != Material.LAVA); } @Override public void preStart() { this.context.arg(ContextKeys.SURROUNDING, EffectProperties.LAVA_FISHING.key()); } @Override public void start(Effect finalEffect) { EventUtils.fireAndForget(new FishingHookStateEvent(context.holder(), hook, FishingHookStateEvent.State.LAND)); this.setWaitTime(finalEffect); this.task = BukkitCustomFishingPlugin.getInstance().getScheduler().sync().runRepeating(() -> { Location location = this.hook.getLocation(); float lavaHeight = 0F; FluidData fluidData = SparrowHeart.getInstance().getFluidData(location); if (fluidData.getFluidType() == Fluid.LAVA || fluidData.getFluidType() == Fluid.FLOWING_LAVA) { lavaHeight = (float) (fluidData.getLevel() * 0.125); } if (this.nibble > 0) { --this.nibble; if (location.getY() % 1 <= lavaHeight) { this.jumpTimer++; if (this.jumpTimer >= 4) { this.jumpTimer = 0; this.hook.setVelocity(new Vector(0,0.24,0)); } } if (this.nibble <= 0) { this.timeUntilLured = 0; this.timeUntilHooked = 0; this.hooked = false; this.jumpTimer = 0; this.currentState = 0; } } else { double hookY = location.getY(); if (hookY < 0) { hookY += Math.abs(Math.floor(hookY)); } if (hookY % 1 <= lavaHeight || this.hook.isInLava()) { Vector previousVector = this.hook.getVelocity(); this.hook.setVelocity(new Vector(previousVector.getX() * 0.6, Math.min(0.1, Math.max(-0.1, previousVector.getY() + 0.07)), previousVector.getZ() * 0.6)); this.currentState = 1; } else { if (currentState == 1) { this.currentState = 0; // set temp entity this.tempEntity = this.hook.getWorld().spawn(location.clone().subtract(0,1,0), ArmorStand.class); this.setTempEntityProperties(this.tempEntity); this.hook.setHookedEntity(this.tempEntity); if (!firstTime) { EventUtils.fireAndForget(new FishingHookStateEvent(context.holder(), hook, FishingHookStateEvent.State.ESCAPE)); } firstTime = false; } } float f; float f1; float f2; double d0; double d1; double d2; if (this.timeUntilHooked > 0) { this.timeUntilHooked -= 1; if (this.timeUntilHooked > 0) { this.fishAngle += (float) RandomUtils.triangle(0.0D, 9.188D); f = this.fishAngle * 0.017453292F; f1 = (float) Math.sin(f); f2 = (float) Math.cos(f); d0 = location.getX() + (double) (f1 * (float) this.timeUntilHooked * 0.1F); d1 = location.getY(); d2 = location.getZ() + (double) (f2 * (float) this.timeUntilHooked * 0.1F); if (RandomUtils.generateRandomFloat(0,1) < 0.15F) { hook.getWorld().spawnParticle(Particle.FLAME, d0, d1 - 0.10000000149011612D, d2, 1, f1, 0.1D, f2, 0.0D); } float f3 = f1 * 0.04F; float f4 = f2 * 0.04F; hook.getWorld().spawnParticle(Particle.FLAME, d0, d1, d2, 0, f4, 0.01D, -f3, 1.0D); } else { double d3 = location.getY() + 0.5D; hook.getWorld().spawnParticle(Particle.FLAME, location.getX(), d3, location.getZ(), (int) (1.0F + 0.3 * 20.0F), 0.3, 0.0D, 0.3, 0.20000000298023224D); this.nibble = RandomUtils.generateRandomInt(20, 40); this.hooked = true; hook.getWorld().playSound(location, Sound.ENTITY_GENERIC_EXTINGUISH_FIRE, 0.25F, 1.0F + (RandomUtils.generateRandomFloat(0,1)-RandomUtils.generateRandomFloat(0,1)) * 0.4F); EventUtils.fireAndForget(new FishingHookStateEvent(context.holder(), hook, FishingHookStateEvent.State.BITE)); if (this.tempEntity != null && this.tempEntity.isValid()) { this.tempEntity.remove(); } } } else if (timeUntilLured > 0) { if (!freeze) { timeUntilLured--; } if (this.timeUntilLured <= 0) { this.fishAngle = RandomUtils.generateRandomFloat(0F, 360F); this.timeUntilHooked = RandomUtils.generateRandomInt(20, 80); EventUtils.fireAndForget(new FishingHookStateEvent(context.holder(), hook, FishingHookStateEvent.State.LURE)); } } else { setWaitTime(finalEffect); } } }, 1, 1, hook.getLocation()); } @Override public boolean isHooked() { return hooked; } @Override public void destroy() { if (this.tempEntity != null && this.tempEntity.isValid()) { this.tempEntity.remove(); } if (this.task != null) { this.task.cancel(); } freeze = false; } @Override public void freeze() { freeze = true; } @Override public void unfreeze(Effect effect) { freeze = false; } private void setWaitTime(Effect effect) { int before = ThreadLocalRandom.current().nextInt(ConfigManager.lavaMaxTime() - ConfigManager.lavaMinTime() + 1) + ConfigManager.lavaMinTime(); int after = Math.max(ConfigManager.lavaMinTime(), (int) (before * effect.waitTimeMultiplier() + effect.waitTimeAdder())); BukkitCustomFishingPlugin.getInstance().debug("Wait time: " + before + " -> " + after + " ticks"); this.timeUntilLured = after; } private void setTempEntityProperties(ArmorStand entity) { entity.setInvisible(true); entity.setCollidable(false); entity.setInvulnerable(true); entity.setVisible(false); entity.setCustomNameVisible(false); entity.setSmall(true); entity.setGravity(false); entity.getPersistentDataContainer().set( Objects.requireNonNull(NamespacedKey.fromString("temp-entity", BukkitCustomFishingPlugin.getInstance().getBootstrap())), PersistentDataType.STRING, "lava" ); } } [PreviousIntegration Providerchevron-left](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/integration-provider) [NextCustom Gameschevron-right](https://mo-mi.gitbook.io/xiaomomi-plugins/customfishing/plugin-wiki/customfishing/api/custom-games) sun-brightdesktopmoon sun-brightdesktopmoon ---