diff --git a/src/main/java/dan200/computercraft/core/apis/http/options/AddressRuleConfig.java b/src/main/java/dan200/computercraft/core/apis/http/options/AddressRuleConfig.java index 69106a0e1..d9f0a95a5 100644 --- a/src/main/java/dan200/computercraft/core/apis/http/options/AddressRuleConfig.java +++ b/src/main/java/dan200/computercraft/core/apis/http/options/AddressRuleConfig.java @@ -32,10 +32,10 @@ public class AddressRuleConfig config.setComment( "timeout", "The period of time (in milliseconds) to wait before a HTTP request times out. Set to 0 for unlimited." ); config.add( "timeout", AddressRule.TIMEOUT ); - config.setComment( "max_download", "The maximum size (in bytes) that a computer can download in a single request. Note that responses may receive more data than allowed, but this data will not be returned to the client." ); + config.setComment( "max_download", "The maximum size (in bytes) that a computer can download in a single request.\nNote that responses may receive more data than allowed, but this data will not\nbe returned to the client." ); config.set( "max_download", AddressRule.MAX_DOWNLOAD ); - config.setComment( "max_upload", "The maximum size (in bytes) that a computer can upload in a single request. This includes headers and POST text." ); + config.setComment( "max_upload", "The maximum size (in bytes) that a computer can upload in a single request. This\nincludes headers and POST text." ); config.set( "max_upload", AddressRule.MAX_UPLOAD ); config.setComment( "max_websocket_message", "The maximum size (in bytes) that a computer can send or receive in one websocket packet." ); diff --git a/src/main/java/dan200/computercraft/shared/Config.java b/src/main/java/dan200/computercraft/shared/Config.java index ff62e13a4..246bf7a21 100644 --- a/src/main/java/dan200/computercraft/shared/Config.java +++ b/src/main/java/dan200/computercraft/shared/Config.java @@ -98,12 +98,12 @@ public final class Config { // General computers computerSpaceLimit = builder - .comment( "The disk space limit for computers and turtles, in bytes" ) + .comment( "The disk space limit for computers and turtles, in bytes." ) .translation( TRANSLATION_PREFIX + "computer_space_limit" ) .define( "computer_space_limit", ComputerCraft.computerSpaceLimit ); floppySpaceLimit = builder - .comment( "The disk space limit for floppy disks, in bytes" ) + .comment( "The disk space limit for floppy disks, in bytes." ) .translation( TRANSLATION_PREFIX + "floppy_space_limit" ) .define( "floppy_space_limit", ComputerCraft.floppySpaceLimit ); @@ -113,49 +113,36 @@ public final class Config .defineInRange( "maximum_open_files", ComputerCraft.maximumFilesOpen, 0, Integer.MAX_VALUE ); disableLua51Features = builder - .comment( "Set this to true to disable Lua 5.1 functions that will be removed in a future update. " + - "Useful for ensuring forward compatibility of your programs now." ) + .comment( "Set this to true to disable Lua 5.1 functions that will be removed in a future\nupdate. Useful for ensuring forward compatibility of your programs now." ) .define( "disable_lua51_features", ComputerCraft.disableLua51Features ); defaultComputerSettings = builder - .comment( "A comma separated list of default system settings to set on new computers. Example: " + - "\"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\" will disable all " + - "autocompletion" ) + .comment( "A comma separated list of default system settings to set on new computers.\nExample: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\nwill disable all autocompletion." ) .define( "default_computer_settings", ComputerCraft.defaultComputerSettings ); logComputerErrors = builder - .comment( "Log exceptions thrown by peripherals and other Lua objects.\n" + - "This makes it easier for mod authors to debug problems, but may result in log spam should people use buggy methods." ) + .comment( "Log exceptions thrown by peripherals and other Lua objects. This makes it easier\nfor mod authors to debug problems, but may result in log spam should people use\nbuggy methods." ) .define( "log_computer_errors", ComputerCraft.logComputerErrors ); commandRequireCreative = builder - .comment( "Require players to be in creative mode and be opped in order to interact with command computers." + - "This is the default behaviour for vanilla's Command blocks." ) - .define( "command_require_creative", ComputerCraft.commandRequireCreative ); + .comment( "Require players to be in creative mode and be opped in order to interact with\ncommand computers. This is the default behaviour for vanilla's Command blocks." ).define( "command_require_creative", ComputerCraft.commandRequireCreative ); } { - builder.comment( "Controls execution behaviour of computers. This is largely intended for fine-tuning " + - "servers, and generally shouldn't need to be touched" ); + builder.comment( "Controls execution behaviour of computers. This is largely intended for\nfine-tuning servers, and generally shouldn't need to be touched." ); builder.push( "execution" ); computerThreads = builder - .comment( "Set the number of threads computers can run on. A higher number means more computers can run " + - "at once, but may induce lag.\n" + - "Please note that some mods may not work with a thread count higher than 1. Use with caution." ) + .comment( "Set the number of threads computers can run on. A higher number means more\ncomputers can run at once, but may induce lag. Please note that some mods may\nnot work with a thread count higher than 1. Use with caution." ) .worldRestart() .defineInRange( "computer_threads", ComputerCraft.computerThreads, 1, Integer.MAX_VALUE ); maxMainGlobalTime = builder - .comment( "The maximum time that can be spent executing tasks in a single tick, in milliseconds.\n" + - "Note, we will quite possibly go over this limit, as there's no way to tell how long a will take " + - "- this aims to be the upper bound of the average time." ) + .comment( "The maximum time that can be spent executing tasks in a single tick, in\nmilliseconds.\nNote, we will quite possibly go over this limit, as there's no way to tell how\nlong a will take - this aims to be the upper bound of the average time." ) .defineInRange( "max_main_global_time", (int) TimeUnit.NANOSECONDS.toMillis( ComputerCraft.maxMainGlobalTime ), 1, Integer.MAX_VALUE ); maxMainComputerTime = builder - .comment( "The ideal maximum time a computer can execute for in a tick, in milliseconds.\n" + - "Note, we will quite possibly go over this limit, as there's no way to tell how long a will take " + - "- this aims to be the upper bound of the average time." ) + .comment( "The ideal maximum time a computer can execute for in a tick, in milliseconds.\nNote, we will quite possibly go over this limit, as there's no way to tell how\nlong a will take - this aims to be the upper bound of the average time." ) .defineInRange( "max_main_computer_time", (int) TimeUnit.NANOSECONDS.toMillis( ComputerCraft.maxMainComputerTime ), 1, Integer.MAX_VALUE ); builder.pop(); @@ -174,17 +161,14 @@ public final class Config .define( "websocket_enabled", ComputerCraft.httpWebsocketEnabled ); httpRules = builder - .comment( "A list of rules which control behaviour of the \"http\" API for specific domains or IPs.\n" + - "Each rule is an item with a 'host' to match against, and a series of properties. " + - "The host may be a domain name (\"pastebin.com\"),\n" + - "wildcard (\"*.pastebin.com\") or CIDR notation (\"127.0.0.0/8\"). If no rules, the domain is blocked." ) + .comment( "A list of rules which control behaviour of the \"http\" API for specific domains or\nIPs. Each rule is an item with a 'host' to match against, and a series of\nproperties. Rules are evaluated in order, meaning earlier rules override later\nones.\nThe host may be a domain name (\"pastebin.com\"), wildcard (\"*.pastebin.com\") or\nCIDR notation (\"127.0.0.0/8\").\nIf no rules, the domain is blocked." ) .defineList( "rules", Arrays.asList( AddressRuleConfig.makeRule( "$private", Action.DENY ), AddressRuleConfig.makeRule( "*", Action.ALLOW ) ), x -> x instanceof UnmodifiableConfig && AddressRuleConfig.checkRule( (UnmodifiableConfig) x ) ); httpMaxRequests = builder - .comment( "The number of http requests a computer can make at one time. Additional requests will be queued, and sent when the running requests have finished. Set to 0 for unlimited." ) + .comment( "The number of http requests a computer can make at one time. Additional requests\nwill be queued, and sent when the running requests have finished. Set to 0 for\nunlimited." ) .defineInRange( "max_requests", ComputerCraft.httpMaxRequests, 0, Integer.MAX_VALUE ); httpMaxWebsockets = builder @@ -192,15 +176,15 @@ public final class Config .defineInRange( "max_websockets", ComputerCraft.httpMaxWebsockets, 1, Integer.MAX_VALUE ); builder - .comment( "Limits bandwidth used by computers" ) + .comment( "Limits bandwidth used by computers." ) .push( "bandwidth" ); httpDownloadBandwidth = builder - .comment( "The number of bytes which can be downloaded in a second. This is shared across all computers. (bytes/s)" ) + .comment( "The number of bytes which can be downloaded in a second. This is shared across all computers. (bytes/s)." ) .defineInRange( "global_download", ComputerCraft.httpDownloadBandwidth, 1, Integer.MAX_VALUE ); httpUploadBandwidth = builder - .comment( "The number of bytes which can be uploaded in a second. This is shared across all computers. (bytes/s)" ) + .comment( "The number of bytes which can be uploaded in a second. This is shared across all computers. (bytes/s)." ) .defineInRange( "global_upload", ComputerCraft.httpUploadBandwidth, 1, Integer.MAX_VALUE ); builder.pop(); @@ -217,33 +201,27 @@ public final class Config .define( "command_block_enabled", ComputerCraft.enableCommandBlock ); modemRange = builder - .comment( "The range of Wireless Modems at low altitude in clear weather, in meters" ) + .comment( "The range of Wireless Modems at low altitude in clear weather, in meters." ) .defineInRange( "modem_range", ComputerCraft.modemRange, 0, MODEM_MAX_RANGE ); modemHighAltitudeRange = builder - .comment( "The range of Wireless Modems at maximum altitude in clear weather, in meters" ) + .comment( "The range of Wireless Modems at maximum altitude in clear weather, in meters." ) .defineInRange( "modem_high_altitude_range", ComputerCraft.modemHighAltitudeRange, 0, MODEM_MAX_RANGE ); modemRangeDuringStorm = builder - .comment( "The range of Wireless Modems at low altitude in stormy weather, in meters" ) + .comment( "The range of Wireless Modems at low altitude in stormy weather, in meters." ) .defineInRange( "modem_range_during_storm", ComputerCraft.modemRangeDuringStorm, 0, MODEM_MAX_RANGE ); modemHighAltitudeRangeDuringStorm = builder - .comment( "The range of Wireless Modems at maximum altitude in stormy weather, in meters" ) + .comment( "The range of Wireless Modems at maximum altitude in stormy weather, in meters." ) .defineInRange( "modem_high_altitude_range_during_storm", ComputerCraft.modemHighAltitudeRangeDuringStorm, 0, MODEM_MAX_RANGE ); maxNotesPerTick = builder - .comment( "Maximum amount of notes a speaker can play at once" ) + .comment( "Maximum amount of notes a speaker can play at once." ) .defineInRange( "max_notes_per_tick", ComputerCraft.maxNotesPerTick, 1, Integer.MAX_VALUE ); monitorBandwidth = builder - .comment( "The limit to how much monitor data can be sent *per tick*. Note:\n" + - " - Bandwidth is measured before compression, so the data sent to the client is smaller.\n" + - " - This ignores the number of players a packet is sent to. Updating a monitor for one player consumes " + - "the same bandwidth limit as sending to 20.\n" + - " - A full sized monitor sends ~25kb of data. So the default (1MB) allows for ~40 monitors to be updated " + - "in a single tick. \n" + - "Set to 0 to disable." ) + .comment( "The limit to how much monitor data can be sent *per tick*. Note:\n - Bandwidth is measured before compression, so the data sent to the client is\n smaller.\n - This ignores the number of players a packet is sent to. Updating a monitor for\n one player consumes the same bandwidth limit as sending to 20.\n - A full sized monitor sends ~25kb of data. So the default (1MB) allows for ~40\n monitors to be updated in a single tick.\nSet to 0 to disable." ) .defineInRange( "monitor_bandwidth", (int) ComputerCraft.monitorBandwidth, 0, Integer.MAX_VALUE ); builder.pop(); @@ -254,23 +232,24 @@ public final class Config builder.push( "turtle" ); turtlesNeedFuel = builder - .comment( "Set whether Turtles require fuel to move" ) + .comment( "Set whether Turtles require fuel to move." ) .define( "need_fuel", ComputerCraft.turtlesNeedFuel ); turtleFuelLimit = builder - .comment( "The fuel limit for Turtles" ) + .comment( "The fuel limit for Turtles." ) .defineInRange( "normal_fuel_limit", ComputerCraft.turtleFuelLimit, 0, Integer.MAX_VALUE ); advancedTurtleFuelLimit = builder - .comment( "The fuel limit for Advanced Turtles" ) + .comment( "The fuel limit for Advanced Turtles." ) .defineInRange( "advanced_fuel_limit", ComputerCraft.advancedTurtleFuelLimit, 0, Integer.MAX_VALUE ); turtlesObeyBlockProtection = builder - .comment( "If set to true, Turtles will be unable to build, dig, or enter protected areas (such as near the server spawn point)" ) + .comment( "If set to true, Turtles will be unable to build, dig, or enter protected areas\n(such as near the server spawn point)." ) .define( "obey_block_protection", ComputerCraft.turtlesObeyBlockProtection ); turtlesCanPush = builder - .comment( "If set to true, Turtles will push entities out of the way instead of stopping if there is space to do so" ) + .comment( "If set to true, Turtles will push entities out of the way instead of stopping if\n" + + "there is space to do so." ) .define( "can_push", ComputerCraft.turtlesCanPush ); turtleDisabledActions = builder @@ -281,20 +260,19 @@ public final class Config } { - builder.comment( "Configure the size of various computer's terminals.\n" + - "Larger terminals require more bandwidth, so use with care." ).push( "term_sizes" ); + builder.comment( "Configure the size of various computer's terminals.\nLarger terminals require more bandwidth, so use with care." ).push( "term_sizes" ); - builder.comment( "Terminal size of computers" ).push( "computer" ); + builder.comment( "Terminal size of computers." ).push( "computer" ); computerTermWidth = builder.defineInRange( "width", ComputerCraft.computerTermWidth, 1, 255 ); computerTermHeight = builder.defineInRange( "height", ComputerCraft.computerTermHeight, 1, 255 ); builder.pop(); - builder.comment( "Terminal size of pocket computers" ).push( "pocket_computer" ); + builder.comment( "Terminal size of pocket computers." ).push( "pocket_computer" ); pocketTermWidth = builder.defineInRange( "width", ComputerCraft.pocketTermWidth, 1, 255 ); pocketTermHeight = builder.defineInRange( "height", ComputerCraft.pocketTermHeight, 1, 255 ); builder.pop(); - builder.comment( "Maximum size of monitors (in blocks)" ).push( "monitor" ); + builder.comment( "Maximum size of monitors (in blocks)." ).push( "monitor" ); monitorWidth = builder.defineInRange( "width", ComputerCraft.monitorWidth, 1, 32 ); monitorHeight = builder.defineInRange( "height", ComputerCraft.monitorHeight, 1, 32 ); builder.pop(); @@ -306,12 +284,10 @@ public final class Config Builder clientBuilder = new Builder(); monitorRenderer = clientBuilder - .comment( "The renderer to use for monitors. Generally this should be kept at \"best\" - if " + - "monitors have performance issues, you may wish to experiment with alternative renderers." ) + .comment( "The renderer to use for monitors. Generally this should be kept at \"best\" - if\nmonitors have performance issues, you may wish to experiment with alternative\nrenderers." ) .defineEnum( "monitor_renderer", MonitorRenderer.BEST ); monitorDistance = clientBuilder - .comment( "The maximum distance monitors will render at. This defaults to the standard tile entity limit, " + - "but may be extended if you wish to build larger monitors." ) + .comment( "The maximum distance monitors will render at. This defaults to the standard tile\nentity limit, but may be extended if you wish to build larger monitors." ) .defineInRange( "monitor_distance", 64, 16, 1024 ); clientSpec = clientBuilder.build(); }