aboutsummaryrefslogtreecommitdiff
path: root/azalea-language/src
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2026-03-24 11:15:56 -0500
committerGitHub <noreply@github.com>2026-03-24 11:15:56 -0500
commiteeaf1435e81d9cbd8daa0efa22029c1f259a64b5 (patch)
tree3486e26d5409708370e4e259d240fb77c6e1e439 /azalea-language/src
parent41a9ae6aaff77646c08c64ac1334a8cc6081c24f (diff)
downloadazalea-drasl-eeaf1435e81d9cbd8daa0efa22029c1f259a64b5.tar.xz
26.1 (#316)
* start updating to 26.1 * start updating to 26.1-snapshot-6 * 26.1-snapshot-6 * 26.1-snapshot-10 * 26.1-rc-1 * fix tests * 26.1-rc-2 and sort default components * 26.1 * update changelog
Diffstat (limited to 'azalea-language/src')
-rw-r--r--azalea-language/src/en_us.json123
1 files changed, 121 insertions, 2 deletions
diff --git a/azalea-language/src/en_us.json b/azalea-language/src/en_us.json
index 04b3fc47..5a89301e 100644
--- a/azalea-language/src/en_us.json
+++ b/azalea-language/src/en_us.json
@@ -1673,6 +1673,7 @@
"block.minecraft.glowstone": "Glowstone",
"block.minecraft.gold_block": "Block of Gold",
"block.minecraft.gold_ore": "Gold Ore",
+ "block.minecraft.golden_dandelion": "Golden Dandelion",
"block.minecraft.granite": "Granite",
"block.minecraft.granite_slab": "Granite Slab",
"block.minecraft.granite_stairs": "Granite Stairs",
@@ -2036,6 +2037,7 @@
"block.minecraft.potted_dead_bush": "Potted Dead Bush",
"block.minecraft.potted_fern": "Potted Fern",
"block.minecraft.potted_flowering_azalea_bush": "Potted Flowering Azalea",
+ "block.minecraft.potted_golden_dandelion": "Potted Golden Dandelion",
"block.minecraft.potted_jungle_sapling": "Potted Jungle Sapling",
"block.minecraft.potted_lily_of_the_valley": "Potted Lily of the Valley",
"block.minecraft.potted_mangrove_propagule": "Potted Mangrove Propagule",
@@ -2436,8 +2438,20 @@
"book.sign.titlebox": "Title",
"book.signButton": "Sign",
"book.view.title": "Book View Screen",
+ "build.spawn_protection": "%s is under spawn protection",
"build.tooHigh": "Height limit for building is %s",
+ "build.tooLow": "Minimum height for building is %s",
+ "chat_restriction.chat_and_commands_disabled_by_options": "Chat is restricted in client settings.",
+ "chat_restriction.chat_disabled_by_options": "Player chat is restricted in client settings.",
+ "chat_restriction.chat_disabled_by_options.action": "Go to the Chat Settings screen",
+ "chat_restriction.disabled_by_launcher": "Chat is restricted by the launcher",
+ "chat_restriction.disabled_by_profile": "Chat is restricted by profile settings.",
+ "chat_restriction.disabled_by_profile.action": "Go to your profile settings",
+ "chat_screen.commands_not_allowed": "Sending commands is not allowed",
"chat_screen.message": "Message to send: %s",
+ "chat_screen.messages_not_allowed": "Sending chat messages is not allowed",
+ "chat_screen.restricted": "Chat is restricted. Click this message for details.",
+ "chat_screen.restricted.narration": "Chat is restricted. Go to the Restrictions screen in World Options.",
"chat_screen.title": "Chat screen",
"chat_screen.usage": "Input message and press Enter to send",
"chat.cannotSend": "Cannot send chat message",
@@ -2512,6 +2526,7 @@
"command.expected.separator": "Expected whitespace to end one argument, but found trailing data",
"command.failed": "An unexpected error occurred trying to execute that command",
"command.forkLimit": "Maximum number of contexts (%s) reached",
+ "command.trailing_data": "Trailing data found: %s",
"command.unknown.argument": "Incorrect argument for command",
"command.unknown.command": "Unknown or incomplete command. See below for error",
"commands.advancement.criterionNotFound": "The advancement %1$s does not contain the criterion '%2$s'",
@@ -2697,12 +2712,14 @@
"commands.experience.set.points.success.single": "Set %s experience points on %s",
"commands.fetchprofile.copy_component": "Copy Component",
"commands.fetchprofile.copy_text": "Copy %s",
+ "commands.fetchprofile.entity.success": "Resolved profile for entity %s: %s",
"commands.fetchprofile.failed_to_serialize": "Failed to serialize profile: %s",
"commands.fetchprofile.give_item": "Give Item",
"commands.fetchprofile.id.failure": "Failed to resolve profile for ID %s",
"commands.fetchprofile.id.success": "Resolved profile for ID %s: %s",
"commands.fetchprofile.name.failure": "Failed to resolve profile for name %s",
"commands.fetchprofile.name.success": "Resolved profile for name %s: %s",
+ "commands.fetchprofile.no_profile": "Entity %s has no profile",
"commands.fetchprofile.summon_mannequin": "Summon Mannequin",
"commands.fill.failed": "No blocks were filled",
"commands.fill.success": "Successfully filled %s block(s)",
@@ -2934,6 +2951,9 @@
"commands.summon.failed.uuid": "Unable to summon entity due to duplicate UUIDs",
"commands.summon.invalidPosition": "Invalid position for summon",
"commands.summon.success": "Summoned new %s",
+ "commands.swing.failed.notliving": "No living entities were found to swing",
+ "commands.swing.success.multiple": "Made %s entities swing their arms",
+ "commands.swing.success.single": "Made %s swing an arm",
"commands.tag.add.failed": "Target either already has the tag or has too many tags",
"commands.tag.add.success.multiple": "Added tag '%s' to %s entities",
"commands.tag.add.success.single": "Added tag '%s' to %s",
@@ -3024,8 +3044,20 @@
"commands.tick.step.stop.fail": "No tick step in progress",
"commands.tick.step.stop.success": "Interrupted the current tick step",
"commands.tick.step.success": "Stepping %s tick(s)",
+ "commands.time.no_default_clock": "There is no default clock in dimension %s",
+ "commands.time.no_time_marker_found": "Time marker %s does not exist for clock %s",
+ "commands.time.pause": "Paused clock %s",
"commands.time.query": "The time is %s",
+ "commands.time.query.absolute": "Clock %s is at %s tick(s)",
+ "commands.time.query.gametime": "The game time is %s tick(s)",
+ "commands.time.query.timeline": "Timeline %s is at %s tick(s)",
+ "commands.time.query.timeline.repetitions": "Timeline %s has passed %s repetition(s)",
+ "commands.time.rate": "Clock %s will now advance at %sx normal rate",
+ "commands.time.resume": "Resumed clock %s",
"commands.time.set": "Set the time to %s",
+ "commands.time.set.absolute": "Set %s to %s tick(s)",
+ "commands.time.set.time_marker": "Set %s to time marker %s",
+ "commands.time.wrong_timeline_for_clock": "Timeline %s is not valid for clock %s",
"commands.title.cleared.multiple": "Cleared titles for %s players",
"commands.title.cleared.single": "Cleared titles for %s",
"commands.title.reset.multiple": "Reset title options for %s players",
@@ -3420,6 +3452,11 @@
"download.pack.progress.percent": "Progress: %s%%",
"download.pack.title": "Downloading resource pack %s/%s",
"editGamerule.default": "Default: %s",
+ "editGamerule.inGame.button": "Edit Game Rules...",
+ "editGamerule.inGame.disabled.tooltip": "Updating game rules requires operator permissions.",
+ "editGamerule.inGame.discardChanges.message": "Are you sure you want to discard your pending game rule changes?",
+ "editGamerule.inGame.discardChanges.title": "Game rule Changes",
+ "editGamerule.inGame.downloadingGamerules": "Retrieving game rules...",
"editGamerule.title": "Edit Game Rules",
"effect.duration.infinite": "\u221e",
"effect.minecraft.absorption": "Absorption",
@@ -3841,6 +3878,7 @@
"gamerule.minecraft.fire_spread_radius_around_player.description": "The radius in blocks around a player in which fire can spread",
"gamerule.minecraft.player_movement_check": "Do player movement check",
"gamerule.minecraft.raids": "Do raids",
+ "gamerule.minecraft.universal_anger.description": "Angered neutral mobs attack any nearby player, not just the player that angered them. Works best if forgive_dead_players is disabled.",
"gamerule.mobExplosionDropDecay": "In mob explosions, some blocks won't drop their loot",
"gamerule.mobExplosionDropDecay.description": "Some of the drops from blocks destroyed by explosions caused by mobs are lost in the explosion.",
"gamerule.mobGriefing": "Allow destructive mob actions",
@@ -4028,6 +4066,7 @@
"gui.experience.level": "%s",
"gui.fileDropFailure.detail": "Rejected %s files",
"gui.fileDropFailure.title": "Failed to add files",
+ "gui.game_rule.search": "Search...",
"gui.hours": "%s hour(s)",
"gui.language.search": "Search...",
"gui.loadingMinecraft": "Loading Minecraft",
@@ -4081,6 +4120,7 @@
"gui.socialInteractions.title": "Social Interactions",
"gui.socialInteractions.tooltip.hide": "Hide messages",
"gui.socialInteractions.tooltip.report": "Report player",
+ "gui.socialInteractions.tooltip.report.chat_disabled_or_blocked": "This player can't be reported because chat is disabled or blocked",
"gui.socialInteractions.tooltip.report.disabled": "The reporting service is unavailable",
"gui.socialInteractions.tooltip.report.no_messages": "No reportable messages from player %s",
"gui.socialInteractions.tooltip.report.not_reportable": "This player can't be reported, because their chat messages can't be verified on this server",
@@ -4971,6 +5011,7 @@
"key.debug.dumpVersion": "Dump Version Info",
"key.debug.focusPause": "Toggle Lost Focus Pause",
"key.debug.fpsCharts": "FPS Charts",
+ "key.debug.lightmapTexture": "Lightmap Texture",
"key.debug.modifier": "Debug Modifier Key",
"key.debug.networkCharts": "Network Charts",
"key.debug.overlay": "Toggle Overlay",
@@ -5866,6 +5907,8 @@
"options.discrete_mouse_scroll": "Discrete Scrolling",
"options.entityDistanceScaling": "Entity Distance",
"options.entityShadows": "Entity Shadows",
+ "options.exclusiveFullscreen": "Exclusive Fullscreen",
+ "options.exclusiveFullscreen.warningTooltip": "This option might prevent some input methods from working.",
"options.font": "Font Settings...",
"options.font.title": "Font Settings",
"options.forceUnicodeFont": "Force Unicode Font",
@@ -5971,6 +6014,7 @@
"options.narrator.notavailable": "Not Available",
"options.narrator.off": "OFF",
"options.narrator.system": "Narrates System",
+ "options.needsRestart": "Option will be applied after restart.",
"options.notifications.display_time": "Notification Time",
"options.notifications.display_time.tooltip": "Affects the length of time that all notifications stay visible on the screen.",
"options.off": "OFF",
@@ -6052,6 +6096,8 @@
"options.vsync": "VSync",
"options.weatherRadius": "Weather Effect Radius",
"options.weatherRadius.tooltip": "Radius of the area where rain and snow effects are visible. Very low performance impact.",
+ "options.worldOptions.button": "World Options...",
+ "options.worldOptions.title": "World Options",
"outOfMemory.message": "Minecraft has run out of memory.\n\nThis could be caused by a bug in the game or by the Java Virtual Machine not being allocated enough memory.\n\nTo prevent world corruption, the current game has quit. We've tried to free up enough memory to let you go back to the main menu and back to playing, but this may not have worked.\n\nPlease restart the game if you see this message again.",
"outOfMemory.title": "Out of memory!",
"pack.available.title": "Available",
@@ -6270,8 +6316,19 @@
"resourcePack.title": "Select Resource Packs",
"resourcePack.vanilla.description": "The default look and feel of Minecraft",
"resourcePack.vanilla.name": "Default",
+ "restrictions_screen.button": "Restrictions...",
+ "restrictions_screen.permission.receive_player_messages.allowed": "You can receive messages from players",
+ "restrictions_screen.permission.receive_player_messages.denied": "You can't receive messages from players",
+ "restrictions_screen.permission.receive_system_messages.allowed": "You can receive system messages from the server",
+ "restrictions_screen.permission.receive_system_messages.denied": "You can't receive system messages from the server",
+ "restrictions_screen.permission.send_commands.allowed": "You can send commands",
+ "restrictions_screen.permission.send_commands.denied": "You can't send commands",
+ "restrictions_screen.permission.send_messages.allowed": "You can send chat messages",
+ "restrictions_screen.permission.send_messages.denied": "You can't send chat messages",
+ "restrictions_screen.title": "Restrictions",
"screenshot.failure": "Couldn't save screenshot: %s",
"screenshot.success": "Saved screenshot as %s",
+ "selecteWorld.backupRequiredTooltip": "Loading the world requires taking a backup first",
"selectServer.add": "Add Server",
"selectServer.defaultName": "Minecraft Server",
"selectServer.delete": "Delete",
@@ -6293,11 +6350,13 @@
"selectWorld.backupQuestion.customized": "Customized worlds are no longer supported",
"selectWorld.backupQuestion.downgrade": "Downgrading a world is not supported",
"selectWorld.backupQuestion.experimental": "Worlds using Experimental Settings are not supported",
+ "selectWorld.backupQuestion.file_fixing_required": "Create a backup before upgrading this world?",
"selectWorld.backupQuestion.snapshot": "Do you really want to load this world?",
"selectWorld.backupWarning.customized": "Unfortunately, we do not support customized worlds in this version of Minecraft. We can still load this world and keep everything the way it was, but any newly generated terrain will no longer be customized. We're sorry for the inconvenience!",
"selectWorld.backupWarning.downgrade": "This world was last played in version %s; you are on version %s. Downgrading a world could cause corruption - we cannot guarantee that it will load or work. If you still want to continue, please make a backup.",
"selectWorld.backupWarning.experimental": "This world uses experimental settings that could stop working at any time. We cannot guarantee it will load or work. Here be dragons!",
- "selectWorld.backupWarning.snapshot": "This world was last played in version %s; you are on version %s. Please make a backup in case you experience world corruptions.",
+ "selectWorld.backupWarning.file_fixing_required": "This world needs to be upgraded before you can play it. We strongly suggest creating a backup before continuing in case you experience world corruption.",
+ "selectWorld.backupWarning.snapshot": "This world was last played in version %s; you are on version %s. Please make a backup in case you experience world corruption.",
"selectWorld.bonusItems": "Bonus Chest",
"selectWorld.cheats": "Cheats",
"selectWorld.commands": "Commands",
@@ -6382,6 +6441,9 @@
"selectWorld.recreate.customized.title": "Customized worlds are no longer supported",
"selectWorld.recreate.error.text": "Something went wrong while trying to recreate a world.",
"selectWorld.recreate.error.title": "An error occurred!",
+ "selectWorld.requiresFileFixingTooltip.edit": "This world needs to be upgraded to the latest version before you can edit it due to underlying changes to the world format.",
+ "selectWorld.requiresFileFixingTooltip.play": "This world needs to be upgraded to the latest version before you can play it due to underlying changes to the world format.",
+ "selectWorld.requiresFileFixingTooltip.recreate": "This world needs to be upgraded to the latest version before you can recreate it due to underlying changes to the world format.",
"selectWorld.resource_load": "Preparing Resources...",
"selectWorld.resultFolder": "Will be saved in:",
"selectWorld.search": "search for worlds",
@@ -6394,11 +6456,14 @@
"selectWorld.tooltip.snapshot1": "Don't forget to back up this world",
"selectWorld.tooltip.snapshot2": "before you load it in this snapshot.",
"selectWorld.unable_to_load": "Unable to load worlds",
+ "selectWorld.upgrade_and_play": "Upgrade and Play",
"selectWorld.version": "Version:",
"selectWorld.versionJoinButton": "Load Anyway",
"selectWorld.versionQuestion": "Do you really want to load this world?",
"selectWorld.versionUnknown": "unknown",
"selectWorld.versionWarning": "This world was last played in version %s and loading it in this version could cause corruption!",
+ "selectWorld.waitingForBackup.message": "Depending on the size of your world, this may take a while. Please do not close the game or shut off your device.",
+ "selectWorld.waitingForBackup.title": "Creating Backup",
"selectWorld.warning.deprecated.question": "Some features used are deprecated and will stop working in the future. Do you wish to proceed?",
"selectWorld.warning.deprecated.title": "Warning! These settings are using deprecated features",
"selectWorld.warning.experimental.question": "These settings are experimental and could one day stop working. Do you wish to proceed?",
@@ -6406,6 +6471,7 @@
"selectWorld.warning.lowDiskSpace.description": "There is not much space left on your device.\nRunning out of disk space while in game can lead to your world being damaged.",
"selectWorld.warning.lowDiskSpace.title": "Warning! Low disk space!",
"selectWorld.world": "World",
+ "selectWorld.world_gen_settings_access": "Unable to read or access the world gen settings file! %s",
"sign.edit": "Edit Sign Message",
"sleep.not_possible": "No amount of rest can pass this night",
"sleep.players_sleeping": "%s/%s players sleeping",
@@ -6787,6 +6853,23 @@
"subtitles.entity.axolotl.idle_water": "Axolotl chirps",
"subtitles.entity.axolotl.splash": "Axolotl splashes",
"subtitles.entity.axolotl.swim": "Axolotl swims",
+ "subtitles.entity.baby_cat.ambient": "Kitten meows",
+ "subtitles.entity.baby_cat.beg_for_food": "Kitten begs",
+ "subtitles.entity.baby_cat.death": "Kitten dies",
+ "subtitles.entity.baby_cat.eat": "Kitten eats",
+ "subtitles.entity.baby_cat.hiss": "Kitten hisses",
+ "subtitles.entity.baby_cat.hurt": "Kitten hurts",
+ "subtitles.entity.baby_cat.purr": "Kitten purrs",
+ "subtitles.entity.baby_chicken.ambient": "Chick peeps",
+ "subtitles.entity.baby_chicken.death": "Chick dies",
+ "subtitles.entity.baby_chicken.hurts": "Chick hurts",
+ "subtitles.entity.baby_horse.ambient": "Foal neighs",
+ "subtitles.entity.baby_horse.angry": "Foal neighs",
+ "subtitles.entity.baby_horse.breathe": "Foal breathes",
+ "subtitles.entity.baby_horse.death": "Foal dies",
+ "subtitles.entity.baby_horse.eat": "Foal eats",
+ "subtitles.entity.baby_horse.hurt": "Foal hurts",
+ "subtitles.entity.baby_horse.land": "Foal lands",
"subtitles.entity.baby_nautilus.ambient": "Baby Nautilus chitters",
"subtitles.entity.baby_nautilus.ambient_land": "Baby Nautilus chitters",
"subtitles.entity.baby_nautilus.death": "Baby Nautilus dies",
@@ -6795,6 +6878,16 @@
"subtitles.entity.baby_nautilus.hurt": "Baby Nautilus hurts",
"subtitles.entity.baby_nautilus.hurt_land": "Baby Nautilus hurts",
"subtitles.entity.baby_nautilus.swim": "Baby Nautilus swims",
+ "subtitles.entity.baby_pig.ambient": "Baby Pig oinks",
+ "subtitles.entity.baby_pig.death": "Baby Pig dies",
+ "subtitles.entity.baby_pig.eat": "Baby Pig eats",
+ "subtitles.entity.baby_pig.hurt": "Baby Pig hurts",
+ "subtitles.entity.baby_wolf.ambient": "Puppy yips",
+ "subtitles.entity.baby_wolf.death": "Puppy dies",
+ "subtitles.entity.baby_wolf.growl": "Puppy growls",
+ "subtitles.entity.baby_wolf.hurt": "Puppy hurts",
+ "subtitles.entity.baby_wolf.pant": "Puppy pants",
+ "subtitles.entity.baby_wolf.whine": "Puppy whines",
"subtitles.entity.bat.ambient": "Bat screeches",
"subtitles.entity.bat.death": "Bat dies",
"subtitles.entity.bat.hurt": "Bat hurts",
@@ -7183,6 +7276,7 @@
"subtitles.entity.phantom.swoop": "Phantom swoops",
"subtitles.entity.pig.ambient": "Pig oinks",
"subtitles.entity.pig.death": "Pig dies",
+ "subtitles.entity.pig.eat": "Pig eats",
"subtitles.entity.pig.hurt": "Pig hurts",
"subtitles.entity.pig.saddle": "Saddle equips",
"subtitles.entity.piglin_brute.ambient": "Piglin Brute snorts",
@@ -7503,6 +7597,8 @@
"subtitles.item.flintandsteel.use": "Flint and Steel click",
"subtitles.item.glow_ink_sac.use": "Glow Ink Sac splotches",
"subtitles.item.goat_horn.play": "Goat Horn plays",
+ "subtitles.item.golden_dandelion.unuse": "Golden Dandelion starts aging",
+ "subtitles.item.golden_dandelion.use": "Golden Dandelion halts aging",
"subtitles.item.hoe.till": "Hoe tills",
"subtitles.item.honey_bottle.drink": "Gulping",
"subtitles.item.honeycomb.wax_on": "Wax on",
@@ -7660,6 +7756,7 @@
"test.error.entity_property": "Entity %s failed test: %s",
"test.error.entity_property_details": "Entity %s failed test: %s. Expected %s: was %s",
"test.error.expected_block": "Expected block %s: got %s",
+ "test.error.expected_block_present": "Expected block %s to be present",
"test.error.expected_block_tag": "Expected block in #%s: got %s",
"test.error.expected_container_contents": "Container should contain: %s",
"test.error.expected_container_contents_single": "Container should contain a single: %s",
@@ -7680,10 +7777,12 @@
"test.error.fail": "Fail conditions met",
"test.error.invalid_block_type": "Unexpected block type found: %s",
"test.error.missing_block_entity": "Missing block entity",
+ "test.error.not_a_block_item": "Given block is not a block item",
"test.error.position": "%s at %s, %s, %s (relative: %s, %s, %s) on tick %s",
"test.error.sequence.condition_already_triggered": "Condition already triggered at %s",
"test.error.sequence.condition_not_triggered": "Condition not triggered",
"test.error.sequence.invalid_tick": "Succeeded in invalid tick: expected %s",
+ "test.error.sequence.minimum_tick": "Succeeded before expected tick: expected to wait %s",
"test.error.sequence.not_completed": "Test timed out before sequence completed",
"test.error.set_biome": "Failed to set biome for test",
"test.error.spawn_failure": "Failed to create entity %s",
@@ -7765,5 +7864,25 @@
"tutorial.punch_tree.title": "Destroy the tree",
"tutorial.socialInteractions.description": "Press %s to open",
"tutorial.socialInteractions.title": "Social Interactions",
- "upgrade.minecraft.netherite_upgrade": "Netherite Upgrade"
+ "upgrade.minecraft.netherite_upgrade": "Netherite Upgrade",
+ "upgradeWorld.aborted.message": "This may happen if another program accessed the world during the upgrade.\nIt may help to restart your computer and try again. If the issue persists, please consider reporting a bug.",
+ "upgradeWorld.aborted.reportBug": "Report a Bug",
+ "upgradeWorld.aborted.title": "Failed to upgrade the world",
+ "upgradeWorld.canceled.message": "Your world remains as it was before.",
+ "upgradeWorld.canceled.title": "World upgrade canceled",
+ "upgradeWorld.done": "Upgrading World Completed",
+ "upgradeWorld.failed_cleanup.message": "The world was successfully upgraded to the current version and is now available in the world list.\nWe encountered issues when cleaning up outdated data, therefore the name of the world folder has changed to %s.",
+ "upgradeWorld.failed_cleanup.title": "Successfully upgraded the world",
+ "upgradeWorld.info.converted": "Upgraded: %s",
+ "upgradeWorld.info.file_fix_stage": "Stage: %s/%s",
+ "upgradeWorld.info.scanning": "Scanning files...",
+ "upgradeWorld.info.total": "Total: %s",
+ "upgradeWorld.joinNow": "Do you want to join the world now?",
+ "upgradeWorld.progress.percentage": "%s%%",
+ "upgradeWorld.progress.type.files": "Moving files",
+ "upgradeWorld.progress.type.legacy_structures": "Upgrading legacy structures",
+ "upgradeWorld.progress.type.region": "Upgrading regions",
+ "upgradeWorld.symlink.message": "The selected world contains symbolic links.\nThe required steps to upgrade the world to the current version do not support the use of symbolic links. To upgrade the world, the links need to be resolved first.",
+ "upgradeWorld.symlink.title": "Can't upgrade the world",
+ "upgradeWorld.title": "Upgrading World Files"
} \ No newline at end of file