From 15483c97238f4d9a5e0ce27b12b05aa6491fabb2 Mon Sep 17 00:00:00 2001 From: ColinHDev Date: Sun, 2 Jul 2023 01:57:46 +0200 Subject: [PATCH 1/8] adding build script for translation api classes --- build/generate-translation-api.php | 109 + .../language/KnownTranslationFactory.php | 2541 +++++++++++++++++ .../CPlot/language/KnownTranslationKeys.php | 554 ++++ 3 files changed, 3204 insertions(+) create mode 100644 build/generate-translation-api.php create mode 100644 src/ColinHDev/CPlot/language/KnownTranslationFactory.php create mode 100644 src/ColinHDev/CPlot/language/KnownTranslationKeys.php diff --git a/build/generate-translation-api.php b/build/generate-translation-api.php new file mode 100644 index 0000000..93feb21 --- /dev/null +++ b/build/generate-translation-api.php @@ -0,0 +1,109 @@ + $fileContents + * @return void + */ +function generateClasses(array $fileContents) : void { + $factoryClass = FACTORY_HEADER; + $keyClass = KEY_HEADER; + $translatableClassName = (new ReflectionClass(Translatable::class))->getShortName(); + $parameters = []; + foreach ($fileContents as $line) { + if (str_starts_with($line, ";")) { + preg_match_all("/{%(?P\d+)}\s=\s(?P[^,()]+)/", $line, $matches); + foreach ($matches["name"] as $index => $name) { + $parameters[$matches["digit"][$index]] = parameterify($name); + } + continue; + } + preg_match("/^(.+?)\s*=\s*(.+)$/", $line, $matches); + if (!isset($matches[1])) { + continue; + } + $key = $matches[1]; + $constantName = constantify($key); + ksort($parameters, SORT_NUMERIC); + $factoryClass .= " public static function " . + functionify($key) . + "(" . implode(", ", array_map(fn(string $paramName) => "$translatableClassName|string \$$paramName", $parameters)) . ") : $translatableClassName {\n" . + " return new $translatableClassName(KnownTranslationKeys::$constantName, ["; + foreach($parameters as $parameterKey => $parameterName){ + $factoryClass .= "\n $parameterKey => \$$parameterName,"; + } + if(count($parameters) > 0){ + $factoryClass .= "\n "; + $parameters = []; + } + $factoryClass .= "]);\n }\n\n"; + + $keyClass .= " public const " . $constantName . " = \"" . $key . "\";\n"; + } + $factoryClass .= "}"; + $keyClass .= "}"; + file_put_contents(dirname(__DIR__) . "/src/ColinHDev/CPlot/language/KnownTranslationFactory.php", $factoryClass); + file_put_contents(dirname(__DIR__) . "/src/ColinHDev/CPlot/language/KnownTranslationKeys.php", $keyClass); +} + +function constantify(string $name) : string { + return strtoupper(str_replace([".", "-"], "_", $name)); +} + +function functionify(string $name) : string { + return str_replace([".", "-"], "_", $name); +} + +function parameterify(string $name) : string { + return str_replace([" ", ".", "-"], "_", trim($name)); +} \ No newline at end of file diff --git a/src/ColinHDev/CPlot/language/KnownTranslationFactory.php b/src/ColinHDev/CPlot/language/KnownTranslationFactory.php new file mode 100644 index 0000000..d5de508 --- /dev/null +++ b/src/ColinHDev/CPlot/language/KnownTranslationFactory.php @@ -0,0 +1,2541 @@ + $year, + 1 => $month, + 2 => $day, + 3 => $hour, + 4 => $minute, + 5 => $second, + ]); + } + + public static function format_list_playerWithTime(Translatable|string $player_name, Translatable|string $time) : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_PLAYERWITHTIME, [ + 0 => $player_name, + 1 => $time, + ]); + } + + public static function format_list_playerWithTime_separator() : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_PLAYERWITHTIME_SEPARATOR, []); + } + + public static function format_list_player(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_PLAYER, [ + 0 => $player_name, + ]); + } + + public static function format_list_player_separator() : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_PLAYER_SEPARATOR, []); + } + + public static function format_list_category(Translatable|string $category, Translatable|string $list_of_elements) : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_CATEGORY, [ + 0 => $category, + 1 => $list_of_elements, + ]); + } + + public static function format_list_category_separator() : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_CATEGORY_SEPARATOR, []); + } + + public static function format_list_attribute(Translatable|string $attribute_ID) : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_ATTRIBUTE, [ + 0 => $attribute_ID, + ]); + } + + public static function format_list_attribute_separator() : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_ATTRIBUTE_SEPARATOR, []); + } + + public static function format_list_attributeWithValue(Translatable|string $attribute_ID, Translatable|string $attribute_value) : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_ATTRIBUTEWITHVALUE, [ + 0 => $attribute_ID, + 1 => $attribute_value, + ]); + } + + public static function format_list_attributeWithValue_separator() : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_ATTRIBUTEWITHVALUE_SEPARATOR, []); + } + + public static function format_list_commandWithDescription(Translatable|string $command, Translatable|string $description) : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_COMMANDWITHDESCRIPTION, [ + 0 => $command, + 1 => $description, + ]); + } + + public static function format_list_commandWithDescription_separator() : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_COMMANDWITHDESCRIPTION_SEPARATOR, []); + } + + public static function format_list_schematic(Translatable|string $schematic_name) : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_SCHEMATIC, [ + 0 => $schematic_name, + ]); + } + + public static function format_list_schematic_separator() : Translatable { + return new Translatable(KnownTranslationKeys::FORMAT_LIST_SCHEMATIC_SEPARATOR, []); + } + + public static function economy_error_unknown() : Translatable { + return new Translatable(KnownTranslationKeys::ECONOMY_ERROR_UNKNOWN, []); + } + + public static function economy_error_eventCancelled() : Translatable { + return new Translatable(KnownTranslationKeys::ECONOMY_ERROR_EVENTCANCELLED, []); + } + + public static function economy_error_sourceNonExistent() : Translatable { + return new Translatable(KnownTranslationKeys::ECONOMY_ERROR_SOURCENONEXISTENT, []); + } + + public static function economy_error_sourceUnderflow() : Translatable { + return new Translatable(KnownTranslationKeys::ECONOMY_ERROR_SOURCEUNDERFLOW, []); + } + + public static function playerLogin_savePlayerDataError() : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERLOGIN_SAVEPLAYERDATAERROR, []); + } + + public static function playerMove_plotEnter_tip_coordinates(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERMOVE_PLOTENTER_TIP_COORDINATES, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + ]); + } + + public static function playerMove_plotEnter_tip_owner(Translatable|string $list_of_owners) : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERMOVE_PLOTENTER_TIP_OWNER, [ + 0 => $list_of_owners, + ]); + } + + public static function playerMove_plotEnter_tip_owner_separator() : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERMOVE_PLOTENTER_TIP_OWNER_SEPARATOR, []); + } + + public static function playerMove_plotEnter_tip_claimable() : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERMOVE_PLOTENTER_TIP_CLAIMABLE, []); + } + + public static function playerMove_plotEnter_tip_flag_greeting(Translatable|string $greeting_message) : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERMOVE_PLOTENTER_TIP_FLAG_GREETING, [ + 0 => $greeting_message, + ]); + } + + public static function playerMove_plotLeave_tip_flag_farewell(Translatable|string $farewell_message) : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERMOVE_PLOTLEAVE_TIP_FLAG_FAREWELL, [ + 0 => $farewell_message, + ]); + } + + public static function playerMove_setting_warn_flag(Translatable|string $flag_ID, Translatable|string $flag_value) : Translatable { + return new Translatable(KnownTranslationKeys::PLAYERMOVE_SETTING_WARN_FLAG, [ + 0 => $flag_ID, + 1 => $flag_value, + ]); + } + + public static function plot_name() : Translatable { + return new Translatable(KnownTranslationKeys::PLOT_NAME, []); + } + + public static function plot_alias() : Translatable { + return new Translatable(KnownTranslationKeys::PLOT_ALIAS, []); + } + + public static function plot_description() : Translatable { + return new Translatable(KnownTranslationKeys::PLOT_DESCRIPTION, []); + } + + public static function plot_usage() : Translatable { + return new Translatable(KnownTranslationKeys::PLOT_USAGE, []); + } + + public static function plot_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::PLOT_PERMISSIONMESSAGE, []); + } + + public static function plot_unknownSubcommand() : Translatable { + return new Translatable(KnownTranslationKeys::PLOT_UNKNOWNSUBCOMMAND, []); + } + + public static function add_name() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_NAME, []); + } + + public static function add_alias() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_ALIAS, []); + } + + public static function add_description() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_DESCRIPTION, []); + } + + public static function add_usage() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_USAGE, []); + } + + public static function add_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_PERMISSIONMESSAGE, []); + } + + public static function add_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_SENDERNOTONLINE, []); + } + + public static function add_playerNotFound(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::ADD_PLAYERNOTFOUND, [ + 0 => $player_name, + ]); + } + + public static function add_senderIsPlayer() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_SENDERISPLAYER, []); + } + + public static function add_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_NOPLOTWORLD, []); + } + + public static function add_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_NOPLOT, []); + } + + public static function add_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_NOPLOTOWNER, []); + } + + public static function add_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_NOTPLOTOWNER, []); + } + + public static function add_playerAlreadyHelper(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::ADD_PLAYERALREADYHELPER, [ + 0 => $player_name, + ]); + } + + public static function add_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_PLOTLOCKED, []); + } + + public static function add_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::ADD_SAVEERROR, []); + } + + public static function add_success(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::ADD_SUCCESS, [ + 0 => $player_name, + ]); + } + + public static function add_success_player(Translatable|string $command_executor_name, Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::ADD_SUCCESS_PLAYER, [ + 0 => $command_executor_name, + 1 => $world_name, + 2 => $x_coordinate, + 3 => $z_coordinate, + ]); + } + + public static function auto_name() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_NAME, []); + } + + public static function auto_alias() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_ALIAS, []); + } + + public static function auto_description() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_DESCRIPTION, []); + } + + public static function auto_usage() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_USAGE, []); + } + + public static function auto_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_PERMISSIONMESSAGE, []); + } + + public static function auto_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_SENDERNOTONLINE, []); + } + + public static function auto_plotLimitReached(Translatable|string $number_of_plots, Translatable|string $maximum_number_of_plots) : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_PLOTLIMITREACHED, [ + 0 => $number_of_plots, + 1 => $maximum_number_of_plots, + ]); + } + + public static function auto_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_NOPLOTWORLD, []); + } + + public static function auto_noPlotFound() : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_NOPLOTFOUND, []); + } + + public static function auto_teleportError(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_TELEPORTERROR, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + ]); + } + + public static function auto_success(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::AUTO_SUCCESS, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + ]); + } + + public static function biome_name() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_NAME, []); + } + + public static function biome_alias() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_ALIAS, []); + } + + public static function biome_description() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_DESCRIPTION, []); + } + + public static function biome_usage() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_USAGE, []); + } + + public static function biome_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_PERMISSIONMESSAGE, []); + } + + public static function biome_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_SENDERNOTONLINE, []); + } + + public static function biome_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_NOPLOTWORLD, []); + } + + public static function biome_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_NOPLOT, []); + } + + public static function biome_plotBiome(Translatable|string $biome_name) : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_PLOTBIOME, [ + 0 => $biome_name, + ]); + } + + public static function biome_invalidBiome(Translatable|string $provided_biome_name, Translatable|string $list_of_all_known_biomes) : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_INVALIDBIOME, [ + 0 => $provided_biome_name, + 1 => $list_of_all_known_biomes, + ]); + } + + public static function biome_list(Translatable|string $biome_name) : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_LIST, [ + 0 => $biome_name, + ]); + } + + public static function biome_list_separator() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_LIST_SEPARATOR, []); + } + + public static function biome_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_NOPLOTOWNER, []); + } + + public static function biome_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_NOTPLOTOWNER, []); + } + + public static function biome_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_PLOTLOCKED, []); + } + + public static function biome_start() : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_START, []); + } + + public static function biome_finish(Translatable|string $duration, Translatable|string $biome_name) : Translatable { + return new Translatable(KnownTranslationKeys::BIOME_FINISH, [ + 0 => $duration, + 1 => $biome_name, + ]); + } + + public static function border_name() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_NAME, []); + } + + public static function border_alias() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_ALIAS, []); + } + + public static function border_description() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_DESCRIPTION, []); + } + + public static function border_usage() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_USAGE, []); + } + + public static function border_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_PERMISSIONMESSAGE, []); + } + + public static function border_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_SENDERNOTONLINE, []); + } + + public static function border_invalidBlock(Translatable|string $block_name) : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_INVALIDBLOCK, [ + 0 => $block_name, + ]); + } + + public static function border_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_NOPLOTWORLD, []); + } + + public static function border_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_NOPLOT, []); + } + + public static function border_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_NOPLOTOWNER, []); + } + + public static function border_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_NOTPLOTOWNER, []); + } + + public static function border_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_PLOTLOCKED, []); + } + + public static function border_start() : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_START, []); + } + + public static function border_finish(Translatable|string $duration, Translatable|string $block_name) : Translatable { + return new Translatable(KnownTranslationKeys::BORDER_FINISH, [ + 0 => $duration, + 1 => $block_name, + ]); + } + + public static function claim_name() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_NAME, []); + } + + public static function claim_alias() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_ALIAS, []); + } + + public static function claim_description() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_DESCRIPTION, []); + } + + public static function claim_usage() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_USAGE, []); + } + + public static function claim_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_PERMISSIONMESSAGE, []); + } + + public static function claim_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_SENDERNOTONLINE, []); + } + + public static function claim_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_NOPLOTWORLD, []); + } + + public static function claim_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_NOPLOT, []); + } + + public static function claim_plotClaimed() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_PLOTCLAIMED, []); + } + + public static function claim_plotClaimedBySender() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_PLOTCLAIMEDBYSENDER, []); + } + + public static function claim_plotLimitReached(Translatable|string $number_of_plots, Translatable|string $maximum_number_of_plots) : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_PLOTLIMITREACHED, [ + 0 => $number_of_plots, + 1 => $maximum_number_of_plots, + ]); + } + + public static function claim_chargeMoneyError(Translatable|string $price, Translatable|string $currency, Translatable|string $error_message) : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_CHARGEMONEYERROR, [ + 0 => $price, + 1 => $currency, + 2 => $error_message, + ]); + } + + public static function claim_chargedMoney(Translatable|string $price, Translatable|string $currency) : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_CHARGEDMONEY, [ + 0 => $price, + 1 => $currency, + ]); + } + + public static function claim_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_SAVEERROR, []); + } + + public static function claim_success(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::CLAIM_SUCCESS, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + ]); + } + + public static function clear_name() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_NAME, []); + } + + public static function clear_alias() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_ALIAS, []); + } + + public static function clear_description() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_DESCRIPTION, []); + } + + public static function clear_usage() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_USAGE, []); + } + + public static function clear_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_PERMISSIONMESSAGE, []); + } + + public static function clear_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_SENDERNOTONLINE, []); + } + + public static function clear_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_NOPLOTWORLD, []); + } + + public static function clear_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_NOPLOT, []); + } + + public static function clear_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_NOPLOTOWNER, []); + } + + public static function clear_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_NOTPLOTOWNER, []); + } + + public static function clear_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_PLOTLOCKED, []); + } + + public static function clear_chargeMoneyError(Translatable|string $price, Translatable|string $currency, Translatable|string $error_message) : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_CHARGEMONEYERROR, [ + 0 => $price, + 1 => $currency, + 2 => $error_message, + ]); + } + + public static function clear_chargedMoney(Translatable|string $price, Translatable|string $currency) : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_CHARGEDMONEY, [ + 0 => $price, + 1 => $currency, + ]); + } + + public static function clear_start() : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_START, []); + } + + public static function clear_finish(Translatable|string $duration) : Translatable { + return new Translatable(KnownTranslationKeys::CLEAR_FINISH, [ + 0 => $duration, + ]); + } + + public static function denied_name() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_NAME, []); + } + + public static function denied_alias() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_ALIAS, []); + } + + public static function denied_description() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_DESCRIPTION, []); + } + + public static function denied_usage() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_USAGE, []); + } + + public static function denied_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_PERMISSIONMESSAGE, []); + } + + public static function denied_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_SENDERNOTONLINE, []); + } + + public static function denied_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_NOPLOTWORLD, []); + } + + public static function denied_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_NOPLOT, []); + } + + public static function denied_noDeniedPlayers() : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_NODENIEDPLAYERS, []); + } + + public static function denied_success(Translatable|string $list_of_denied_players) : Translatable { + return new Translatable(KnownTranslationKeys::DENIED_SUCCESS, [ + 0 => $list_of_denied_players, + ]); + } + + public static function deny_name() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_NAME, []); + } + + public static function deny_alias() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_ALIAS, []); + } + + public static function deny_description() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_DESCRIPTION, []); + } + + public static function deny_usage() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_USAGE, []); + } + + public static function deny_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_PERMISSIONMESSAGE, []); + } + + public static function deny_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_SENDERNOTONLINE, []); + } + + public static function deny_playerNotFound(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::DENY_PLAYERNOTFOUND, [ + 0 => $player_name, + ]); + } + + public static function deny_senderIsPlayer() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_SENDERISPLAYER, []); + } + + public static function deny_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_NOPLOTWORLD, []); + } + + public static function deny_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_NOPLOT, []); + } + + public static function deny_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_NOPLOTOWNER, []); + } + + public static function deny_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_NOTPLOTOWNER, []); + } + + public static function deny_playerAlreadyDenied(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::DENY_PLAYERALREADYDENIED, [ + 0 => $player_name, + ]); + } + + public static function deny_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_PLOTLOCKED, []); + } + + public static function deny_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::DENY_SAVEERROR, []); + } + + public static function deny_success(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::DENY_SUCCESS, [ + 0 => $player_name, + ]); + } + + public static function deny_success_player(Translatable|string $command_executor_name, Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::DENY_SUCCESS_PLAYER, [ + 0 => $command_executor_name, + 1 => $world_name, + 2 => $x_coordinate, + 3 => $z_coordinate, + ]); + } + + public static function flag_name() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_NAME, []); + } + + public static function flag_alias() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_ALIAS, []); + } + + public static function flag_description() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_DESCRIPTION, []); + } + + public static function flag_usage() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_USAGE, []); + } + + public static function flag_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_PERMISSIONMESSAGE, []); + } + + public static function flag_list_success(Translatable|string $list_of_flags) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_LIST_SUCCESS, [ + 0 => $list_of_flags, + ]); + } + + public static function flag_info_usage() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_INFO_USAGE, []); + } + + public static function flag_info_flagNotFound(Translatable|string $flag_ID) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_INFO_FLAGNOTFOUND, [ + 0 => $flag_ID, + ]); + } + + public static function flag_info_success(Translatable|string $flag_ID, Translatable|string $category, Translatable|string $description, Translatable|string $type, Translatable|string $example_value, Translatable|string $default_value) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_INFO_SUCCESS, [ + 0 => $flag_ID, + 1 => $category, + 2 => $description, + 3 => $type, + 4 => $example_value, + 5 => $default_value, + ]); + } + + public static function flag_here_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_HERE_SENDERNOTONLINE, []); + } + + public static function flag_here_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_HERE_NOPLOTWORLD, []); + } + + public static function flag_here_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_HERE_NOPLOT, []); + } + + public static function flag_here_noFlags() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_HERE_NOFLAGS, []); + } + + public static function flag_here_success(Translatable|string $list_of_flags) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_HERE_SUCCESS, [ + 0 => $list_of_flags, + ]); + } + + public static function flag_set_usage() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_USAGE, []); + } + + public static function flag_set_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_SENDERNOTONLINE, []); + } + + public static function flag_set_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_NOPLOTWORLD, []); + } + + public static function flag_set_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_NOPLOT, []); + } + + public static function flag_set_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_NOPLOTOWNER, []); + } + + public static function flag_set_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_NOTPLOTOWNER, []); + } + + public static function flag_set_flagNotFound(Translatable|string $flag_ID) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_FLAGNOTFOUND, [ + 0 => $flag_ID, + ]); + } + + public static function flag_set_permissionMessageForFlag(Translatable|string $flag_ID) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_PERMISSIONMESSAGEFORFLAG, [ + 0 => $flag_ID, + ]); + } + + public static function flag_set_parseError(Translatable|string $flag_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_PARSEERROR, [ + 0 => $flag_ID, + 1 => $value, + ]); + } + + public static function flag_set_success(Translatable|string $flag_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_SUCCESS, [ + 0 => $flag_ID, + 1 => $value, + ]); + } + + public static function flag_set_setting_warn_change_flag(Translatable|string $flag_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_SET_SETTING_WARN_CHANGE_FLAG, [ + 0 => $flag_ID, + 1 => $value, + ]); + } + + public static function flag_remove_usage() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_USAGE, []); + } + + public static function flag_remove_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_SENDERNOTONLINE, []); + } + + public static function flag_remove_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_NOPLOTWORLD, []); + } + + public static function flag_remove_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_NOPLOT, []); + } + + public static function flag_remove_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_NOPLOTOWNER, []); + } + + public static function flag_remove_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_NOTPLOTOWNER, []); + } + + public static function flag_remove_flagNotSet(Translatable|string $flag_ID) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_FLAGNOTSET, [ + 0 => $flag_ID, + ]); + } + + public static function flag_remove_permissionMessageForFlag(Translatable|string $flag_ID) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_PERMISSIONMESSAGEFORFLAG, [ + 0 => $flag_ID, + ]); + } + + public static function flag_remove_parseError(Translatable|string $flag_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_PARSEERROR, [ + 0 => $flag_ID, + 1 => $value, + ]); + } + + public static function flag_remove_success_value(Translatable|string $flag_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_SUCCESS_VALUE, [ + 0 => $flag_ID, + 1 => $value, + ]); + } + + public static function flag_remove_success_flag(Translatable|string $flag_ID) : Translatable { + return new Translatable(KnownTranslationKeys::FLAG_REMOVE_SUCCESS_FLAG, [ + 0 => $flag_ID, + ]); + } + + public static function generate_name() : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_NAME, []); + } + + public static function generate_alias() : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_ALIAS, []); + } + + public static function generate_description() : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_DESCRIPTION, []); + } + + public static function generate_usage() : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_USAGE, []); + } + + public static function generate_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_PERMISSIONMESSAGE, []); + } + + public static function generate_worldExists(Translatable|string $world_name) : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_WORLDEXISTS, [ + 0 => $world_name, + ]); + } + + public static function generate_generateError() : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_GENERATEERROR, []); + } + + public static function generate_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_SAVEERROR, []); + } + + public static function generate_success(Translatable|string $world_name) : Translatable { + return new Translatable(KnownTranslationKeys::GENERATE_SUCCESS, [ + 0 => $world_name, + ]); + } + + public static function helpers_name() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_NAME, []); + } + + public static function helpers_alias() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_ALIAS, []); + } + + public static function helpers_description() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_DESCRIPTION, []); + } + + public static function helpers_usage() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_USAGE, []); + } + + public static function helpers_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_PERMISSIONMESSAGE, []); + } + + public static function helpers_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_SENDERNOTONLINE, []); + } + + public static function helpers_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_NOPLOTWORLD, []); + } + + public static function helpers_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_NOPLOT, []); + } + + public static function helpers_noHelpers() : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_NOHELPERS, []); + } + + public static function helpers_success(Translatable|string $list_of_helpers) : Translatable { + return new Translatable(KnownTranslationKeys::HELPERS_SUCCESS, [ + 0 => $list_of_helpers, + ]); + } + + public static function help_name() : Translatable { + return new Translatable(KnownTranslationKeys::HELP_NAME, []); + } + + public static function help_alias() : Translatable { + return new Translatable(KnownTranslationKeys::HELP_ALIAS, []); + } + + public static function help_description() : Translatable { + return new Translatable(KnownTranslationKeys::HELP_DESCRIPTION, []); + } + + public static function help_usage() : Translatable { + return new Translatable(KnownTranslationKeys::HELP_USAGE, []); + } + + public static function help_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::HELP_PERMISSIONMESSAGE, []); + } + + public static function help_success(Translatable|string $current_page, Translatable|string $maximum_number_of_pages, Translatable|string $list_of_subcommands) : Translatable { + return new Translatable(KnownTranslationKeys::HELP_SUCCESS, [ + 0 => $current_page, + 1 => $maximum_number_of_pages, + 2 => $list_of_subcommands, + ]); + } + + public static function info_name() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_NAME, []); + } + + public static function info_alias() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_ALIAS, []); + } + + public static function info_description() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_DESCRIPTION, []); + } + + public static function info_usage() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_USAGE, []); + } + + public static function info_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_PERMISSIONMESSAGE, []); + } + + public static function info_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_SENDERNOTONLINE, []); + } + + public static function info_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_NOPLOTWORLD, []); + } + + public static function info_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::INFO_NOPLOT, []); + } + + public static function info_success(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate, Translatable|string $list_of_owners, Translatable|string $alias, Translatable|string $biome_name, Translatable|string $list_of_trusted_players, Translatable|string $list_of_helpers, Translatable|string $list_of_denied_players, Translatable|string $list_of_flags) : Translatable { + return new Translatable(KnownTranslationKeys::INFO_SUCCESS, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + 3 => $list_of_owners, + 4 => $alias, + 5 => $biome_name, + 6 => $list_of_trusted_players, + 7 => $list_of_helpers, + 8 => $list_of_denied_players, + 9 => $list_of_flags, + ]); + } + + public static function kick_name() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_NAME, []); + } + + public static function kick_alias() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_ALIAS, []); + } + + public static function kick_description() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_DESCRIPTION, []); + } + + public static function kick_usage() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_USAGE, []); + } + + public static function kick_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_PERMISSIONMESSAGE, []); + } + + public static function kick_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_SENDERNOTONLINE, []); + } + + public static function kick_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_NOPLOTWORLD, []); + } + + public static function kick_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_NOPLOT, []); + } + + public static function kick_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_NOPLOTOWNER, []); + } + + public static function kick_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_NOTPLOTOWNER, []); + } + + public static function kick_targetNotOnline(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::KICK_TARGETNOTONLINE, [ + 0 => $player_name, + ]); + } + + public static function kick_senderIsTarget() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_SENDERISTARGET, []); + } + + public static function kick_targetNotOnPlot(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::KICK_TARGETNOTONPLOT, [ + 0 => $player_name, + ]); + } + + public static function kick_kickError(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::KICK_KICKERROR, [ + 0 => $player_name, + ]); + } + + public static function kick_targetMessage(Translatable|string $name_of_command_executor) : Translatable { + return new Translatable(KnownTranslationKeys::KICK_TARGETMESSAGE, [ + 0 => $name_of_command_executor, + ]); + } + + public static function kick_noneToKick() : Translatable { + return new Translatable(KnownTranslationKeys::KICK_NONETOKICK, []); + } + + public static function kick_success_playerCount(Translatable|string $player_count) : Translatable { + return new Translatable(KnownTranslationKeys::KICK_SUCCESS_PLAYERCOUNT, [ + 0 => $player_count, + ]); + } + + public static function kick_success_playerName(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::KICK_SUCCESS_PLAYERNAME, [ + 0 => $player_name, + ]); + } + + public static function merge_name() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_NAME, []); + } + + public static function merge_alias() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_ALIAS, []); + } + + public static function merge_description() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_DESCRIPTION, []); + } + + public static function merge_usage() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_USAGE, []); + } + + public static function merge_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_PERMISSIONMESSAGE, []); + } + + public static function merge_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_SENDERNOTONLINE, []); + } + + public static function merge_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_NOPLOTWORLD, []); + } + + public static function merge_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_NOPLOT, []); + } + + public static function merge_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_NOPLOTOWNER, []); + } + + public static function merge_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_NOTPLOTOWNER, []); + } + + public static function merge_processDirectionError() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_PROCESSDIRECTIONERROR, []); + } + + public static function merge_invalidSecondPlot() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_INVALIDSECONDPLOT, []); + } + + public static function merge_alreadyMerged() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_ALREADYMERGED, []); + } + + public static function merge_notSamePlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_NOTSAMEPLOTOWNER, []); + } + + public static function merge_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_PLOTLOCKED, []); + } + + public static function merge_chargeMoneyError(Translatable|string $price, Translatable|string $currency, Translatable|string $error_message) : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_CHARGEMONEYERROR, [ + 0 => $price, + 1 => $currency, + 2 => $error_message, + ]); + } + + public static function merge_chargedMoney(Translatable|string $price, Translatable|string $currency) : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_CHARGEDMONEY, [ + 0 => $price, + 1 => $currency, + ]); + } + + public static function merge_start() : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_START, []); + } + + public static function merge_finish(Translatable|string $duration) : Translatable { + return new Translatable(KnownTranslationKeys::MERGE_FINISH, [ + 0 => $duration, + ]); + } + + public static function middle_name() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_NAME, []); + } + + public static function middle_alias() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_ALIAS, []); + } + + public static function middle_description() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_DESCRIPTION, []); + } + + public static function middle_usage() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_USAGE, []); + } + + public static function middle_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_PERMISSIONMESSAGE, []); + } + + public static function middle_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_SENDERNOTONLINE, []); + } + + public static function middle_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_NOPLOTWORLD, []); + } + + public static function middle_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_NOPLOT, []); + } + + public static function middle_teleportError() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_TELEPORTERROR, []); + } + + public static function middle_success() : Translatable { + return new Translatable(KnownTranslationKeys::MIDDLE_SUCCESS, []); + } + + public static function remove_name() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_NAME, []); + } + + public static function remove_alias() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_ALIAS, []); + } + + public static function remove_description() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_DESCRIPTION, []); + } + + public static function remove_usage() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_USAGE, []); + } + + public static function remove_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_PERMISSIONMESSAGE, []); + } + + public static function remove_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_SENDERNOTONLINE, []); + } + + public static function remove_playerNotFound(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_PLAYERNOTFOUND, [ + 0 => $player_name, + ]); + } + + public static function remove_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_NOPLOTWORLD, []); + } + + public static function remove_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_NOPLOT, []); + } + + public static function remove_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_NOPLOTOWNER, []); + } + + public static function remove_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_NOTPLOTOWNER, []); + } + + public static function remove_playerNotHelper(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_PLAYERNOTHELPER, [ + 0 => $player_name, + ]); + } + + public static function remove_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_PLOTLOCKED, []); + } + + public static function remove_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_SAVEERROR, []); + } + + public static function remove_success(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_SUCCESS, [ + 0 => $player_name, + ]); + } + + public static function remove_success_player(Translatable|string $command_executor_name, Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::REMOVE_SUCCESS_PLAYER, [ + 0 => $command_executor_name, + 1 => $world_name, + 2 => $x_coordinate, + 3 => $z_coordinate, + ]); + } + + public static function reset_name() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_NAME, []); + } + + public static function reset_alias() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_ALIAS, []); + } + + public static function reset_description() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_DESCRIPTION, []); + } + + public static function reset_usage() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_USAGE, []); + } + + public static function reset_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_PERMISSIONMESSAGE, []); + } + + public static function reset_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_SENDERNOTONLINE, []); + } + + public static function reset_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_NOPLOTWORLD, []); + } + + public static function reset_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_NOPLOT, []); + } + + public static function reset_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_NOPLOTOWNER, []); + } + + public static function reset_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_NOTPLOTOWNER, []); + } + + public static function reset_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_PLOTLOCKED, []); + } + + public static function reset_chargeMoneyError(Translatable|string $price, Translatable|string $currency, Translatable|string $error_message) : Translatable { + return new Translatable(KnownTranslationKeys::RESET_CHARGEMONEYERROR, [ + 0 => $price, + 1 => $currency, + 2 => $error_message, + ]); + } + + public static function reset_chargedMoney(Translatable|string $price, Translatable|string $currency) : Translatable { + return new Translatable(KnownTranslationKeys::RESET_CHARGEDMONEY, [ + 0 => $price, + 1 => $currency, + ]); + } + + public static function reset_start() : Translatable { + return new Translatable(KnownTranslationKeys::RESET_START, []); + } + + public static function reset_finish(Translatable|string $duration) : Translatable { + return new Translatable(KnownTranslationKeys::RESET_FINISH, [ + 0 => $duration, + ]); + } + + public static function schematic_name() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_NAME, []); + } + + public static function schematic_alias() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_ALIAS, []); + } + + public static function schematic_description() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_DESCRIPTION, []); + } + + public static function schematic_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_USAGE, []); + } + + public static function schematic_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_PERMISSIONMESSAGE, []); + } + + public static function schematic_list_noSchematics() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_LIST_NOSCHEMATICS, []); + } + + public static function schematic_list_success(Translatable|string $list_of_schematics) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_LIST_SUCCESS, [ + 0 => $list_of_schematics, + ]); + } + + public static function schematic_info_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_INFO_USAGE, []); + } + + public static function schematic_info_schematicNotFound(Translatable|string $schematic_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_INFO_SCHEMATICNOTFOUND, [ + 0 => $schematic_name, + ]); + } + + public static function schematic_info_loadError(Translatable|string $schematic_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_INFO_LOADERROR, [ + 0 => $schematic_name, + ]); + } + + public static function schematic_info_success(Translatable|string $schematic_name, Translatable|string $creation_time, Translatable|string $type, Translatable|string $road_size, Translatable|string $plot_size) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_INFO_SUCCESS, [ + 0 => $schematic_name, + 1 => $creation_time, + 2 => $type, + 3 => $road_size, + 4 => $plot_size, + ]); + } + + public static function schematic_save_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_SAVE_USAGE, []); + } + + public static function schematic_save_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_SAVE_SENDERNOTONLINE, []); + } + + public static function schematic_save_directoryNotFound() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_SAVE_DIRECTORYNOTFOUND, []); + } + + public static function schematic_save_schematicExists(Translatable|string $schematic_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_SAVE_SCHEMATICEXISTS, [ + 0 => $schematic_name, + ]); + } + + public static function schematic_save_invalidType(Translatable|string $schematic_type) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_SAVE_INVALIDTYPE, [ + 0 => $schematic_type, + ]); + } + + public static function schematic_save_start(Translatable|string $schematic_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_SAVE_START, [ + 0 => $schematic_name, + ]); + } + + public static function schematic_save_finish(Translatable|string $schematic_name, Translatable|string $duration) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_SAVE_FINISH, [ + 0 => $schematic_name, + 1 => $duration, + ]); + } + + public static function schematic_generate_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_GENERATE_USAGE, []); + } + + public static function schematic_generate_worldExists(Translatable|string $world_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_GENERATE_WORLDEXISTS, [ + 0 => $world_name, + ]); + } + + public static function schematic_generate_directoryNotFound() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_GENERATE_DIRECTORYNOTFOUND, []); + } + + public static function schematic_generate_schematicNotFound(Translatable|string $schematic_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_GENERATE_SCHEMATICNOTFOUND, [ + 0 => $schematic_name, + ]); + } + + public static function schematic_generate_loadError(Translatable|string $schematic_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_GENERATE_LOADERROR, [ + 0 => $schematic_name, + ]); + } + + public static function schematic_generate_generateError() : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_GENERATE_GENERATEERROR, []); + } + + public static function schematic_generate_success(Translatable|string $world_name) : Translatable { + return new Translatable(KnownTranslationKeys::SCHEMATIC_GENERATE_SUCCESS, [ + 0 => $world_name, + ]); + } + + public static function setting_name() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_NAME, []); + } + + public static function setting_alias() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_ALIAS, []); + } + + public static function setting_description() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_DESCRIPTION, []); + } + + public static function setting_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_USAGE, []); + } + + public static function setting_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_PERMISSIONMESSAGE, []); + } + + public static function setting_list_success(Translatable|string $list_of_settings) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_LIST_SUCCESS, [ + 0 => $list_of_settings, + ]); + } + + public static function setting_info_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_INFO_USAGE, []); + } + + public static function setting_info_settingNotFound(Translatable|string $setting_ID) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_INFO_SETTINGNOTFOUND, [ + 0 => $setting_ID, + ]); + } + + public static function setting_info_success(Translatable|string $setting_ID, Translatable|string $category, Translatable|string $description, Translatable|string $type, Translatable|string $example_value, Translatable|string $default_value) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_INFO_SUCCESS, [ + 0 => $setting_ID, + 1 => $category, + 2 => $description, + 3 => $type, + 4 => $example_value, + 5 => $default_value, + ]); + } + + public static function setting_my_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_MY_SENDERNOTONLINE, []); + } + + public static function setting_my_loadError() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_MY_LOADERROR, []); + } + + public static function setting_my_noSettings() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_MY_NOSETTINGS, []); + } + + public static function setting_my_success(Translatable|string $list_of_settings) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_MY_SUCCESS, [ + 0 => $list_of_settings, + ]); + } + + public static function setting_set_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_SET_USAGE, []); + } + + public static function setting_set_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_SET_SENDERNOTONLINE, []); + } + + public static function setting_set_loadError() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_SET_LOADERROR, []); + } + + public static function setting_set_settingNotFound(Translatable|string $setting_ID) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_SET_SETTINGNOTFOUND, [ + 0 => $setting_ID, + ]); + } + + public static function setting_set_permissionMessageForSetting(Translatable|string $setting_ID) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_SET_PERMISSIONMESSAGEFORSETTING, [ + 0 => $setting_ID, + ]); + } + + public static function setting_set_parseError(Translatable|string $setting_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_SET_PARSEERROR, [ + 0 => $setting_ID, + 1 => $value, + ]); + } + + public static function setting_set_success(Translatable|string $setting_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_SET_SUCCESS, [ + 0 => $setting_ID, + 1 => $value, + ]); + } + + public static function setting_remove_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_USAGE, []); + } + + public static function setting_remove_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_SENDERNOTONLINE, []); + } + + public static function setting_remove_loadError() : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_LOADERROR, []); + } + + public static function setting_remove_settingNotSet(Translatable|string $setting_ID) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_SETTINGNOTSET, [ + 0 => $setting_ID, + ]); + } + + public static function setting_remove_permissionMessageForSetting(Translatable|string $setting_ID) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_PERMISSIONMESSAGEFORSETTING, [ + 0 => $setting_ID, + ]); + } + + public static function setting_remove_parseError(Translatable|string $setting_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_PARSEERROR, [ + 0 => $setting_ID, + 1 => $value, + ]); + } + + public static function setting_remove_success_value(Translatable|string $setting_ID, Translatable|string $value) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_SUCCESS_VALUE, [ + 0 => $setting_ID, + 1 => $value, + ]); + } + + public static function setting_remove_success_setting(Translatable|string $setting_ID) : Translatable { + return new Translatable(KnownTranslationKeys::SETTING_REMOVE_SUCCESS_SETTING, [ + 0 => $setting_ID, + ]); + } + + public static function spawn_name() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_NAME, []); + } + + public static function spawn_alias() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_ALIAS, []); + } + + public static function spawn_description() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_DESCRIPTION, []); + } + + public static function spawn_usage() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_USAGE, []); + } + + public static function spawn_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_PERMISSIONMESSAGE, []); + } + + public static function spawn_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_SENDERNOTONLINE, []); + } + + public static function spawn_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_NOPLOTWORLD, []); + } + + public static function spawn_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_NOPLOT, []); + } + + public static function spawn_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_NOPLOTOWNER, []); + } + + public static function spawn_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_NOTPLOTOWNER, []); + } + + public static function spawn_success() : Translatable { + return new Translatable(KnownTranslationKeys::SPAWN_SUCCESS, []); + } + + public static function trusted_name() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_NAME, []); + } + + public static function trusted_alias() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_ALIAS, []); + } + + public static function trusted_description() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_DESCRIPTION, []); + } + + public static function trusted_usage() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_USAGE, []); + } + + public static function trusted_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_PERMISSIONMESSAGE, []); + } + + public static function trusted_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_SENDERNOTONLINE, []); + } + + public static function trusted_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_NOPLOTWORLD, []); + } + + public static function trusted_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_NOPLOT, []); + } + + public static function trusted_noTrustedPlayers() : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_NOTRUSTEDPLAYERS, []); + } + + public static function trusted_success(Translatable|string $list_of_trusted_players) : Translatable { + return new Translatable(KnownTranslationKeys::TRUSTED_SUCCESS, [ + 0 => $list_of_trusted_players, + ]); + } + + public static function trust_name() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_NAME, []); + } + + public static function trust_alias() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_ALIAS, []); + } + + public static function trust_description() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_DESCRIPTION, []); + } + + public static function trust_usage() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_USAGE, []); + } + + public static function trust_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_PERMISSIONMESSAGE, []); + } + + public static function trust_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_SENDERNOTONLINE, []); + } + + public static function trust_playerNotFound(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_PLAYERNOTFOUND, [ + 0 => $player_name, + ]); + } + + public static function trust_senderIsPlayer() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_SENDERISPLAYER, []); + } + + public static function trust_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_NOPLOTWORLD, []); + } + + public static function trust_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_NOPLOT, []); + } + + public static function trust_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_NOPLOTOWNER, []); + } + + public static function trust_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_NOTPLOTOWNER, []); + } + + public static function trust_playerAlreadyTrusted(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_PLAYERALREADYTRUSTED, [ + 0 => $player_name, + ]); + } + + public static function trust_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_PLOTLOCKED, []); + } + + public static function trust_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_SAVEERROR, []); + } + + public static function trust_success(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_SUCCESS, [ + 0 => $player_name, + ]); + } + + public static function trust_success_player(Translatable|string $command_executor_name, Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::TRUST_SUCCESS_PLAYER, [ + 0 => $command_executor_name, + 1 => $world_name, + 2 => $x_coordinate, + 3 => $z_coordinate, + ]); + } + + public static function undeny_name() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_NAME, []); + } + + public static function undeny_alias() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_ALIAS, []); + } + + public static function undeny_description() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_DESCRIPTION, []); + } + + public static function undeny_usage() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_USAGE, []); + } + + public static function undeny_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_PERMISSIONMESSAGE, []); + } + + public static function undeny_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_SENDERNOTONLINE, []); + } + + public static function undeny_playerNotFound(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_PLAYERNOTFOUND, [ + 0 => $player_name, + ]); + } + + public static function undeny_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_NOPLOTWORLD, []); + } + + public static function undeny_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_NOPLOT, []); + } + + public static function undeny_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_NOPLOTOWNER, []); + } + + public static function undeny_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_NOTPLOTOWNER, []); + } + + public static function undeny_playerNotDenied(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_PLAYERNOTDENIED, [ + 0 => $player_name, + ]); + } + + public static function undeny_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_PLOTLOCKED, []); + } + + public static function undeny_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_SAVEERROR, []); + } + + public static function undeny_success(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_SUCCESS, [ + 0 => $player_name, + ]); + } + + public static function undeny_success_player(Translatable|string $command_executor_name, Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::UNDENY_SUCCESS_PLAYER, [ + 0 => $command_executor_name, + 1 => $world_name, + 2 => $x_coordinate, + 3 => $z_coordinate, + ]); + } + + public static function untrust_name() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_NAME, []); + } + + public static function untrust_alias() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_ALIAS, []); + } + + public static function untrust_description() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_DESCRIPTION, []); + } + + public static function untrust_usage() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_USAGE, []); + } + + public static function untrust_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_PERMISSIONMESSAGE, []); + } + + public static function untrust_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_SENDERNOTONLINE, []); + } + + public static function untrust_playerNotFound(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_PLAYERNOTFOUND, [ + 0 => $player_name, + ]); + } + + public static function untrust_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_NOPLOTWORLD, []); + } + + public static function untrust_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_NOPLOT, []); + } + + public static function untrust_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_NOPLOTOWNER, []); + } + + public static function untrust_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_NOTPLOTOWNER, []); + } + + public static function untrust_playerNotTrusted(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_PLAYERNOTTRUSTED, [ + 0 => $player_name, + ]); + } + + public static function untrust_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_PLOTLOCKED, []); + } + + public static function untrust_saveError() : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_SAVEERROR, []); + } + + public static function untrust_success(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_SUCCESS, [ + 0 => $player_name, + ]); + } + + public static function untrust_success_player(Translatable|string $command_executor_name, Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::UNTRUST_SUCCESS_PLAYER, [ + 0 => $command_executor_name, + 1 => $world_name, + 2 => $x_coordinate, + 3 => $z_coordinate, + ]); + } + + public static function visit_name() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_NAME, []); + } + + public static function visit_alias() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_ALIAS, []); + } + + public static function visit_description() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_DESCRIPTION, []); + } + + public static function visit_usage() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_USAGE, []); + } + + public static function visit_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_PERMISSIONMESSAGE, []); + } + + public static function visit_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_SENDERNOTONLINE, []); + } + + public static function visit_loadPlotsError() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_LOADPLOTSERROR, []); + } + + public static function visit_self_noPlots() : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_SELF_NOPLOTS, []); + } + + public static function visit_self_noPlot(Translatable|string $plot_number) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_SELF_NOPLOT, [ + 0 => $plot_number, + ]); + } + + public static function visit_self_teleportError(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate, Translatable|string $plot_number) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_SELF_TELEPORTERROR, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + 3 => $plot_number, + ]); + } + + public static function visit_self_success(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate, Translatable|string $plot_number) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_SELF_SUCCESS, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + 3 => $plot_number, + ]); + } + + public static function visit_other_playerNotFound(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_OTHER_PLAYERNOTFOUND, [ + 0 => $player_name, + ]); + } + + public static function visit_other_noPlots(Translatable|string $player_name) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_OTHER_NOPLOTS, [ + 0 => $player_name, + ]); + } + + public static function visit_other_noPlot(Translatable|string $player_name, Translatable|string $plot_number) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_OTHER_NOPLOT, [ + 0 => $player_name, + 1 => $plot_number, + ]); + } + + public static function visit_other_teleportError(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate, Translatable|string $player_name, Translatable|string $plot_number) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_OTHER_TELEPORTERROR, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + 3 => $player_name, + 4 => $plot_number, + ]); + } + + public static function visit_other_success(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate, Translatable|string $player_name, Translatable|string $plot_number) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_OTHER_SUCCESS, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + 3 => $player_name, + 4 => $plot_number, + ]); + } + + public static function visit_alias_noPlot(Translatable|string $alias) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_ALIAS_NOPLOT, [ + 0 => $alias, + ]); + } + + public static function visit_alias_teleportError(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate, Translatable|string $alias) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_ALIAS_TELEPORTERROR, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + 3 => $alias, + ]); + } + + public static function visit_alias_success(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate, Translatable|string $alias) : Translatable { + return new Translatable(KnownTranslationKeys::VISIT_ALIAS_SUCCESS, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + 3 => $alias, + ]); + } + + public static function wall_name() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_NAME, []); + } + + public static function wall_alias() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_ALIAS, []); + } + + public static function wall_description() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_DESCRIPTION, []); + } + + public static function wall_usage() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_USAGE, []); + } + + public static function wall_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_PERMISSIONMESSAGE, []); + } + + public static function wall_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_SENDERNOTONLINE, []); + } + + public static function wall_invalidBlock(Translatable|string $block_name) : Translatable { + return new Translatable(KnownTranslationKeys::WALL_INVALIDBLOCK, [ + 0 => $block_name, + ]); + } + + public static function wall_noPlotWorld() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_NOPLOTWORLD, []); + } + + public static function wall_noPlot() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_NOPLOT, []); + } + + public static function wall_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_NOPLOTOWNER, []); + } + + public static function wall_notPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_NOTPLOTOWNER, []); + } + + public static function wall_plotLocked() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_PLOTLOCKED, []); + } + + public static function wall_start() : Translatable { + return new Translatable(KnownTranslationKeys::WALL_START, []); + } + + public static function wall_finish(Translatable|string $duration, Translatable|string $block_name) : Translatable { + return new Translatable(KnownTranslationKeys::WALL_FINISH, [ + 0 => $duration, + 1 => $block_name, + ]); + } + + public static function warp_name() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_NAME, []); + } + + public static function warp_alias() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_ALIAS, []); + } + + public static function warp_description() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_DESCRIPTION, []); + } + + public static function warp_usage() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_USAGE, []); + } + + public static function warp_permissionMessage() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_PERMISSIONMESSAGE, []); + } + + public static function warp_senderNotOnline() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_SENDERNOTONLINE, []); + } + + public static function warp_invalidPlotWorld(Translatable|string $world_name) : Translatable { + return new Translatable(KnownTranslationKeys::WARP_INVALIDPLOTWORLD, [ + 0 => $world_name, + ]); + } + + public static function warp_invalidXCoordinate(Translatable|string $x_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::WARP_INVALIDXCOORDINATE, [ + 0 => $x_coordinate, + ]); + } + + public static function warp_invalidZCoordinate(Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::WARP_INVALIDZCOORDINATE, [ + 0 => $z_coordinate, + ]); + } + + public static function warp_loadPlotError() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_LOADPLOTERROR, []); + } + + public static function warp_noPlotOwner() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_NOPLOTOWNER, []); + } + + public static function warp_teleportError() : Translatable { + return new Translatable(KnownTranslationKeys::WARP_TELEPORTERROR, []); + } + + public static function warp_success(Translatable|string $world_name, Translatable|string $x_coordinate, Translatable|string $z_coordinate) : Translatable { + return new Translatable(KnownTranslationKeys::WARP_SUCCESS, [ + 0 => $world_name, + 1 => $x_coordinate, + 2 => $z_coordinate, + ]); + } + +} \ No newline at end of file diff --git a/src/ColinHDev/CPlot/language/KnownTranslationKeys.php b/src/ColinHDev/CPlot/language/KnownTranslationKeys.php new file mode 100644 index 0000000..e2baf38 --- /dev/null +++ b/src/ColinHDev/CPlot/language/KnownTranslationKeys.php @@ -0,0 +1,554 @@ + Date: Fri, 7 Jul 2023 01:24:20 +0200 Subject: [PATCH 2/8] DataProvider: updatePlayerData() now returns the final PlayerData instance --- .../CPlot/listener/PlayerLoginListener.php | 16 +++++++++- src/ColinHDev/CPlot/provider/DataProvider.php | 32 ++++++++----------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/ColinHDev/CPlot/listener/PlayerLoginListener.php b/src/ColinHDev/CPlot/listener/PlayerLoginListener.php index 76acd70..9c0fe24 100644 --- a/src/ColinHDev/CPlot/listener/PlayerLoginListener.php +++ b/src/ColinHDev/CPlot/listener/PlayerLoginListener.php @@ -4,6 +4,7 @@ namespace ColinHDev\CPlot\listener; +use ColinHDev\CPlot\player\PlayerData; use ColinHDev\CPlot\provider\DataProvider; use ColinHDev\CPlot\provider\LanguageManager; use pocketmine\event\Listener; @@ -23,7 +24,20 @@ public function onPlayerLogin(PlayerLoginEvent $event) : void { $player->getXuid(), $player->getName() ), - null, + static function(?PlayerData $playerData) use ($player) : void { + if (!$player->isConnected()) { + return; + } + if ($playerData === null) { + $player->kick( + LanguageManager::getInstance()->getProvider()->translateForCommandSender( + $player, + ["prefix", "playerLogin.savePlayerDataError"] + ) + ); + return; + } + }, static function() use ($player) : void { if (!$player->isConnected()) { return; diff --git a/src/ColinHDev/CPlot/provider/DataProvider.php b/src/ColinHDev/CPlot/provider/DataProvider.php index ec54b6b..637affb 100644 --- a/src/ColinHDev/CPlot/provider/DataProvider.php +++ b/src/ColinHDev/CPlot/provider/DataProvider.php @@ -492,40 +492,39 @@ private function awaitPlayerSettings(int $playerID) : Generator { } /** - * @phpstan-return Generator + * @phpstan-return Generator */ public function updatePlayerData(?string $playerUUID, ?string $playerXUID, ?string $playerName) : Generator { $playerUUID = ($playerUUID === "" ? null : $playerUUID); $playerXUID = ($playerXUID === "" ? null : $playerXUID); $playerName = ($playerName === "" ? null : $playerName); - $playerData = yield $this->awaitPlayerDataByData($playerUUID, $playerXUID, $playerName); + $lastJoin = time(); + $playerData = yield from $this->awaitPlayerDataByData($playerUUID, $playerXUID, $playerName); if (!($playerData instanceof PlayerData)) { - yield $this->database->asyncInsert( + yield from $this->database->asyncInsert( self::SET_NEW_PLAYERDATA, [ "playerUUID" => $playerUUID, "playerXUID" => $playerXUID, "playerName" => $playerName, - "lastJoin" => date("d.m.Y H:i:s") + "lastJoin" => date("d.m.Y H:i:s", $lastJoin) ] ); - return; + return yield from $this->awaitPlayerDataByData($playerUUID, $playerXUID, $playerName); } $playerID = $playerData->getPlayerID(); - yield $this->database->asyncInsert( + yield from $this->database->asyncInsert( self::SET_PLAYERDATA, [ "playerID" => $playerID, "playerUUID" => $playerUUID, "playerXUID" => $playerXUID, "playerName" => $playerName, - "lastJoin" => date("d.m.Y H:i:s") + "lastJoin" => date("d.m.Y H:i:s", $lastJoin) ] ); - $this->caches[CacheIDs::CACHE_PLAYER]->cacheObject( - $playerID, - new PlayerData($playerID, $playerUUID, $playerXUID, $playerName, time(), $playerData->getSettings()) - ); + $updatedPlayerData = new PlayerData($playerID, $playerUUID, $playerXUID, $playerName, $lastJoin, $playerData->getSettings()); + $this->caches[CacheIDs::CACHE_PLAYER]->cacheObject($playerID, $updatedPlayerData); if (is_string($playerUUID)) { $this->caches[CacheIDs::CACHE_PLAYER_UUID]->cacheObject($playerUUID, $playerID); } @@ -535,6 +534,7 @@ public function updatePlayerData(?string $playerUUID, ?string $playerXUID, ?stri if (is_string($playerName)) { $this->caches[CacheIDs::CACHE_PLAYER_NAME]->cacheObject($playerName, $playerID); } + return $updatedPlayerData; } /** @@ -1533,15 +1533,9 @@ private function createPlayerDataEntry(string $playerName) : Generator { } // register filler player data - yield from $this->updatePlayerData( - null, // doesn't matter what is input at this point. will overwrite on login - $XUID, - $playerName - ); - // queriying now that player data updated /** @var PlayerData|null $playerData */ - $playerData = yield from $this->awaitPlayerDataByData( - null, + $playerData = yield from $this->updatePlayerData( + null, // doesn't matter what is input at this point. will overwrite on login $XUID, $playerName ); From e0bfce7c88a41241cbf1e9bad3b0a1e6d6e98ff8 Mon Sep 17 00:00:00 2001 From: ColinHDev Date: Mon, 10 Jul 2023 00:51:15 +0200 Subject: [PATCH 3/8] language manager changes --- src/ColinHDev/CPlot/commands/PlotCommand.php | 2 +- src/ColinHDev/CPlot/commands/Subcommand.php | 2 +- .../CPlot/language/LanguageManager.php | 63 ++++++++++ .../CPlot/listener/PlayerLoginListener.php | 2 +- .../CPlot/listener/PlayerMoveListener.php | 9 +- .../CPlot/provider/CPlotLanguageProvider.php | 117 ------------------ .../CPlot/provider/LanguageManager.php | 33 ----- .../CPlot/provider/LanguageProvider.php | 41 ------ 8 files changed, 71 insertions(+), 198 deletions(-) create mode 100644 src/ColinHDev/CPlot/language/LanguageManager.php delete mode 100644 src/ColinHDev/CPlot/provider/CPlotLanguageProvider.php delete mode 100644 src/ColinHDev/CPlot/provider/LanguageManager.php delete mode 100644 src/ColinHDev/CPlot/provider/LanguageProvider.php diff --git a/src/ColinHDev/CPlot/commands/PlotCommand.php b/src/ColinHDev/CPlot/commands/PlotCommand.php index 52d70ed..4514f20 100644 --- a/src/ColinHDev/CPlot/commands/PlotCommand.php +++ b/src/ColinHDev/CPlot/commands/PlotCommand.php @@ -33,7 +33,7 @@ use ColinHDev\CPlot\commands\subcommands\WallSubcommand; use ColinHDev\CPlot\commands\subcommands\WarpSubcommand; use ColinHDev\CPlot\CPlot; -use ColinHDev\CPlot\provider\LanguageManager; +use ColinHDev\CPlot\language\LanguageManager; use ColinHDev\CPlot\utils\ParseUtils; use InvalidArgumentException; use pocketmine\command\Command; diff --git a/src/ColinHDev/CPlot/commands/Subcommand.php b/src/ColinHDev/CPlot/commands/Subcommand.php index 40f50c1..466d3b7 100644 --- a/src/ColinHDev/CPlot/commands/Subcommand.php +++ b/src/ColinHDev/CPlot/commands/Subcommand.php @@ -4,7 +4,7 @@ namespace ColinHDev\CPlot\commands; -use ColinHDev\CPlot\provider\LanguageManager; +use ColinHDev\CPlot\language\LanguageManager; use ColinHDev\CPlot\provider\LanguageProvider; use ColinHDev\CPlot\utils\APIHolder; use ColinHDev\CPlot\utils\ParseUtils; diff --git a/src/ColinHDev/CPlot/language/LanguageManager.php b/src/ColinHDev/CPlot/language/LanguageManager.php new file mode 100644 index 0000000..229be8b --- /dev/null +++ b/src/ColinHDev/CPlot/language/LanguageManager.php @@ -0,0 +1,63 @@ + */ + private array $languages; + + public function __construct() { + /** @phpstan-var array{fallback: LanguageIdentifier, aliases: array} $languageSettings */ + $languageSettings = ResourceManager::getInstance()->getConfig()->get("language", []); + $this->fallbackLanguage = strtolower($languageSettings["fallback"]); + $languageAliases = $languageSettings["aliases"]; + + $dir = scandir(CPlot::getInstance()->getDataFolder() . "language"); + if ($dir !== false) { + foreach ($dir as $file) { + /** @phpstan-var array{dirname: string, basename: string, extension?: string, filename: string} $fileData */ + $fileData = pathinfo($file); + if (!isset($fileData["extension"]) || $fileData["extension"] !== "ini") { + continue; + } + $languageName = strtolower($fileData["filename"]); + $language = new Language( + $languageName, + CPlot::getInstance()->getDataFolder() . "language", + $this->fallbackLanguage + ); + $this->languages[$languageName] = $language; + foreach ($languageAliases as $languageAlias => $alias) { + if (strtolower($alias) === $languageName) { + $this->languages[strtolower($languageAlias)] = $language; + unset($languageAliases[$languageAlias]); + } + } + } + } + } + + /** + * Returns the language for the given identifier. If the language does not exist, the fallback language is returned. + */ + public function getLanguage(string $language) : Language { + return $this->languages[$language] ?? $this->languages[$this->fallbackLanguage]; + } +} \ No newline at end of file diff --git a/src/ColinHDev/CPlot/listener/PlayerLoginListener.php b/src/ColinHDev/CPlot/listener/PlayerLoginListener.php index 9c0fe24..16e711f 100644 --- a/src/ColinHDev/CPlot/listener/PlayerLoginListener.php +++ b/src/ColinHDev/CPlot/listener/PlayerLoginListener.php @@ -4,9 +4,9 @@ namespace ColinHDev\CPlot\listener; +use ColinHDev\CPlot\language\LanguageManager; use ColinHDev\CPlot\player\PlayerData; use ColinHDev\CPlot\provider\DataProvider; -use ColinHDev\CPlot\provider\LanguageManager; use pocketmine\event\Listener; use pocketmine\event\player\PlayerLoginEvent; use SOFe\AwaitGenerator\Await; diff --git a/src/ColinHDev/CPlot/listener/PlayerMoveListener.php b/src/ColinHDev/CPlot/listener/PlayerMoveListener.php index 4ffa813..d938881 100644 --- a/src/ColinHDev/CPlot/listener/PlayerMoveListener.php +++ b/src/ColinHDev/CPlot/listener/PlayerMoveListener.php @@ -9,6 +9,7 @@ use ColinHDev\CPlot\event\PlayerEnterPlotEvent; use ColinHDev\CPlot\event\PlayerLeavePlotEvent; use ColinHDev\CPlot\event\PlayerLeftPlotEvent; +use ColinHDev\CPlot\language\LanguageManager; use ColinHDev\CPlot\player\PlayerData; use ColinHDev\CPlot\player\settings\Settings; use ColinHDev\CPlot\plots\flags\Flags; @@ -17,8 +18,8 @@ use ColinHDev\CPlot\plots\Plot; use ColinHDev\CPlot\plots\TeleportDestination; use ColinHDev\CPlot\provider\DataProvider; -use ColinHDev\CPlot\provider\LanguageManager; use ColinHDev\CPlot\utils\APIHolder; +use Generator; use pocketmine\event\Listener; use pocketmine\event\player\PlayerMoveEvent; use pocketmine\player\Player; @@ -85,9 +86,9 @@ public function onPlayerMove(PlayerMoveEvent $event) : void { * could not be synchronously loaded. * So we call this method to at least process the player's movement, although we no longer can cancel the * {@see PlayerMoveEvent} itself. - * @phpstan-return \Generator + * @phpstan-return Generator */ - private function onPlayerAsyncMove(PlayerMoveEvent $event) : \Generator { + private function onPlayerAsyncMove(PlayerMoveEvent $event) : Generator { /** @var Plot|false $fromPlot */ $fromPlot = yield from Await::promise( fn(Closure $resolve, Closure $reject) => $this->getAPI()->getOrLoadPlotAtPosition($event->getFrom())->onCompletion($resolve, $reject) @@ -128,7 +129,7 @@ private function onPlayerAsyncMove(PlayerMoveEvent $event) : \Generator { * @param Player $player The player that entered the plot. */ private function onPlotEnter(Plot $plot, Player $player) : void { - Await::f2c(static function() use($plot, $player) : \Generator { + Await::f2c(static function() use($plot, $player) : Generator { $languageProvider = LanguageManager::getInstance()->getProvider(); // settings on plot enter $playerData = yield from DataProvider::getInstance()->awaitPlayerDataByPlayer($player); diff --git a/src/ColinHDev/CPlot/provider/CPlotLanguageProvider.php b/src/ColinHDev/CPlot/provider/CPlotLanguageProvider.php deleted file mode 100644 index 22226c1..0000000 --- a/src/ColinHDev/CPlot/provider/CPlotLanguageProvider.php +++ /dev/null @@ -1,117 +0,0 @@ - */ - private array $languages; - - public function __construct() { - /** @phpstan-var array{fallback: LanguageIdentifier, aliases: array} $languageSettings */ - $languageSettings = ResourceManager::getInstance()->getConfig()->get("language", []); - $this->fallbackLanguage = strtolower($languageSettings["fallback"]); - $languageAliases = $languageSettings["aliases"]; - - $dir = scandir(CPlot::getInstance()->getDataFolder() . "language"); - if ($dir !== false) { - foreach ($dir as $file) { - /** @phpstan-var array{dirname: string, basename: string, extension?: string, filename: string} $fileData */ - $fileData = pathinfo($file); - if (!isset($fileData["extension"]) || $fileData["extension"] !== "ini") { - continue; - } - $languageName = strtolower($fileData["filename"]); - $language = new Language( - $languageName, - CPlot::getInstance()->getDataFolder() . "language", - $this->fallbackLanguage - ); - $this->languages[$languageName] = $language; - foreach ($languageAliases as $languageAlias => $alias) { - if (strtolower($alias) === $languageName) { - $this->languages[strtolower($languageAlias)] = $language; - unset($languageAliases[$languageAlias]); - } - } - } - } - } - - public function translateString(array|string $keys) : string { - return $this->buildMessage($this->languages[$this->fallbackLanguage], $keys); - } - - public function translateForCommandSender(CommandSender $sender, array|string $keys) : string { - return $this->buildMessage($this->getLanguage($sender), $keys); - } - - public function sendMessage(CommandSender $sender, array|string $keys) : void { - if (!($sender instanceof Player)) { - $message = $this->translateString($keys); - } else { - if (!$sender->isOnline()) { - return; - } - $message = $this->buildMessage($this->getLanguage($sender), $keys); - } - $sender->sendMessage($message); - } - - public function sendTip(Player $player, array|string $keys) : void { - if (!$player->isOnline()) { - return; - } - $player->sendTip( - $this->buildMessage($this->getLanguage($player), $keys) - ); - } - - private function getLanguage(CommandSender $sender) : Language { - if (!($sender instanceof Player)) { - $language = $this->languages[$this->fallbackLanguage]; - } else { - $locale = strtolower($sender->getLocale()); - $language = $this->languages[$locale] ?? $this->languages[$this->fallbackLanguage]; - } - return $language; - } - - /** - * @phpstan-param array>|MessageKey $keys - */ - private function buildMessage(Language $language, array|string $keys) : string { - if (is_string($keys)) { - $keys = [$keys]; - } - $message = ""; - foreach ($keys as $key => $value) { - if (is_string($key)) { - if (!is_array($value)) { - $value = [$value]; - } - $message .= $language->translateString($key, $value); - } else { - /** @phpstan-var string $value */ - $message .= $language->get($value); - } - } - return $message; - } -} \ No newline at end of file diff --git a/src/ColinHDev/CPlot/provider/LanguageManager.php b/src/ColinHDev/CPlot/provider/LanguageManager.php deleted file mode 100644 index 8fd7b09..0000000 --- a/src/ColinHDev/CPlot/provider/LanguageManager.php +++ /dev/null @@ -1,33 +0,0 @@ -provider = new CPlotLanguageProvider(); - } - - /** - * Returns the {@see LanguageProvider} instance that is currently used for CPlot's language integration and - * can be used to interact with the specific language provider. - */ - public function getProvider() : LanguageProvider { - return $this->provider; - } - - /** - * Change the current {@see LanguageProvider} instance. - * This method can be used to make CPlot compatible with your own, (maybe closed-source) language manager. - */ - public function setProvider(LanguageProvider $provider) : void { - $this->provider = $provider; - } -} \ No newline at end of file diff --git a/src/ColinHDev/CPlot/provider/LanguageProvider.php b/src/ColinHDev/CPlot/provider/LanguageProvider.php deleted file mode 100644 index 5fe24a1..0000000 --- a/src/ColinHDev/CPlot/provider/LanguageProvider.php +++ /dev/null @@ -1,41 +0,0 @@ ->|MessageKey $keys - */ - abstract public function translateString(array|string $keys) : string; - - /** - * This method is used to translate a message for the given {@see CommandSender}. - * @phpstan-param array>|MessageKey $keys - */ - abstract public function translateForCommandSender(CommandSender $sender, array|string $keys) : string; - - /** - * This method is used to send a message to the given {@see CommandSender} (e.g. a player or the console). - * @phpstan-param array>|MessageKey $keys - */ - abstract public function sendMessage(CommandSender $sender, array|string $keys) : void; - - /** - * This method is used to send a tip to the given {@see Player}. - * @phpstan-param array>|MessageKey $keys - */ - abstract public function sendTip(Player $player, array|string $keys) : void; -} \ No newline at end of file From d2d033acc91e17c66b1363f08069877198fba7fb Mon Sep 17 00:00:00 2001 From: ColinHDev Date: Mon, 10 Jul 2023 00:59:37 +0200 Subject: [PATCH 4/8] LanguageManager: Fixed some doc comments and added getDefaultLanguage() method --- .../CPlot/language/LanguageManager.php | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ColinHDev/CPlot/language/LanguageManager.php b/src/ColinHDev/CPlot/language/LanguageManager.php index 229be8b..1644f39 100644 --- a/src/ColinHDev/CPlot/language/LanguageManager.php +++ b/src/ColinHDev/CPlot/language/LanguageManager.php @@ -12,19 +12,15 @@ use function scandir; use function strtolower; -/** - * @phpstan-type LanguageIdentifier string - */ final class LanguageManager { use SingletonTrait; - /** @phpstan-var LanguageIdentifier */ private string $fallbackLanguage; - /** @phpstan-var array */ + /** @var array */ private array $languages; public function __construct() { - /** @phpstan-var array{fallback: LanguageIdentifier, aliases: array} $languageSettings */ + /** @phpstan-var array{fallback: string, aliases: array} $languageSettings */ $languageSettings = ResourceManager::getInstance()->getConfig()->get("language", []); $this->fallbackLanguage = strtolower($languageSettings["fallback"]); $languageAliases = $languageSettings["aliases"]; @@ -54,10 +50,20 @@ public function __construct() { } } + /** + * Returns the default language. + * @return Language The default language. + */ + public function getDefaultLanguage() : Language { + return $this->languages[$this->fallbackLanguage]; + } + /** * Returns the language for the given identifier. If the language does not exist, the fallback language is returned. + * @param string $language The language identifier. + * @return Language The language matching the identifier or the default language. */ public function getLanguage(string $language) : Language { - return $this->languages[$language] ?? $this->languages[$this->fallbackLanguage]; + return $this->languages[$language] ?? $this->getDefaultLanguage(); } } \ No newline at end of file From 1f37c9cdc376f0023671085bb4864fcf7d763935 Mon Sep 17 00:00:00 2001 From: ColinHDev Date: Mon, 10 Jul 2023 01:12:12 +0200 Subject: [PATCH 5/8] LanguageManager: Added getLanguageForCommandSender() method --- src/ColinHDev/CPlot/language/LanguageManager.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/ColinHDev/CPlot/language/LanguageManager.php b/src/ColinHDev/CPlot/language/LanguageManager.php index 1644f39..7038941 100644 --- a/src/ColinHDev/CPlot/language/LanguageManager.php +++ b/src/ColinHDev/CPlot/language/LanguageManager.php @@ -6,7 +6,9 @@ use ColinHDev\CPlot\CPlot; use ColinHDev\CPlot\ResourceManager; +use pocketmine\command\CommandSender; use pocketmine\lang\Language; +use pocketmine\player\Player; use pocketmine\utils\SingletonTrait; use function pathinfo; use function scandir; @@ -66,4 +68,16 @@ public function getDefaultLanguage() : Language { public function getLanguage(string $language) : Language { return $this->languages[$language] ?? $this->getDefaultLanguage(); } + + /** + * Returns the language for the given command sender. + * @param CommandSender $sender The command sender. + * @return Language The language for the command sender. + */ + public function getLanguageForCommandSender(CommandSender $sender) : Language { + if ($sender instanceof Player) { + return $this->getLanguage($sender->getLocale()); + } + return $this->getDefaultLanguage(); + } } \ No newline at end of file From bebab619c6a3f35bc699e489d5e6e4abe4c4e401 Mon Sep 17 00:00:00 2001 From: ColinHDev Date: Thu, 13 Jul 2023 22:14:41 +0200 Subject: [PATCH 6/8] introduced session classes --- .../CPlot/commands/CommandExecutor.php | 45 +++++++++++++++++++ .../CPlot/commands/CommandExecutorManager.php | 28 ++++++++++++ .../CPlot/commands/PlayerSession.php | 37 +++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 src/ColinHDev/CPlot/commands/CommandExecutor.php create mode 100644 src/ColinHDev/CPlot/commands/CommandExecutorManager.php create mode 100644 src/ColinHDev/CPlot/commands/PlayerSession.php diff --git a/src/ColinHDev/CPlot/commands/CommandExecutor.php b/src/ColinHDev/CPlot/commands/CommandExecutor.php new file mode 100644 index 0000000..065284a --- /dev/null +++ b/src/ColinHDev/CPlot/commands/CommandExecutor.php @@ -0,0 +1,45 @@ +sender = $sender; + $this->language = LanguageManager::getInstance()->getLanguageForCommandSender($sender); + } + + public function getSender() : CommandSender { + return $this->sender; + } + + public function getLanguage() : Language { + return $this->language; + } + + public function sendMessage(Translatable|string ...$messages) : void { + $this->sender->sendMessage($this->translate(...$messages)); + } + + public function translate(Translatable|string ...$messages) : string { + $result = ""; + foreach ($messages as $message) { + if ($message instanceof Translatable) { + $result .= $this->language->translate($message); + } else { + $result .= $message; + } + } + return $result; + } +} \ No newline at end of file diff --git a/src/ColinHDev/CPlot/commands/CommandExecutorManager.php b/src/ColinHDev/CPlot/commands/CommandExecutorManager.php new file mode 100644 index 0000000..0460335 --- /dev/null +++ b/src/ColinHDev/CPlot/commands/CommandExecutorManager.php @@ -0,0 +1,28 @@ +playerSessions = new WeakMap(); + } + + public function registerPlayerSession(Player $player, PlayerData $playerData) : void { + $this->playerSessions[$player] = new PlayerSession($player, $playerData); + } + + public function getPlayerSession(Player $player) : ?PlayerSession { + return $this->playerSessions[$player] ?? null; + } +} \ No newline at end of file diff --git a/src/ColinHDev/CPlot/commands/PlayerSession.php b/src/ColinHDev/CPlot/commands/PlayerSession.php new file mode 100644 index 0000000..b7275c0 --- /dev/null +++ b/src/ColinHDev/CPlot/commands/PlayerSession.php @@ -0,0 +1,37 @@ +playerData = $playerData; + } + + public function getSender() : Player { + assert($this->sender instanceof Player); + return $this->sender; + } + + public function getPlayer() : Player { + return $this->getSender(); + } + + public function getPlayerData() : PlayerData { + return $this->playerData; + } + + public function sendTip(Translatable|string ...$messages) : void { + $this->getPlayer()->sendTip($this->translate(...$messages)); + } +} \ No newline at end of file From 662060870f916b00d26211ed6a181292b4e5b198 Mon Sep 17 00:00:00 2001 From: ColinHDev Date: Thu, 13 Jul 2023 22:15:12 +0200 Subject: [PATCH 7/8] introduced session classes v2 --- .../CPlot/listener/PlayerLoginListener.php | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/ColinHDev/CPlot/listener/PlayerLoginListener.php b/src/ColinHDev/CPlot/listener/PlayerLoginListener.php index 16e711f..164ebad 100644 --- a/src/ColinHDev/CPlot/listener/PlayerLoginListener.php +++ b/src/ColinHDev/CPlot/listener/PlayerLoginListener.php @@ -4,7 +4,9 @@ namespace ColinHDev\CPlot\listener; -use ColinHDev\CPlot\language\LanguageManager; +use ColinHDev\CPlot\commands\CommandExecutor; +use ColinHDev\CPlot\commands\CommandExecutorManager; +use ColinHDev\CPlot\language\KnownTranslationFactory; use ColinHDev\CPlot\player\PlayerData; use ColinHDev\CPlot\provider\DataProvider; use pocketmine\event\Listener; @@ -24,30 +26,27 @@ public function onPlayerLogin(PlayerLoginEvent $event) : void { $player->getXuid(), $player->getName() ), - static function(?PlayerData $playerData) use ($player) : void { + static function(?PlayerData $playerData) use($player) : void { if (!$player->isConnected()) { return; } if ($playerData === null) { - $player->kick( - LanguageManager::getInstance()->getProvider()->translateForCommandSender( - $player, - ["prefix", "playerLogin.savePlayerDataError"] - ) - ); + $player->kick((new CommandExecutor($player))->translate( + KnownTranslationFactory::prefix(), + KnownTranslationFactory::playerLogin_savePlayerDataError() + )); return; } + CommandExecutorManager::getInstance()->registerPlayerSession($player, $playerData); }, - static function() use ($player) : void { + static function() use($player) : void { if (!$player->isConnected()) { return; } - $player->kick( - LanguageManager::getInstance()->getProvider()->translateForCommandSender( - $player, - ["prefix", "playerLogin.savePlayerDataError"] - ) - ); + $player->kick((new CommandExecutor($player))->translate( + KnownTranslationFactory::prefix(), + KnownTranslationFactory::playerLogin_savePlayerDataError() + )); } ); } From 389b61a2d9e875242786e4e24e529cc1b6c2d26c Mon Sep 17 00:00:00 2001 From: ColinHDev Date: Wed, 19 Jul 2023 18:24:23 +0200 Subject: [PATCH 8/8] pushing changes --- .../CPlot/commands/AsyncSubcommand.php | 6 ++--- .../CPlot/commands/CommandExecutor.php | 1 + src/ColinHDev/CPlot/commands/Subcommand.php | 27 ++++--------------- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/ColinHDev/CPlot/commands/AsyncSubcommand.php b/src/ColinHDev/CPlot/commands/AsyncSubcommand.php index b8c9811..5ad4273 100644 --- a/src/ColinHDev/CPlot/commands/AsyncSubcommand.php +++ b/src/ColinHDev/CPlot/commands/AsyncSubcommand.php @@ -3,13 +3,13 @@ declare(strict_types=1); namespace ColinHDev\CPlot\commands; + use Generator; -use pocketmine\command\CommandSender; use SOFe\AwaitGenerator\Await; abstract class AsyncSubcommand extends Subcommand { - final public function execute(CommandSender $sender, array $args) : void { + final public function execute(CommandExecutor $sender, array $args) : void { Await::g2c( $this->executeAsync($sender, $args) ); @@ -21,5 +21,5 @@ final public function execute(CommandSender $sender, array $args) : void { * @param string[] $args * @phpstan-return Generator */ - abstract public function executeAsync(CommandSender $sender, array $args) : Generator; + abstract public function executeAsync(CommandExecutor $sender, array $args) : Generator; } \ No newline at end of file diff --git a/src/ColinHDev/CPlot/commands/CommandExecutor.php b/src/ColinHDev/CPlot/commands/CommandExecutor.php index 065284a..513f3bc 100644 --- a/src/ColinHDev/CPlot/commands/CommandExecutor.php +++ b/src/ColinHDev/CPlot/commands/CommandExecutor.php @@ -37,6 +37,7 @@ public function translate(Translatable|string ...$messages) : string { if ($message instanceof Translatable) { $result .= $this->language->translate($message); } else { + $result .= $message; } } diff --git a/src/ColinHDev/CPlot/commands/Subcommand.php b/src/ColinHDev/CPlot/commands/Subcommand.php index 466d3b7..c8d7c15 100644 --- a/src/ColinHDev/CPlot/commands/Subcommand.php +++ b/src/ColinHDev/CPlot/commands/Subcommand.php @@ -4,11 +4,11 @@ namespace ColinHDev\CPlot\commands; +use ColinHDev\CPlot\language\KnownTranslationFactory; use ColinHDev\CPlot\language\LanguageManager; use ColinHDev\CPlot\provider\LanguageProvider; use ColinHDev\CPlot\utils\APIHolder; use ColinHDev\CPlot\utils\ParseUtils; -use pocketmine\command\CommandSender; /** * @phpstan-import-type MessageKey from LanguageProvider @@ -46,10 +46,11 @@ public function getPermission() : string { return $this->permission; } - public function testPermission(CommandSender $sender) : bool { - if ($sender->hasPermission($this->permission)) { + public function testPermission(CommandExecutor $sender) : bool { + if ($sender->getSender()->hasPermission($this->permission)) { return true; } + $sender->sendMessage(KnownTranslationFactory::prefix()); self::sendMessage($sender, ["prefix", $this->key . ".permissionMessage"]); return false; } @@ -58,23 +59,5 @@ public function testPermission(CommandSender $sender) : bool { * This method contains the code you want to be executed when the command is run. * @param string[] $args */ - abstract public function execute(CommandSender $sender, array $args) : void; - - /** - * Utility method to send a message to a command sender, while also removing some boilerplate code within the - * subcommand classes. - * @phpstan-param array>|MessageKey $keys - */ - final protected static function sendMessage(CommandSender $sender, array|string $keys) : void { - LanguageManager::getInstance()->getProvider()->sendMessage($sender, $keys); - } - - /** - * Utility method to translate a message for a command sender, while also removing some boilerplate code within the - * subcommand classes. - * @phpstan-param array>|MessageKey $keys - */ - final protected static function translateForCommandSender(CommandSender $sender, array|string $keys) : string { - return LanguageManager::getInstance()->getProvider()->translateForCommandSender($sender, $keys); - } + abstract public function execute(CommandExecutor $sender, array $args) : void; } \ No newline at end of file