diff --git a/.dockerignore b/.dockerignore index f226193..ff02b4c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -18,7 +18,7 @@ src/plugins/spark/tmp -src/plugins/luckperms/libs +src/plugins/LuckPerms/libs .crowdin src/plugins/PlasmoVoice/voice_mutes.json @@ -32,3 +32,8 @@ src/plugins/CarbonChat/libraries src/plugins/FancyHolograms/holograms.yml src/plugins/FancyHolograms/logs + +src/plugins/FancyNpcs/npcs.yml +src/plugins/FancyNpcs/logs +src/plugins/FancyNpcs/skins +src/plugins/FancyNpcs/.data diff --git a/.gitignore b/.gitignore index fe63255..ff02b4c 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,8 @@ src/plugins/CarbonChat/libraries src/plugins/FancyHolograms/holograms.yml src/plugins/FancyHolograms/logs + +src/plugins/FancyNpcs/npcs.yml +src/plugins/FancyNpcs/logs +src/plugins/FancyNpcs/skins +src/plugins/FancyNpcs/.data diff --git a/Dockerfile b/Dockerfile index aace433..3c0054a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,6 +9,7 @@ ADD ./src ${CONFIG_PATH} RUN mkdir ${DATA_PATH} +# Add symlinks to Default Minecraft files RUN touch ${DATA_PATH}/banned-ips.json && \ ln -sf ${DATA_PATH}/banned-ips.json ${CONFIG_PATH} RUN touch ${DATA_PATH}/banned-players.json && \ @@ -27,6 +28,8 @@ RUN mkdir ${DATA_PATH}/world_nether && \ ln -sf ${DATA_PATH}/world_nether ${CONFIG_PATH} RUN mkdir ${DATA_PATH}/world_the_end && \ ln -sf ${DATA_PATH}/world_the_end ${CONFIG_PATH} + +# Add symlinks to Plasmo Voice files RUN touch ${DATA_PATH}/pv-voice_mutes.json && \ ln -sf ${DATA_PATH}/pv-voice_mutes.json \ ${CONFIG_PATH}/plugins/PlasmoVoice/voice_mutes.json @@ -53,6 +56,21 @@ RUN mkdir -p ${DATA_PATH}/FancyHolograms/logs && \ ${CONFIG_PATH}/plugins/FancyHolograms/holograms.yml +# Add symlinks to FancyNpcs files +RUN mkdir -p ${DATA_PATH}/FancyNpcs/.data && \ + ln -sf ${DATA_PATH}/FancyNpcs/.data/ \ + ${CONFIG_PATH}/plugins/FancyNpcs/.data && \ + mkdir -p ${DATA_PATH}/FancyNpcs/logs && \ + ln -sf ${DATA_PATH}/FancyNpcs/logs/ \ + ${CONFIG_PATH}/plugins/FancyNpcs/logs && \ + mkdir -p ${DATA_PATH}/FancyNpcs/skins && \ + ln -sf ${DATA_PATH}/FancyNpcs/skins/ \ + ${CONFIG_PATH}/plugins/FancyNpcs/skins && \ + touch ${DATA_PATH}/FancyNpcs/npcs.yml && \ + ln -sf ${DATA_PATH}/FancyNpcs/npcs.yml \ + ${CONFIG_PATH}/plugins/FancyNpcs/npcs.yml + + VOLUME ${DATA_PATH} diff --git a/src/plugins/FancyNpcs-2.6.0.jar b/src/plugins/FancyNpcs-2.6.0.jar new file mode 100644 index 0000000..01f74d1 --- /dev/null +++ b/src/plugins/FancyNpcs-2.6.0.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd58d2ff1906c33cbb9b2fe56e31caf527e2c72c4f168eb60615c427fd8bfc01 +size 6444298 diff --git a/src/plugins/FancyNpcs/config.yml b/src/plugins/FancyNpcs/config.yml new file mode 100644 index 0000000..fbd1d3b --- /dev/null +++ b/src/plugins/FancyNpcs/config.yml @@ -0,0 +1,20 @@ +language: default # Language to use for translatable messages. +skip_invisible_npcs: true # Whether invisible NPCs should not be sent to the player. +disable_interaction_cooldown_message: false # Whether interaction cooldown messages are disabled. +mute_version_notification: false # Whether version notifications are muted. +enable_autosave: false # Whether autosave is enabled. +autosave_interval: 15 # The interval at which autosave is performed in minutes. +npc_update_interval: 60 +npc_update_visibility_interval: 20 # The interval at which the NPC visibility is updated (in ticks). +register_commands: true # Whether the plugin should register its commands. +turn_to_player_distance: 5 # The distance at which NPCs turn to the player. +turn_to_player_reset_to_initial_direction: true # Whether direction of NPC should be reset when leaving their turning range. +visibility_distance: 20 # The distance at which NPCs are visible. +mineskin_api_key: '' # The API key for the MineSkin API. This will be used to load skins faster. You can get an API key at https://mineskin.org/account. +remove_npcs_from_playerlist_delay: 2000 # The delay in milliseconds to remove NPCs from the player list. Increase this value if you have problems with skins not loading correctly when joining or switching worlds. You can set it to -1, if you don't have any npcs using the show_in_tab feature. +blocked_commands: # The commands that are blocked for NPCs in the message. + - op + - ban +max-npcs: # The maximum number of NPCs per permission. (for the 'player-npcs' feature flag only) + - fancynpcs.max-npcs.5: 5 + - fancynpcs.max-npcs.10: 10 diff --git a/src/plugins/FancyNpcs/featureFlags.yml b/src/plugins/FancyNpcs/featureFlags.yml new file mode 100644 index 0000000..46fc5e8 --- /dev/null +++ b/src/plugins/FancyNpcs/featureFlags.yml @@ -0,0 +1,4 @@ +feature-flags: + player-npcs: false # Every player can only manage the npcs they have created + use-native-threads: false # Use native threads instead of virtual threads. + enable-debug-mode: false # Enable debug mode diff --git a/src/plugins/FancyNpcs/languages/default.yml b/src/plugins/FancyNpcs/languages/default.yml new file mode 100644 index 0000000..ac38fbd --- /dev/null +++ b/src/plugins/FancyNpcs/languages/default.yml @@ -0,0 +1,358 @@ +# ======================================================================== +# THIS FILE IS A TEMPLATE, ANY MODIFICATIONS MADE HERE MAY NOT BE APPLIED. +# ======================================================================== +# HOW TO CREATE CUSTOM LANGUAGE: +# 1. Copy this file and name it eg. "en.yml" +# 2. Change "language_name" property to eg. "english" and update "language" property inside config.yml to match this value. +# 3. Modify contents to your liking. +# 4. Reload the plugin using "/fancynpcs reload" command. +# ======================================================================== + +# Language name. This value can be used to specify "language" property in the config.yml file. +language_name: default + +# Messages support MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html +messages: + # Common (States) + true: "{successColor}True" + enabled: "{successColor}Enabled" + false: "{errorColor}False" + disabled: "{errorColor}Disabled" + + # Common (Equipment Slots) + main_hand: "Main Hand" + off_hand: "Off Hand" + head: "Head" + chest: "Chest" + legs: "Legs" + feet: "Feet" + + # Common (Availability) + unknown: "Unknown" + not_available: "N/A" + + # Common (Visibility) + always_visible: "Always Visible" + not_visible: "Not Visible" + + # Common (Default Values) + default: "Default ({value})" + + # Common (Colors) + color_black: "Black" + color_dark_blue: "Dark Blue" + color_dark_green: "Dark Green" + color_dark_aqua: "Dark Aqua" + color_dark_red: "Dark Red" + color_dark_purple: "Dark Purple" + color_gold: "Gold" + color_gray: "Gray" + color_dark_gray: "Dark Gray" + color_blue: "Blue" + color_green: "Green" + color_aqua: "Aqua" + color_red: "Red" + color_light_purple: "Light Purple" + color_yellow: "Yellow" + color_white: "White" + + # Common (Other) + interaction_on_cooldown: "› {errorColor}You're currently on cooldown. {warningColor}{time}{errorColor} remaining." + action_missing_permissions: "› {errorColor}Insufficient permissions. You cannot perform this action." + player_npcs_cannot_modify_npc: "› {errorColor}You can only modify NPCs you own." + player_npcs_cannot_move_npc: "› {errorColor}You are only allowed to teleport NPCs to your plot." + player_npcs_create_failure_limit_reached: "› {errorColor}You have reached maximum number of NPCs." + player_npcs_create_failure_not_owned_plot: "› {errorColor}You can only create NPCs on your plot." + + # Commands (Common Replies) + command_missing_permissions: "› {errorColor}Insufficient permissions. You cannot use this command." + command_wrong_usage: "› {errorColor}This sub-command does not exist. Use {warningColor}/npc help{errorColor} to view available commands." + command_incomplete_usage: "› {errorColor}Incomplete command. Use {warningColor}/npc help{errorColor} to view correct syntax." + command_player_only: "› {errorColor}This command can only be executed by in-game players." + command_invalid_boolean: "› {errorColor}Argument {warningColor}{input}{errorColor} must be either {warningColor}true{errorColor} or {warningColor}false{errorColor}." + command_invalid_number: "› {errorColor}Argument {warningColor}{input}{errorColor} is not a valid number." + command_invalid_location: "› {errorColor}Argument {warningColor}{input}{errorColor} is not a valid location." + command_invalid_world: "› {errorColor}World named {warningColor}{input}{errorColor} does not exist or is not loaded." + command_invalid_glowing_color: "› {errorColor}Argument named {warningColor}{input}{errorColor} is not a valid glowing color." + command_invalid_list_sort_type: "› {errorColor}Argument named {warningColor}{input}{errorColor} is not a valid sort type." + command_invalid_nearby_sort_type: "› {errorColor}Argument named {warningColor}{input}{errorColor} is not a valid sort type." + command_invalid_entity_type: "› {errorColor}Argument named {warningColor}{input}{errorColor} is not a valid entity type." + command_invalid_action_trigger: "› {errorColor}Argument named {warningColor}{input}{errorColor} is not a valid action trigger." + command_invalid_action_type: "› {errorColor}Argument named {warningColor}{input}{errorColor} is not a valid action type." + command_invalid_npc: "› {errorColor}NPC {warningColor}{input}{errorColor} does not exist." + command_invalid_material: "› {errorColor}Argument {warningColor}{input}{errorColor} is not a valid material." + command_invalid_attribute: "› {errorColor}Specified value {warningColor}{input}{errorColor} is not a valid attribute." + command_invalid_attribute_value: "› {errorColor}Specified value {warningColor}{input}{errorColor} is not valid for this attribute." + command_invalid_equipment_slot: "› {errorColor}Argument {warningColor}{input}{errorColor} is not a valid slot." + command_invalid_interval: "› {errorColor}Argument {warningColor}{input}{errorColor} is not a valid duration of time." + command_invalid_enum_generic: "› {errorColor}Argument {warningColor}{input}{errorColor} is not a valid {enum}." + command_unsupported_npc_type: "› {errorColor}This NPC type does not support this feature." + command_input_contains_blocked_command: "› {errorColor}This command is not allowed for use in interactions." + command_npc_modification_cancelled: "› {errorColor}NPC modification has been cancelled by the API." + + # Generic Syntax Message (syntax is provided by Cloud and may not be human-friendly) + command_invalid_syntax_generic: "Syntax: {warningColor}/{syntax}" + + # Command Syntaxes + command_syntax: + fancynpcs: "Syntax: {primaryColor}/fancynpcs {secondaryColor}(version | reload | save | feature_flags)" + npc: "› {errorColor}Unknown command. Use {warningColor}/npc help{errorColor} to view available commands." + npc_action: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}(add | add_after | add_before | clear | list | move_down | move_up | remove | set)" + npc_action_add: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}add {secondaryColor}(type) [value]" + npc_action_add_after: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}add_after {secondaryColor}(index) (type) [value]" + npc_action_add_before: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}add_before {secondaryColor}(index) (type) [value]" + npc_action_remove: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}remove {secondaryColor}(number)" + npc_action_move_down: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}move_down {secondaryColor}(index)" + npc_action_move_up: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}move_down {secondaryColor}(index)" + npc_action_set: "Syntax: {primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}set {secondaryColor}(index) (type) [value]" + npc_attribute: "Syntax: {primaryColor}/npc attribute {secondaryColor}(npc) {primaryColor}(set | list)" + npc_attribute_set: "Syntax: {primaryColor}/npc attribute {secondaryColor}(npc) {primaryColor}set {secondaryColor}(attribute) (value)" + npc_center: "Syntax: {primaryColor}/npc center {secondaryColor}(npc)" + npc_collidable: "Syntax: {primaryColor}/npc collidable {secondaryColor}(npc) (state)" + npc_copy: "Syntax: {primaryColor}/npc copy {secondaryColor}(npc) (new_name)" + npc_create: "Syntax: {primaryColor}/npc create {secondaryColor}(npc) [--type] [--position] [--world]" + npc_displayname: "Syntax: {primaryColor}/npc displayname {secondaryColor}(npc) (name)" + npc_equipment: "Syntax: {primaryColor}/npc equipment {secondaryColor}(npc) {primaryColor}(set | clear | list)" + npc_equipment_set: "Syntax: {primaryColor}/npc equipment {secondaryColor}(npc) {primaryColor}set {secondaryColor}(slot) (@hand | @none | item)" + npc_glowing: "Syntax: {primaryColor}/npc glowing {secondaryColor}(npc) (disabled | color)" + npc_info: "Syntax: {primaryColor}/npc info {secondaryColor}(npc)" + npc_interaction_cooldown: "Syntax: {primaryColor}/npc interaction_cooldown {secondaryColor}(npc) (disabled | time)" + npc_scale: "Syntax: {primaryColor}/npc scale {secondaryColor}(npc) (factor)" + npc_list: "Syntax: {primaryColor}/npc list {secondaryColor}[filters...]" + npc_move_here: "Syntax: {primaryColor}/npc move_here {secondaryColor}(npc)" + npc_move_to: "Syntax: {primaryColor}/npc move_to {secondaryColor}(npc) (x) (y) (z) [world]" + npc_nearby: "Syntax: {primaryColor}/npc nearby {secondaryColor}[filters...]" + npc_remove: "Syntax: {primaryColor}/npc remove {secondaryColor}(npc)" + npc_show_in_tab: "Syntax: {primaryColor}/npc show_in_tab {secondaryColor}(npc) (state)" + npc_skin: "Syntax: {primaryColor}/npc skin {secondaryColor}(npc) (@none | @mirror | name | uuid | placeholder | url | file name) [--slim]" + npc_teleport: "Syntax: {primaryColor}/npc teleport {secondaryColor}(npc)" + npc_turn_to_player: "Syntax: {primaryColor}/npc turn_to_player {secondaryColor}(npc) (state)" + npc_turn_to_player_distance: "Syntax: {primaryColor}/npc turn_to_player_distance {secondaryColor}(npc) (state)" + npc_type: "Syntax: {primaryColor}/npc type {secondaryColor}(npc) (type)" + npc_visibility_distance: "Syntax: {primaryColor}/npc visibility_distance {secondaryColor}(npc) (always_visible | default | not_visible | distance)" + + # Commands (fancynpcs) + fancynpcs_reload_success: "› {successColor}Plugin has been reloaded." + fancynpcs_save_success: "› {successColor}NPCs have been saved." + fancynpcs_feature_flags_header: "------------------- Feature Flags ------------------" + fancynpcs_feature_flags_entry: " <#848484>{number}. {warningColor}{name} <#848484>({id}): {state}" + fancynpcs_feature_flags_footer: "------------- Showing total of {warningColor}{total_formatted} entries -------------" + fancynpcs_test_success: "› {successColor}All {count} tests have passed successfully (ran by {player} at {time})." + fancynpcs_test_failure: "› {errorColor}Some tests have failed (ran by {player} at {time})." + fancynpcs_skin_system_restart_schedulers_success: "› {successColor}Skin schedulers have been restarted." + fancynpcs_skin_system_scheduler_status: "› {successColor}Status ({scheduler}): {status}" + fancynpcs_skin_system_clear_queues_success: "› {successColor}Skin generation queues have been cleared." + fancynpcs_skin_system_clear_cache_success: "› {successColor}Skin cache has been cleared." + fancynpcs_skin_system_clear_uuid_cache_success: "› {successColor}UUID cache has been cleared." + + # Commands (npc help) + npc_help_page_header: "------------- {primaryColor}FancyNpcs Commands ({primaryColor}{page}/{primaryColor}{max_page}) --------------" + npc_help_page_footer: "----------- Click {primaryColor}here to open documentation -----------" + npc_help_contents: + - "Adds new action to the list.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}add {secondaryColor}(index) [value]" + - "Adds new action to the list after specified position.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}add_after {secondaryColor}(index) [value]" + - "Adds new action to the list before specified position.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}add_before {secondaryColor}(index) [value]" + - "Clears all actions of the specified trigger.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}clear" + - "Lists all actions of the specified trigger.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}list" + - "Moves action at specified index down in the list.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}move_down {secondaryColor}(index)" + - "Moves action at specified index up in the list.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}move_up {secondaryColor}(index)" + - "Removes action from the list.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}remove {secondaryColor}(index)" + - "Adds new action to the list at specified position.'>{primaryColor}/npc action {secondaryColor}(npc) (trigger) {primaryColor}set {secondaryColor}(index) [value]" + - "Sets an attribute of the NPC.'>{primaryColor}/npc attribute {secondaryColor}(npc) {primaryColor}set {secondaryColor}(attribute) (value)" + - "Lists all modified attributes of the NPC.'>{primaryColor}/npc attribute {secondaryColor}(npc) {primaryColor}list" + - "Changes whether the NPC can collide with other entities.'>{primaryColor}/npc collidable {secondaryColor}(npc) [state]" + - "Copies (duplicates) specified NPC.'>{primaryColor}/npc copy {secondaryColor}(npc) (new_name)" + - "Centers the NPC on its current block location.'>{primaryColor}/npc center {secondaryColor}(npc)" + - "Creates a new NPC. Can be customized with flags.'>{primaryColor}/npc create {secondaryColor}(npc) [--type] [--location] [--world]" + - "Changes displayname of the NPC. Supports MiniMessage, PlaceholderAPI and MiniPlaceholders.'>{primaryColor}/npc displayname {secondaryColor}(npc) (name)" + - "Sets equipment slot of the NPC to item currently held in main hand, none or a specific item type.'>{primaryColor}/npc equipment {secondaryColor}(npc) {primaryColor}set {secondaryColor}(slot) (@hand | @none | item)" + - "Clears all equipment slots of the NPC.'>{primaryColor}/npc equipment {secondaryColor}(npc) {primaryColor}clear" + - "Lists all equipment of the NPC.'>{primaryColor}/npc equipment {secondaryColor}(npc) {primaryColor}list" + - "Changes glowing state and color of the NPC.'>{primaryColor}/npc glowing {secondaryColor}(npc) (disabled | color)" + - "Shows information about specified NPC.'>{primaryColor}/npc info {secondaryColor}(npc)" + - "Changes duration between interactions (cooldown) of the NPC.'>{primaryColor}/npc interaction_cooldown {secondaryColor}(npc) (disabled | time)" + - "Lists all NPCs in all worlds. Can be filtered and sorted.'>{primaryColor}/npc list {secondaryColor}[--type] [--sort]" + - "Teleports specified NPC to your location.'>{primaryColor}/npc move_here {secondaryColor}(npc)" + - "Teleports NPC to specified location.'>{primaryColor}/npc move_to {secondaryColor}(npc) (x) (y) (z) [world]" + - "Lists all NPCs in your world. Can be filtered and sorted.'>{primaryColor}/npc nearby {secondaryColor}[--radius] [--type] [--sort]" + - "Removes (deletes) specified NPC.'>{primaryColor}/npc remove {secondaryColor}(npc)" + - "Changes the scale of the size of the NPC.'>{primaryColor}/npc scale {secondaryColor}(npc) (factor)" + - "Changes whether the NPC is shown in the player-list. This works only on NPCs of PLAYER type.{errorColor}Re-connecting to the server might be required for changes to take effect.'>{primaryColor}/npc show_in_tab {secondaryColor}(npc) (state)" + - "Changes skin of the NPC.Supports PlaceholderAPI and MiniPlaceholders.{warningColor}@none - removes the skin{warningColor}@mirror - mirrors player skin{warningColor}(name) - name of any player{warningColor}(url) - url of the skin texture'>{primaryColor}/npc skin {secondaryColor}(npc) (@none | @mirror | name | url) [--slim]" + - "Teleports you to the specified NPC.'>{primaryColor}/npc teleport {secondaryColor}(npc)" + - "Changes whether the NPC should turn to the player when in range.'>{primaryColor}/npc turn_to_player {secondaryColor}(npc) (state)" + - "Changes the distance at which the NPC should turn to the player.'>{primaryColor}/npc turn_to_player_distance {secondaryColor}(npc) (distance)" + - "Changes the type of the NPC.'>{primaryColor}/npc type {secondaryColor}(npc) (type)" + - "Changes the visibility distance of the NPC.'>{primaryColor}/npc visibility_distance {secondaryColor}(npc) (default | distance | ...)" + + # Commands (npc action) + npc_action_add_success: "Action has been added. There are {warningColor}{total} actions in total." + npc_action_add_before_success: "Action has been added before action {warningColor}{number}. There are {warningColor}{total} actions in total." + npc_action_add_after_success: "Action has been added after action {warningColor}{number}. There are {warningColor}{total} actions in total." + npc_action_set_success: "Action trigger {warningColor}{number} has been updated. There are {warningColor}{total} actions in total." + npc_action_set_failure: "› {errorColor}Action trigger {warningColor}{number}{errorColor} does not exist." + npc_action_move_up_success: "Action trigger {warningColor}{number} has been moved up." + npc_action_move_up_failure: "› {errorColor}Action trigger {warningColor}{number}{errorColor} is already at the top." + npc_action_move_down_success: "Action trigger {warningColor}{number} has been moved down." + npc_action_move_down_failure: "› {errorColor}Action trigger {warningColor}{number}{errorColor} is already at the bottom." + npc_action_requires_value: "› {errorColor}You must specify a value for this action." + npc_action_remove_success: "Action trigger {warningColor}{number} has been removed. There are {warningColor}{total} actions in total." + npc_action_remove_failure: "› {errorColor}Action trigger {warningColor}{number}{errorColor} does not exist." + npc_action_clear_success: "Actions have been cleared." + npc_action_list_header: "--------------------- Actions ---------------------" + npc_action_list_entry: " <#848484>{number}. {warningColor}{action}: {value}" + npc_action_list_footer: "------------- Showing total of {warningColor}{total} entries -------------" + npc_action_list_failure_empty: "› {errorColor}There are no actions in the list. Use {warningColor}/npc action (npc) (trigger) add (action){errorColor} to add your first action." + + # Commands (npc attribute) + npc_attribute_set: "Attribute {warningColor}{attribute} has been set to {warningColor}{value}." + npc_attribute_set_invalid_for_this_entity_type: "› {errorColor}Attribute {warningColor}{input}{errorColor} is not valid attribute for this entity type." + npc_attribute_list_header: "-------------------- Attributes --------------------" + npc_attribute_list_entry: " › <#848484>{attribute}: {warningColor}{value}" + npc_attribute_list_footer: "---------------------------------------------------" + npc_attribute_list_failure_empty: "› {errorColor}There are no attributes set. Use {warningColor}/npc attribute (npc) set (attribute) (value){errorColor} to set an attribute." + + # Commands (npc collidable) + npc_collidable_set_true: "NPC {warningColor}{npc} is now collidable." + npc_collidable_set_false: "NPC {warningColor}{npc} is no longer collidable." + + # Commands (npc copy) + npc_copy_success: "NPC {warningColor}{npc} has been copied to {warningColor}{new_npc}." + + # Commands (npc create) + npc_create_success: "NPC {warningColor}{npc} has been created." + npc_create_failure_invalid_name: "› {errorColor}Name contains illegal characters. Only [{warningColor}A-Z{errorColor}, {warningColor}a-z{errorColor}, {warningColor}0-9{errorColor}, {warningColor}_{errorColor}, {warningColor}-{errorColor}, {warningColor}/{errorColor}] characters are allowed." + npc_create_failure_already_exists: "› {errorColor}NPC {warningColor}{npc}{errorColor} already exists." + npc_create_failure_must_specify_world: "› {errorColor}You must specify {warningColor}--world{errorColor} flag when running this command from the console." + + # Commands (npc displayname) + npc_displayname_set_name: "NPC {warningColor}{npc} is now using {name} as their display name." + npc_displayname_set_empty: "NPC {warningColor}{npc} is no longer showing display name." + + # Commands (npc equipment) + npc_equipment_set_item: "Equipment slot {warningColor}{slot} has been set to ." + npc_equipment_set_empty: "Equipment slot {warningColor}{slot} has been removed." + npc_equipment_set_failure_invalid_slot: "› {errorColor}Argument {warningColor}{input}{errorColor} is not a valid equipment slot." + npc_equipment_clear_success: "Equipment has been cleared." + npc_equipment_list_header: "-------------------- Equipment --------------------" + npc_equipment_list_entry: " <#848484>{slot}: " + npc_equipment_list_footer: "---------------------------------------------------" + npc_equipment_list_failure_empty: "› {errorColor}There are no equipment slots set. Use {warningColor}/npc equipment (npc) set (slot) (@hand | @none | material){errorColor} to set an equipment slot." + + # Commands (npc fix) + npc_fix_success: "Attempted to fix NPC {warningColor}{npc}... Still having issues? Please let us know." + + # Commands (npc glowing) + npc_glowing_set_true: "NPC {warningColor}{npc} is now glowing." + npc_glowing_set_false: "NPC {warningColor}{npc} is no longer glowing." + npc_glowing_set_color_success: "NPC {warningColor}{npc} is now glowing in {color}." + npc_glowing_set_color_failure_invalid_color: "› {errorColor}Specified value {warningColor}{input}{errorColor} is not a valid color." + + # Commands (npc info) + npc_info_general: + - "" + - "Unique, permanent identifier of the NPC.'><#848484>Identifier: Click to copy UUID to clipboard.'>{warningColor}{id}" + - "Identifier of player who created this NPC.'>Creator: Click to copy creator UUID to clipboard.'>{warningColor}{creator_uuid_short} ({creator_name})" + - "Name of the NPC, used in commands and displayed above their head if display name is not set.'><#848484>Name: {warningColor}{name}" + - "Display name of the NPC, displayed above their head.'>Display Name: {displayname}" + - "Entity type of the NPC.'><#848484>Type: {warningColor}{type}" + - "Current location of the NPC.'>Location: Click to copy location to clipboard.'>{warningColor}{location_x}, {warningColor}{location_y}, {warningColor}{location_z} in {warningColor}{world}" + - "Glowing state of the NPC. Can be a {warningColor}color or {errorColor}disabled.'><#848484>Glow: {glow}" + - "Whether the NPC should turn to player. Can be {successColor}true or {errorColor}false.'>Turns to Player: {is_turn_to_player}" + - "Whether the NPC should be shown in player-list. Can be {successColor}true or {errorColor}false.'><#848484>Shown in TAB: {is_show_in_tab}" + - "Collidable state of the NPC. Can be {successColor}true or {errorColor}false.'>Collidable: {is_collidable}" + - "Skin mirroring state of the NPC. Can be {successColor}true or {errorColor}false.'><#848484>Skin Mirroring: {warningColor}{is_skin_mirror}" + - "Cooldown between interactions.'>Interaction Cooldown: {warningColor}{interaction_cooldown}" + - "Scale factor for the NPC size.'><#848484>Scale: {warningColor}x{scale}" + - "Visibility distance of the NPC.'>Visibility Distance: {warningColor}{visibility_distance}" + - "" + - "Equipment of the NPC.Click the {warningColor}[Click Here] button to browse.'>Equipment: {warningColor}[Click Here]" + - "Modified attributes of the NPC.Click the {warningColor}[Click Here] button to browse.'><#848484>Attributes: {warningColor}[Click Here]" + - "" + - "Use commands from {warningColor}/npc action (npc) (trigger) group to manage actions.'>There are {warningColor}{actions_total} actions associated with this NPC." + - "" + - "› {primaryColor}Can't find what you're looking for?" + - "Open the chat window to see all information." + - "" + + # Commands (npc interaction_cooldown) + npc_interaction_cooldown_set: "Interaction cooldown has been set to {warningColor}{time}." + npc_interaction_cooldown_disabled: "Interaction cooldown has been disabled." + + # Commands (npc list) + npc_list_header: "------------------ List Query Result ------------------" + npc_list_entry: " <#848484>{number}. Click to see more details.'>{warningColor}{npc} Click to teleport.'><#848484>({location_x}, {location_y}, {location_z} in {world})" + npc_list_footer: "---------- Showing {warningColor}{count_formatted} out of total {warningColor}{total_formatted} entries ----------" + npc_list_failure_sort_requires_player: "› {errorColor}This sort type cannot be used from the console." + npc_list_failure_requires_world_flag: "› {errorColor}You must specify {warningColor}--world{errorColor} flag when running this command from the console." + + # Commands (npc move_here) + npc_move_here_success: "NPC {warningColor}{npc} has been moved to your location." + + # Commands (npc move_to) + npc_move_to_success: "NPC {warningColor}{npc} has been moved to {warningColor}{x}, {warningColor}{y}, {warningColor}{z} in {warningColor}{world}." + npc_move_to_failure_must_specify_world: "› {errorColor}You must specify world when running this command from the console." + + # Commands (npc nearby) + npc_nearby_header: "---------------- Nearby Query Result -----------------" + npc_nearby_entry: " <#848484>{number}. Click to see more details.'>{warningColor}{npc} Click to teleport.'><#848484>({distance} blocks away)" + npc_nearby_footer: "---------- Showing {warningColor}{count_formatted} out of total {warningColor}{total_formatted} entries ----------" + + # Commands (npc remove) + npc_remove_success: "NPC {warningColor}{npc} has been removed." + + # Commands (scale) + npc_scale_set_success: "NPC {warningColor}{npc} has been scaled to {warningColor}{scale}." + + # Commands (npc visibility_distance) + npc_visibility_distance_set_value: "NPC {warningColor}{npc} is now visible from {warningColor}{distance} blocks." + npc_visibility_distance_set_default: "NPC {warningColor}{npc} is now using default visibility distance of {warningColor}{distance}." + npc_visibility_distance_set_not_visible: "NPC {warningColor}{npc} is no longer visible." + npc_visibility_distance_set_always_visible: "NPC {warningColor}{npc} is now always visible." + + # Commands (npc show_in_tab) + npc_show_in_tab_set_true: "NPC {warningColor}{npc} is now shown in player-list." + npc_show_in_tab_set_false: "NPC {warningColor}{npc} is no longer shown in player-list." + + # Commands (npc skin) + npc_skin_set: "NPC {warningColor}{npc} is now using the {warningColor}{name} skin." + npc_skin_set_mirror: "NPC {warningColor}{npc} is now mirroring player skin." + npc_skin_set_none: "NPC {warningColor}{npc} is no longer using any skin." + npc_skin_set_later: "Check console for potential errors and verify everything is correct. Try again in a brief moment...'>Skin should be applied in a few seconds... <#848484>ℹ" + npc_skin_failure_invalid_url: + - "Click here to find out more about this message.'>› {errorColor}Could not load skin from the specified URL." + - "Ensure that the URL points directly to a texture file. <#848484>ℹ" + npc_skin_failure_invalid_file: + - "› {errorColor}Could not load skin from the specified file." + - "Ensure that the file at specified path exists." + npc_skin_failure_invalid_username: + - "› {errorColor}Could not load skin from the specified username." + - "Ensure that the username is a valid Minecraft account." + npc_skin_failure_invalid_placeholder: + - "Click here to find out more about this message.'>› {errorColor}Could not load skin from the specified placeholder." + - "Ensure that the placeholder does not require" + - "a player instance to be parsed. <#848484>ℹ" + + # Commands (npc teleport) + npc_teleport_success: "You have been teleported to NPC {warningColor}{npc}." + npc_teleport_failure_exception: "› {errorColor}An error occurred while trying to teleport to NPC. Check console for errors." + npc_teleport_failure_world_not_loaded: "› {errorColor}An error occurred while trying to teleport to NPC. Destination world is not loaded." + + # Commands (npc turn_to_player) + npc_turn_to_player_set_true: "NPC {warningColor}{npc} is now turning to player." + npc_turn_to_player_set_false: "NPC {warningColor}{npc} is no longer turning to player." + npc_turn_to_player_distance_set: "NPC {warningColor}{npc} will now turn to players within {warningColor}{distance} blocks." + npc_turn_to_player_distance_default: "NPC {warningColor}{npc} will now use the default distance of {warningColor}{distance} blocks." + npc_turn_to_player_distance_invalid: "› {errorColor}Invalid distance value. Distance must be -1 (for default) or a positive number." + + # Commands (npc type) + npc_type_success: "NPC {warningColor}{npc} type has been changed to {warningColor}{type}." + + # Commands (npc turn_to_player_distance) + turn_to_player_distance_current: "Current turn-to-player distance is: {warningColor}{distance} blocks" + turn_to_player_distance_updated: "› {successColor}Turn-to-player distance has been updated to {warningColor}{distance} blocks" + turn_to_player_distance_failed: "› {errorColor}Failed to update turn-to-player distance." + + # Commands (npc center) + npc_center_success: "NPC {warningColor}{npc} has been centered to {warningColor}{x}, {warningColor}{y}, {warningColor}{z}." + npc_center_failure_no_location: "› {errorColor}NPC {warningColor}{npc}{errorColor} has no valid location." diff --git a/src/plugins/FancyNpcs/version.yml b/src/plugins/FancyNpcs/version.yml new file mode 100644 index 0000000..914ec96 --- /dev/null +++ b/src/plugins/FancyNpcs/version.yml @@ -0,0 +1 @@ +2.6.0 \ No newline at end of file