fermi/config/opencomputers/settings.conf
Thomas Muller 83290a8164 Let me do what I want
"Enable this  only if you absolutely trust all users on your server and all Lua code you run."
"only enable this is you  know what you're doing."

Bitch dont tell me what to do, I trust no one and dont know what im doing
But im going to do it anyway
2021-11-07 17:19:37 -05:00

1640 lines
72 KiB
Text

# OpenComputers configuration. This file uses typesafe config's HOCON syntax.
# Try setting your syntax highlighting to Ruby, to help readability. At least
# in Sublime Text that works really well. Note that this file is overwritten
# whenever you start the game! Changes to the comments may vanish.
# Note that all mentions of 'KB' or 'kilobyte' mean 1024 bytes.
opencomputers {
# Chunkloader Upgrade settings.
chunkloader {
# This is a list of blacklisted dimensions. Chunkloaders may only be activated
# in dimensions that aren't present in this list.
dimBlacklist=[]
# This is a list of whitelisted dimensions. Chunkloaders may only be activated
# in dimensions that are present in this list. If this list is empty,
# chunkloaders may be activated to all dimensions not blacklisted. Note that the
# blacklist is always applied, so if an entry is present in both the
# whitelist and the blacklist, the blacklist will win.
dimWhitelist=[]
}
# Client side settings, presentation and performance related stuff.
client {
# The radius in which computer beeps can be heard.
beepRadius=16
# The sample rate used for generating beeps of computers' internal
# speakers. Use custom values at your own responsibility here; if it
# breaks OC you'll get no support. Some potentially reasonable
# lower values are 16000 or even 8000 (which was the old default, but
# leads to artifacting on certain frequencies).
beepSampleRate=44100
# The base volume of beeps generated by computers. This may be in a
# range of [0, 127], where 0 means mute (the sound will not even be
# generated), and 127 means maximum amplitude / volume.
beepVolume=32
# Whether to emit particle effects around players via nanomachines. This
# includes the basic particles giving a rough indication of the current
# power level of the nanomachines as well as particles emitted by the
# particle effect behaviors.
enableNanomachinePfx=true
# This is the scaling of the individual chars rendered on screens. This
# is set to slightly overscale per default, to avoid gaps between fully
# filled chars to appear (i.e. the block symbol that is used for cursor
# blinking for example) on less accurate hardware.
fontCharScale=1.01
# Which font renderer to use. Defaults to `hexfont` if invalid.
# Possible values:
# - hexfont: the (since 1.3.2) default font renderer. Font in .hex format
# capable of rendering many unicode glyphs.
# The used font data can be swapped out using resource packs,
# but is harder to work with, since it involves binary data.
# - texture: the old, font-texture based font renderer that was used
# in OC versions prior to 1.3.2. This will allow overriding
# the font texture as before. Keep in mind that this renderer
# is slightly less efficient than the new one, and more
# importantly, can only render code page 437 (as opposed to...
# a *lot* of unicode).
fontRenderer=hexfont
# The distance at which to start fading out the hologram (as with
# hologramRenderDistance). This is purely cosmetic, to avoid image
# disappearing instantly when moving too far away from a projector.
# It does not affect performance. Holograms are transparent anyway.
hologramFadeStartDistance=48
# This controls how often holograms 'flicker'. This is the chance that it
# flickers for *each frame*, meaning if you're running at high FPS you
# may want to lower this a bit, to avoid it flickering too much.
hologramFlickerFrequency=0.025
# The maximum render distance of a hologram projected by a highest tier
# hologram projector when at maximum scale. Render distance is scaled
# down with the actual scale of the hologram.
hologramRenderDistance=64
# The maximum distance at which to render text on screens. Rendering text
# can be pretty expensive, so if you have a lot of screens you'll want to
# avoid huge numbers here. Note that this setting is client-sided, and
# only has an impact on render performance on clients.
maxScreenTextRenderDistance=20
# The color of monochrome text (i.e. displayed when in 1-bit color depth,
# e.g. tier one screens / GPUs, or higher tier set to 1-bit color depth).
# Defaults to white, feel free to make it some other color, tho!
monochromeColor="0xFFFFFF"
# Position of the power indicator for nanomachines, by default left to the
# player's health, specified by negative values. Values in [0, 1) will be
# treated as relative positions, values in [1, inf) will be treated as
# absolute positions.
nanomachineHudPos=[
-1,
-1
]
# Render robots' names as a label above them when near them
robotLabels=true
# The distance at which to start fading out the text on screens. This is
# purely cosmetic, to avoid text disappearing instantly when moving too
# far away from a screen. This should have no measurable impact on
# performance. Note that this needs OpenGL 1.4 to work, otherwise text
# will always just instantly disappear when moving away from the screen
# displaying it.
screenTextFadeStartDistance=15
# The volume multiplier applied to sounds from this mod like the computer
# running noise. Disable sounds by setting this to zero.
soundVolume=1
# If you prefer the text on the screens to be aliased (you know, *not*
# anti-aliased / smoothed) turn this option off.
textAntiAlias=true
# Whether to apply linear filtering for text displayed on screens when the
# screen has to be scaled down - i.e. the text is rendered at a resolution
# lower than their native one, e.g. when the GUI scale is less than one or
# when looking at a far away screen. This leads to smoother text for
# scaled down text but results in characters not perfectly connecting
# anymore (for example for box drawing characters. Look it up on
# Wikipedia.)
textLinearFiltering=false
}
# Computer related settings, concerns server performance and security.
computer {
# The provided call budgets by the three tiers of CPU and memory. Higher
# budgets mean that more direct calls can be performed per tick. You can
# raise this to increase the "speed" of computers at the cost of higher
# real CPU time. Lower this to lower the load Lua executors put on your
# machine / server, at the cost of slower computers. This list must
# contain exactly three entries, or it will be ignored.
callBudgets=[
0.5,
1,
1.5
]
# This determines whether computers can only be used by players that are
# registered as users on them. Per default a newly placed computer has no
# users. Whenever there are no users the computer is free for all. Users
# can be managed via the Lua API (computer.addUser, computer.removeUser,
# computer.users). If this is true, the following interactions are only
# possible for users:
# - input via the keyboard and touch screen.
# - inventory management.
# - breaking the computer block.
# If this is set to false, all computers will always be usable by all
# players, no matter the contents of the user list. Note that operators
# are treated as if they were in the user list of every computer, i.e. no
# restrictions apply to them.
# See also: `maxUsers` and `maxUsernameLength`.
canComputersBeOwned=true
# The number of components the different CPU tiers support. This list
# must contain exactly four entries, or it will be ignored.
cpuComponentCount=[
8,
12,
16,
1024
]
# The maximum size of the byte array that can be stored on EEPROMs as configuration data.
eepromDataSize=256
# The maximum size of the byte array that can be stored on EEPROMs as executable data..
eepromSize=4096
# Whether to delete all contents in the /tmp file system when performing
# a 'soft' reboot (i.e. via `computer.shutdown(true)`). The tmpfs will
# always be erased when the computer is completely powered off, even if
# it crashed. This setting is purely for software-triggered reboots.
eraseTmpOnReboot=false
# The time in milliseconds that scheduled computers are forced to wait
# before executing more code. This avoids computers to "busy idle",
# leading to artificially high CPU load. If you're worried about
# performance on your server, increase this number a little (it should
# never exceed 50, a single tick, though) to reduce CPU load even more.
executionDelay=12
# Settings specific to the Lua architecture.
lua {
# Whether to allow loading precompiled bytecode via Lua's `load`
# function, or related functions (`loadfile`, `dofile`). Enable this
# only if you absolutely trust all users on your server and all Lua
# code you run. This can be a MASSIVE SECURITY RISK, since precompiled
# code can easily be used for exploits, running arbitrary code on the
# real server! I cannot stress this enough: only enable this is you
# know what you're doing.
allowBytecode=true
# Whether to allow user defined __gc callbacks, i.e. __gc callbacks
# defined *inside* the sandbox. Since garbage collection callbacks
# are not sandboxed (hooks are disabled while they run), this is not
# recommended.
allowGC=false
# Whether to make the Lua 5.3 architecture the default architecture.
# If enabled, a crafted CPU will first be the Lua 5.3 architecture.
defaultLua53=true
# Whether to make the Lua 5.3 architecture available. If enabled, you
# can reconfigure any CPU to use the Lua 5.3 architecture.
enableLua53=true
# The total maximum amount of memory a Lua machine may use for user
# programs. The total amount made available by components cannot
# exceed this. The default is 64*1024*1024. Keep in mind that this does
# not include memory reserved for built-in code such as `machine.lua`.
# IMPORTANT: DO NOT MESS WITH THIS UNLESS YOU KNOW WHAT YOU'RE DOING.
# IN PARTICULAR, DO NOT REPORT ISSUES AFTER MESSING WITH THIS!
maxTotalRam=67108864
# This setting allows you to fine-tune how RAM sizes are scaled internally
# on 64 Bit machines (i.e. when the Minecraft server runs in a 64 Bit VM).
# Why is this even necessary? Because objects consume more memory in a 64
# Bit environment than in a 32 Bit one, due to pointers and possibly some
# integer types being twice as large. It's actually impossible to break
# this down to a single number, so this is really just a rough guess. If
# you notice this doesn't match what some Lua program would use on 32 bit,
# feel free to play with this and report your findings!
# Note that the values *displayed* to Lua via `computer.totalMemory` and
# `computer.freeMemory` will be scaled by the inverse, so that they always
# correspond to the "apparent" sizes of the installed memory modules. For
# example, when running a computer with a 64KB RAM module, even if it's
# scaled up to 96KB, `computer.totalMemory` will return 64KB, and if there
# are really 45KB free, `computer.freeMemory` will return 32KB.
ramScaleFor64Bit=1.8
# The sizes of the six levels of RAM, in kilobytes. This list must
# contain exactly six entries, or it will be ignored. Note that while
# there are six levels of RAM, they still fall into the three tiers of
# items (level 1, 2 = tier 1, level 3, 4 = tier 2, level 5, 6 = tier 3).
ramSizes=[
192,
256,
384,
512,
768,
1024
]
}
# The maximum depth a machine will queue signals before dropping them
# A machine state should be pulling signals via computer.pullSignal
# As the machine receives signals they are queued for pulling, and
# this maximum defines the max queue size. All signals recieved when
# the queue is full are discarded. Note that clipboard text creates
# a signal for each line of text. Thus client are limited to pasting
# text of this many lines. The default (and minimum) is 256
maxSignalQueueSize=256
# Sanity check for username length for users registered with computers. We
# store the actual user names instead of a hash to allow iterating the
# list of registered users on the Lua side.
# See also: `canComputersBeOwned`.
maxUsernameLength=32
# The maximum number of users that can be registered with a single
# computer. This is used to avoid computers allocating unchecked amounts
# of memory by registering an unlimited number of users. See also:
# `canComputersBeOwned`.
maxUsers=16
# The time in seconds to wait after a computer has been restored before it
# continues to run. This is meant to allow the world around the computer
# to settle, avoiding issues such as components in neighboring chunks
# being removed and then re-connected and other odd things that might
# happen.
startupDelay=0.25
# The overall number of threads to use to drive computers. Whenever a
# computer should run, for example because a signal should be processed or
# some sleep timer expired it is queued for execution by a worker thread.
# The higher the number of worker threads, the less likely it will be that
# computers block each other from running, but the higher the host
# system's load may become.
threads=4
# The time in seconds a program may run without yielding before it is
# forcibly aborted. This is used to avoid stupidly written or malicious
# programs blocking other computers by locking down the executor threads.
# Note that changing this won't have any effect on computers that are
# already running - they'll have to be rebooted for this to take effect.
timeout=5
}
# Settings that are intended for debugging issues, not for normal use.
# You usually don't want to touch these unless asked to do so by a developer.
debug {
# On some platforms the native library can crash the game, so there are
# a few checks in place to avoid trying to load it in those cases. This
# is Windows XP and Windows Server 2003, right. If you think it might
# work nonetheless (newer builds of Server2k3 e.g.) you might want to
# try setting this to `true`. Use this at your own risk. If the game
# crashes as a result of setting this to `true` DO NOT REPORT IT.
alwaysTryNative=false
# Enable debug card functionality. This may also be of use for custom
# maps, so it is enabled by default. If you run a server where people
# may cheat in items but should not have op/admin-like rights, you may
# want to set this to false or `deny`. Set this to `whitelist` if you
# want to enable whitelisting of debug card users (managed by command
# /oc_debugWhitelist). This will *not* remove the card, it will just
# make all functions it provides error out.
debugCardAccess=allow
# Prevent OC calling Lua's os.setlocale method to ensure number
# formatting is the same on all systems it is run on. Use this if you
# suspect this might mess with some other part of Java (this affects
# the native C locale).
disableLocaleChanging=false
# Disable memory limit enforcement. This means Lua states can
# theoretically use as much memory as they want. Only relevant when
# using the native library.
disableMemoryLimit=false
# Disable computer state persistence. This means that computers will
# automatically be rebooted when loaded after being unloaded, instead
# of resuming with their exection (it also means the state is not even
# saved). Only relevant when using the native library.
disablePersistence=false
# Disable user data support. This means any otherwise supported
# userdata (implementing the Value interface) will not be pushed
# to the Lua state.
disableUserdata=false
# Force the buffered file system to be case insensitive. This makes it
# impossible to have multiple files whose names only differ in their
# capitalization, which is commonly the case on Windows, for example.
# This only takes effect when bufferChanges is set to true.
forceCaseInsensitiveFS=false
# Forces the use of the LuaJ fallback instead of the native libraries.
# Use this if you have concerns using native libraries or experience
# issues with the native library.
forceLuaJ=false
# Force loading one specific library, to avoid trying to load any
# others. Use this if you get warnings in the log or are told to do
# so for debugging purposes ;-)
forceNativeLibWithName=""
# Pass along IDs of items and fluids when converting them to a table
# representation for Lua.
insertIdsInConverters=false
# This setting is meant for debugging errors that occur in Lua callbacks.
# Per default, if an error occurs and it has a message set, only the
# message is pushed back to Lua, and that's it. If you encounter weird
# errors or are developing an addon you'll want the stacktrace for those
# errors. Enabling this setting will log them to the game log. This is
# disabled per default to avoid spamming the log with inconsequentual
# exceptions such as IllegalArgumentExceptions and the like.
logCallbackErrors=false
# Logs the full error when a native library fails to load. This is
# disabled by default to avoid spamming the log, since libraries are
# iterated until one works, so it's very likely for some to fail. Use
# this in case all libraries fail to load even though you'd expect one
# to work.
logFullNativeLibLoadErrors=false
# Logs information about malformed glyphs (i.e. glyphs that deviate in
# width from what wcwidth says).
logHexFontErrors=false
# Used to suppress log spam for OpenGL errors on derpy drivers. I'm
# quite certain the code in the font render is valid, display list
# compatible OpenGL, but it seems to cause 'invalid operation' errors
# when executed as a display list. I'd be happy to be proven wrong,
# since it'd restore some of my trust into AMD drivers...
logOpenGLErrors=false
# Extract the native library with Lua into the system's temporary
# directory instead of the game directory (e.g. /tmp on Linux). The
# default is to extract into the game directory, to avoid issues when
# the temporary directory is mounted as noexec (meaning the lib cannot
# be loaded). There is also less of a chance of conflicts when running
# multiple servers or server and client on the same machine.
nativeInTmpDir=false
# Due to a bug in Minecraft's lighting code there's an issue where
# lighting does not properly update near light emitting blocks that are
# fully solid - like screens, for example. This can be annoying when
# using other blocks that dynamically change their brightness (e.g. for
# the addon mod OpenLights). Enable this to force light emitting blocks
# in oc to periodically (every two seconds) do an update. This should
# not have an overly noticeable impact on performance, but it's disabled
# by default because it is unnecessary in *most* cases.
periodicallyForceLightUpdate=false
# Whether to always register the LuaJ architecture - even if the native
# library is available. In that case it is possible to switch between
# the two like any other registered architecture.
registerLuaJArchitecture=false
# This is meant for debugging errors. Enabling this has a high impact
# on computers' save and load performance, so you should not enable
# this unless you're asked to.
verbosePersistenceErrors=false
}
# File system related settings, performance and and balancing.
filesystem {
# Whether persistent file systems such as disk drives should be
# 'buffered', and only written to disk when the world is saved. This
# applies to all hard drives. The advantage of having this enabled is that
# data will never go 'out of sync' with the computer's state if the game
# crashes. The price is slightly higher memory consumption, since all
# loaded files have to be kept in memory (loaded as in when the hard drive
# is in a computer).
bufferChanges=true
# The base 'cost' of a single file or directory on a limited file system,
# such as hard drives. When computing the used space we add this cost to
# the real size of each file (and folders, which are zero sized
# otherwise). This is to ensure that users cannot spam the file system
# with an infinite number of files and/or folders. Note that the size
# returned via the API will always be the real file size, however.
fileCost=512
# The size of writable floppy disks, in kilobytes.
floppySize=512
# Number of physical platters to pretend a disk has in unmanaged mode. This
# controls seek times, in how it emulates sectors overlapping (thus sharing
# a common head position for access).
hddPlatterCounts=[
2,
4,
8
]
# The sizes of the three tiers of hard drives, in kilobytes. This list
# must contain exactly three entries, or it will be ignored.
hddSizes=[
1024,
2048,
4096
]
# The maximum number of file handles any single computer may have open at
# a time. Note that this is *per filesystem*. Also note that this is only
# enforced by the filesystem node - if an add-on decides to be fancy it
# may well ignore this. Since file systems are usually 'virtual' this will
# usually not have any real impact on performance and won't be noticeable
# on the host operating system.
maxHandles=16
# The maximum block size that can be read in one 'read' call on a file
# system. This is used to limit the amount of memory a call from a user
# program can cause to be allocated on the host side: when 'read' is,
# called a byte array with the specified size has to be allocated. So if
# this weren't limited, a Lua program could trigger massive memory
# allocations regardless of the amount of RAM installed in the computer it
# runs on. As a side effect this pretty much determines the read
# performance of file systems.
maxReadBuffer=2048
# When skipping more than this number of sectors in unmanaged mode, the
# pause specified in sectorSeekTime will be enforced. We use this instead
# of linear scaling for movement because those values would have to be
# really small, which is hard to conceptualize and configure.
sectorSeekThreshold=128
# The time to pause when the head movement threshold is exceeded.
sectorSeekTime=0.1
# The size of the /tmp filesystem that each computer gets for free. If
# set to a non-positive value the tmp file system will not be created.
tmpSize=64
}
hologram {
# Whether the hologram block should provide light. It'll also emit light
# when off, because having state-based light in MC is... painful.
emitLight=true
# This controls the maximum scales of holograms, by tier.
# The size at scale 1 is 3x2x3 blocks, at scale 3 the hologram will
# span up to 9x6x9 blocks. Unlike most other `client' settings, this
# value is only used for validation *on the server*, with the effects
# only being visible on the client.
# Warning: very large values may lead to rendering and/or performance
# issues due to the high view distance! Increase at your own peril.
maxScale=[
3,
4
]
# This controls the maximum translation of holograms, by tier.
# The scale is in "hologram sizes", i.e. scale 1 allows offsetting a
# hologram once by its own size.
maxTranslation=[
0.25,
0.5
]
# The delay forced on computers between calls to `hologram.setRaw`, in
# seconds. Lower this if you want faster updates, raise this if you're
# worried about bandwidth use; in *normal* use-cases this will never be
# an issue. When abused, `setRaw` can be used to generate network traffic
# due to changed data being sent to clients. With the default settings,
# the *worst case* is ~30KB/s/client. Again, for normal use-cases this
# is actually barely noticeable.
setRawDelay=0.2
}
# Settings for mod integration (the mod previously known as OpenComponents).
integration {
buildcraft {
# Cost to convert a loot disk to another in the BuildCraft programming table.
programmingTableCost=5000
}
# The name to use for the global fake player needed for some mod
# interactions.
fakePlayerName="[OpenComputers]"
# The UUID to use for the global fake player needed for some mod
# interactions.
fakePlayerUuid="7e506b5d-2ccb-4ac4-a249-5624925b0c67"
# A list of mods (by mod id) for which support should NOT be enabled. Use
# this to disable support for mods you feel should not be controllable via
# computers (such as magic related mods, which is why Thaumcraft is on this
# list by default.)
modBlacklist=[
Thaumcraft,
thaumicenergistics
]
# A list of tile entities by class name that should NOT be accessible via
# the Adapter block. Add blocks here that can lead to crashes or deadlocks
# (and report them, please!)
peripheralBlacklist=[
"net.minecraft.tileentity.TileEntityCommandBlock"
]
# Vanilla integration related settings.
vanilla {
# Whether to allow the item stack converter to push NBT data in
# compressed format (GZIP'ed). This can be useful for pushing this
# data back to other callbacks. However, given a sophisticated
# enough software (Lua script) it is possible to decode this data,
# and get access to things that should be considered implementation
# detail / private (mods may keep "secret" data in such NBT tags).
# The recommended method is to use the database component instead.
allowItemStackNBTTags=false
# Whether to enable the command block driver. Enabling this allows
# computers to set and execute commands via command blocks next to
# adapter blocks. The commands are run using OC's general fake player.
enableCommandBlockDriver=false
# Whether to enable the inventory driver. This driver allows interacting
# with inventories adjacent to adapters in a way similar to what the
# inventory controller upgrade allows when built into a robot or placed
# inside an adapter. It is therefore considered to be somewhat cheaty by
# some, and disabled by default. If you don't care about that, feel free
# to enable this driver.
enableInventoryDriver=false
# Whether to enable the tank driver. This driver is like the inventory
# driver, just for fluid tanks, and is disabled by default with the same
# reasoning as the inventory driver - using a tank controller upgrade in
# an adapter has pretty much the same effect.
enableTankDriver=false
}
}
# Internet settings, security related.
internet {
# This is a list of blacklisted domain names. If an HTTP request is made
# or a socket connection is opened the target address will be compared
# to the addresses / address ranges in this list. It it is present in this
# list, the request will be denied.
# Entries are either domain names (www.example.com) or IP addresses in
# string format (10.0.0.3), optionally in CIDR notation to make it easier
# to define address ranges (1.0.0.0/8). Domains are resolved to their
# actual IP once on startup, future requests are resolved and compared
# to the resolved addresses.
# By default all local addresses are blocked. This is only meant as a
# thin layer of security, to avoid average users hosting a game on their
# local machine having players access services in their local network.
# Server hosters are expected to configure their network outside of the
# mod's context in an appropriate manner, e.g. using a system firewall.
blacklist=[
"127.0.0.0/8",
"10.0.0.0/8",
"192.168.0.0/16",
"172.16.0.0/12"
]
# Whether to allow HTTP requests via internet cards. When enabled,
# the `request` method on internet card components becomes available.
enableHttp=true
# Whether to allow adding custom headers to HTTP requests.
enableHttpHeaders=true
# Whether to allow TCP connections via internet cards. When enabled,
# the `connect` method on internet card components becomes available.
enableTcp=true
# The maximum concurrent TCP connections *each* internet card can have
# open at a time.
maxTcpConnections=4
# The time in seconds to wait for a response to a request before timing
# out and returning an error message. If this is zero (the default) the
# request will never time out.
requestTimeout=0
# The number of threads used for processing host name lookups and HTTP
# requests in the background. The more there are, the more concurrent
# connections can potentially be opened by computers, and the less likely
# they are to delay each other.
threads=4
# This is a list of whitelisted domain names. Requests may only be made
# to addresses that are present in this list. If this list is empty,
# requests may be made to all addresses not blacklisted. Note that the
# blacklist is always applied, so if an entry is present in both the
# whitelist and the blacklist, the blacklist will win.
# Entries are of the same format as in the blacklist. Examples:
# "gist.github.com", "www.pastebin.com"
whitelist=[]
}
# Other settings that you might find useful to tweak.
misc {
# Allow robots to get a table representation of item stacks using the
# inventory controller upgrade? (i.e. whether the getStackInSlot method
# of said upgrade is enabled or not). Also applies to tank controller
# upgrade and it's fluid getter method.
allowItemStackInspection=true
# List of item descriptors of assembler template base items to blacklist,
# i.e. for disabling the assembler template for. Entries must be of the
# format 'itemid@damage', were the damage is optional.
# Examples: 'OpenComputers:case3', 'minecraft:stonebrick@1'
assemblerBlacklist=[]
# Hard limit for size of byte arrays passed to data card callbacks. If this
# limit is exceeded, the call fails and does nothing.
dataCardHardLimit=1048576
# Soft limit for size of byte arrays passed to data card callbacks. If this
# limit is exceeded, a longer sleep is enforced (see dataCardTimeout).
dataCardSoftLimit=8192
# Time in seconds to pause a calling machine when the soft limit for a data
# card callback is exceeded.
dataCardTimeout=1
# By default the disassembler can only be used to disassemble items from
# OpenComputers itself (or objects whitelisted via the API). If you'd
# like to allow the disassembler to work on all kinds of items, even from
# other mods, set this to true.
disassembleAllTheThings=false
# The probability that an item breaks when disassembled. This chance
# applies *per extracted item*. For example, if an item was crafted from
# three other items and gets disassembled, each of those three items has
# this chance of breaking in the process.
disassemblerBreakChance=0.05
# Names of items / blocks that are blacklisted. Recipes containing these
# as inputs will be ignored by the disassembler.
disassemblerInputBlacklist=[
"minecraft:fire"
]
# Controls how noisy results from the Geolyzer are. This is the maximum
# deviation from the original value at the maximum vertical distance
# from the geolyzer. Noise increases linearly with the euclidean distance
# to the Geolyzer.
geolyzerNoise=2
# The range, in blocks, in which the Geolyzer can scan blocks. Note that
# it uses the maximum-distance, not the euclidean one, i.e. it can scan
# in a cube surrounding it with twice this value as its edge length.
geolyzerRange=32
# Whether to give a new player a free copy of the manual. This will only
# happen one time per game, not per world, not per death. Once. If this
# is still too much for your taste, disable it here ;-)
giveManualToNewPlayers=true
# Whether to not show your special thinger (if you have one you know it).
hideOwnSpecial=false
# Whether to pass along the name of the user that caused an input signals
# to the computer (mouse and keyboard signals). If you feel this breaks
# the game's immersion, disable it.
# Note: also applies to the motion sensor.
inputUsername=true
# The probability (or rather, weighted chance) that a program disk is
# spawned as loot in a treasure chest. For reference, iron ingots have
# a value of 10, gold ingots a value of 5 and and diamonds a value of 3.
# This is the chance *that* a disk is created. Which disk that will be
# is decided in an extra roll of the dice.
lootProbability=5
# Whether to allow loot disk cycling by crafting them with a wrench.
lootRecrafting=true
# The maximum length of a string that may be pasted. This is used to limit
# the size of the data sent to the server when the user tries to paste a
# string from the clipboard (Shift+Ins on a screen with a keyboard).
maxClipboard=1024
# The maximum number of "data parts" a network packet is allowed to have.
# When sending a network message, from Lua this may look like so:
# component.modem.broadcast(port, "first", true, "third", 123)
# This limits how many arguments can be passed and are wrapped into a
# packet. This limit mostly serves as a protection for lower-tier
# computers, to avoid them getting nuked by more powerful computers.
maxNetworkPacketParts=8
# The maximum size of network packets to allow sending via network cards.
# This has *nothing to do* with real network traffic, it's just a limit
# for the network cards, mostly to reduce the chance of computer with a
# lot of RAM killing those with less by sending huge packets. This does
# not apply to HTTP traffic.
maxNetworkPacketSize=8192
# The maximum number of ports a single network card can have opened at
# any given time.
# Note that the order for this list is: Wired Network Card -> Tier 1 Wireless
# Network Card -> Tier 2 Wireless Network Card
maxOpenPorts=[
16,
1,
16
]
# The maximum height of multi-block screens, in blocks. This is limited to
# avoid excessive computations for merging screens. If you really need
# bigger screens it's probably safe to bump this quite a bit before you
# notice anything, since at least incremental updates should be very
# efficient (i.e. when adding/removing a single screen).
maxScreenHeight=6
# The maximum width of multi-block screens, in blocks.
# See also: `maxScreenHeight`.
maxScreenWidth=8
# The maximum distance a wireless message can be sent. In other words,
# this is the maximum signal strength a wireless network card supports.
# This is used to limit the search range in which to check for modems,
# which may or may not lead to performance issues for ridiculous ranges -
# like, you know, more than the loaded area.
# See also: `wirelessCostPerRange`.
# These values are for the tier 1 and 2 wireless cards, in that order.
maxWirelessRange=[
32,
768
]
# Radius the MFU is able to operate in
mfuRange=3
# Probablility that at certain celebratory times crafting an OC item will
# spawn a present in the crafting player's inventory. Set to zero to
# disable.
presentChance=0.05
# Enforced delay when changing a redstone emitting component's output,
# such as the redstone card and redstone I/O block. Lowering this can
# have very negative impact on server TPS, so beware.
redstoneDelay=0.1
# The general upgrade tier of the switch built into server racks, i.e. how
# upgraded server racks' switching logic is. Prior to the introduction of
# this setting (1.5.15) this was always none. This applies to all
# properties, i.e. througput, frequency and buffer size.
# Valid values are: 0 = none, 1 = tier 1, 2 = tier 2, 3 = tier 3.
serverRackSwitchTier=1
# The number of remote terminals supported by each server tier.
terminalsPerTier=[
2,
4,
8
]
# Override for the worker threads' thread priority. If set to a value
# lower than 1 it will use the default value, which is half-way between
# the system minimum and normal priority. Valid values may differ between
# Java versions, but usually the minimum value (lowest priority) is 1,
# the normal value is 5 and the maximum value is 10. If a manual value is
# given it is automatically capped at the maximum.
# USE THIS WITH GREAT CARE. Using a high priority for worker threads may
# avoid issues with computers timing out, but can also lead to higher
# server load. AGAIN, USE WITH CARE!
threadPriority=-1
# The maximum range between the drone/robot and a villager for a trade to
# be performed by the trading upgrade
tradingRange=8
# Whether to perform an update check and informing local players and OPs
# if a new version is available (contacts Github once the first player
# joins a server / the first map in single player is opened).
updateCheck=true
}
# Nanomachine related values. Note that most of these are relative, as
# they scale with the number of total effects controlled by nanomachines,
# which may very much vary depending on other mods used together with OC.
# To configure this, you'll need to know how this works a bit more in-
# depth, so here goes: there are three layers, the behavior layer, the
# connector layer, and the input layer. The behavior layer consists of
# one node for each behavior provided by registered providers (by default
# these will be potion effects and a few other things). The connector
# layer merely serves to mix things up a little. The input layer is made
# up from nodes that can be triggered by the nanomachines. Each connector
# node has behavior nodes it outputs to, and gets signals from input nodes.
# Behavior nodes get signals from both the connector and the input layers.
# Reconfiguring builds up random connections. Some behaviors change what
# they do based on the number of active inputs (e.g. potion effects will
# increase their amplification value).
nanomachines {
# Time in seconds it takes for the nanomachines to process a command
# and send a response.
commandDelay=1
# The distance in blocks that nanomachines can communicate within. If
# a message comes from further away, it'll be ignored. When responding,
# the response will only be sent this far.
commandRange=2
# The relative number of connectors based on the number of available
# behaviors (see triggerQuota).
connectorQuota=0.2
# Radius in blocks of the disintegration behavior for each active input.
disintegrationRange=1
# How much damage the hungry behavior should deal to the player when the
# nanomachine controller runs out of energy.
hungryDamage=5
# How much energy the hungry behavior should restore when damaging the
# player.
hungryEnergyRestored=50
# Range of the item magnet behavior added for each active input.
magnetRange=8
# The maximum number of inputs for each node of the "neural network"
# nanomachines connect to. I.e. each behavior node and connector node
# may only have up to this many inputs.
maxInputs=2
# Hard maximum number of active inputs. This is mainly to avoid people
# bumping other nanomachines' inputs to max, killing them in a matter
# of (milli)seconds.
maxInputsActive=4
# The maximum number of outputs for each node (see maxInputs).
maxOutputs=2
# Whitelisted potions, i.e. potions that will be used for the potion
# behaviors nanomachines may trigger. This can contain strings or numbers.
# In the case of strings, it has to be the internal name of the potion,
# in case of a number it has to be the potion ID. Add any potion effects
# to make use of here, since they will all be disabled by default.
potionWhitelist=[
speed,
haste,
strength,
"jump_boost",
resistance,
"fire_resistance",
"water_breathing",
"night_vision",
absorption,
blindness,
nausea,
"mining_fatigue",
"instant_damage",
hunger,
slowness,
poison,
weakness,
wither
]
# How many input nodes may be active at the same time before negative
# effects are applied to the player.
safeInputsActive=2
# The relative amount of triggers available based on the number of
# available behaviors (such as different potion effects). For example,
# if there are a total of 10 behaviors available, 0.5 means there will
# be 5 trigger inputs, triggers being the inputs that can be activated
# via nanomachines.
triggerQuota=0.4
}
# Power settings, buffer sizes and power consumption.
power {
# The amount of energy the robot assembler can apply per tick. This
# controls the speed at which robots are assembled, basically.
assemblerTickAmount=50
# Default "buffer" sizes, i.e. how much energy certain blocks can store.
buffer {
# The amount of energy an access point can store.
accessPoint=600
# The amount of energy a capacitor can store when installed as an
# upgrade into a robot.
batteryUpgrades=[
10000,
15000,
20000
]
# The amount of energy a single capacitor can store.
capacitor=1600
# The amount of bonus energy a capacitor can store for each other
# capacitor it shares a face with. This bonus applies to both of the
# involved capacitors. It reaches a total of two blocks, where the
# bonus is halved for the second neighbor. So three capacitors in a
# row will give a total of 8.8k storage with default values:
# (1.6 + 0.8 + 0.4)k + (0.8 + 1.6 + 0.8)k + (0.4 + 0.8 + 1.6)k
capacitorAdjacencyBonus=800
# The amount of energy a computer can store. This allows you to get a
# computer up and running without also having to build a capacitor.
computer=500
# The amount of energy a converter can store. This allows directly
# connecting a converter to a distributor, without having to have a
# capacitor on the side of the converter.
converter=1000
# The amount of energy each face of a distributor can store. This
# allows connecting two power distributors directly. If the buffer
# capacity between the two distributors is zero, they won't be able
# to exchange energy. This basically controls the bandwidth. You can
# add capacitors between two distributors to increase this bandwidth.
distributor=500
# The amount of energy a drone can store in its internal buffer.
drone=5000
# The internal buffer size of the hover boots.
hoverBoots=15000
# The amount of energy a microcontroller can store in its internal
# buffer.
mcu=1000
# Amount of energy stored by nanomachines. Yeah, I also don't know
# where all that energy is stored. It's quite fascinating.
nanomachines=100000
# The amount of energy robots can store in their internal buffer.
robot=20000
# The amount a tablet can store in its internal buffer.
tablet=10000
}
# Carpeted Capacitor settings
# Carpeted Capacitors generate power when sheep or ocelots walk on them
# Power is generated when at least 2 of a type of animal are present.
# A single sheep and a single ocelot generates no power. Note that a
# computer constantly flashing the screen from white to black drains
# approximately 36 units of power per second. Thus, as an example with the
# default values, it would take 12 carpeted capacitors and 24 sheep
# (2 each) to keep the charge rate. Or, 6 carpeted capacitors and 12
# ocelots to do the same. Values are: units of power per carpeted
# capacitor per second with 2 animals of a type.
carpetedCapacitors {
# Chance one animal (per capacitor) will take some damage per minute
# Damage chance is only dealt when power is generated
damageChance=0.001
# power generated from ocelots
ocelotPower=6
# power generated from sheep
sheepPower=3
}
# The amount of energy a Charger transfers to each adjacent robot per tick
# if a maximum strength redstone signal is set. Chargers load robots with
# a controllable speed, based on the maximum strength of redstone signals
# going into the block. So if a redstone signal of eight is set, it'll
# charge robots at roughly half speed.
chargerChargeRate=100
# The amount of energy a Charger transfers into a tablet, if present, per
# tick. This is also based on configured charge speed, as for robots.
chargerChargeRateTablet=10
# Default "costs", i.e. how much energy certain operations consume.
cost {
# The cost of a single packet sent via StargateTech 2's abstract bus.
abstractBusPacket=1
# The amount of energy the chunkloader upgrade draws per tick while
# it is enabled, i.e. actually loading a chunk.
chunkloaderCost=0.06
# The amount of energy a computer consumes per tick when running.
computer=0.5
# Cost for asymmetric operations on the data card, such as ECDH and ECDSA
# Per-byte cost for ECDSA operation is controlled by `complex` value,
# because data is hashed with SHA256 before signing/verifying
dataCardAsymmetric=10
# Cost for complex operations on the data card, such as SHA256, inflate/deflate and SecureRandom.
dataCardComplex=6
# Per-byte cost for complex operations
dataCardComplexByte=0.1
# Cost for simple operations on the data card, such as MD5 or AES
dataCardSimple=1
# Per-byte cost for simple operations
dataCardSimpleByte=0.01
# Cost for trivial operations on the data card, such as CRC32 or Base64
dataCardTrivial=0.2
# Per-byte cost for trivial operations
dataCardTrivialByte=0.005
# The amount of energy it takes to extract one ingredient from an
# item that is being disassembled. For example, if an item that was
# crafted from three other items gets disassembled, a total of 15000
# energy will be required by default.
# Note that this is consumed over time, and each time this amount is
# reached *one* ingredient gets ejected (unless it breaks, see the
# disassemblerBreakChance setting).
disassemblerPerItem=2000
# The amount of energy a drone consumes per tick when running.
drone=0.4
# The base energy cost for assembling a drone.
droneAssemblyBase=25000
# The additional amount of energy required to assemble a
# drone for each point of complexity.
droneAssemblyComplexity=15000
# Energy it costs to re-program an EEPROM. This is deliberately
# expensive, to discourage frequent re-writing of EEPROMs.
eepromWrite=50
# How much energy is consumed when the Geolyzer scans a block.
geolyzerScan=10
# Energy it takes to clear a basic screen using the fill command with
# 'space' as the fill char.
# Note: internally this is adjusted to a cost per pixel, and applied
# as such, so this also implicitly defines the cost for higher tier
# screens.
gpuClear=0.1
# Energy it takes to copy half of a basic screen via the copy command.
# Note: internally this is adjusted to a cost per pixel, and applied
# as such, so this also implicitly defines the cost for higher tier
# screens.
gpuCopy=0.25
# Energy it takes to change a basic screen with the fill command.
# Note: internally this is adjusted to a cost per pixel, and applied
# as such, so this also implicitly defines the cost for higher tier
# screens.
gpuFill=1
# Energy it takes to change *every* 'pixel' via the set command of a
# basic screen via the `set` command.
# Note: internally this is adjusted to a cost per pixel, and applied
# as such, so this also implicitly defines the cost for higher tier
# screens.
gpuSet=2
# Energy it takes read one kilobyte from a file system. Note that non
# I/O operations on file systems such as `list` or `getFreeSpace` do
# *not* consume power. Note that this very much determines how much
# energy you need in store to start a computer, since you need enough
# to have the computer read all the libraries, which is around 60KB
# at the time of writing.
# Note: internally this is adjusted to a cost per byte, and applied
# as such. It's just specified per kilobyte to be more intuitive.
hddRead=0.1
# Energy it takes to write one kilobyte to a file system.
# Note: internally this is adjusted to a cost per byte, and applied
# as such. It's just specified per kilobyte to be more intuitive.
hddWrite=0.25
# The amount of energy a hologram projetor consumes per tick. This
# is the cost if every column is lit. If not a single voxel is
# displayed the hologram projector will not drain energy.
hologram=0.2
# The amount of energy consumed when the hover boots absorb some fall
# velocity (i.e. when falling from something higher than three blocks).
hoverBootAbsorb=10
# The amount of energy consumed when jumping with the hover boots. Only
# applies when the jump boost is applied, i.e. when not sneaking.
hoverBootJump=10
# The amount of energy consumed *per second* when moving around while
# wearing the hover boots. This is compensate for the step assist, which
# does not consume energy on a per-use basis. When standing still or
# moving very slowly this also does not trigger.
hoverBootMove=1
# Energy consumed by a MFU per tick while connected.
# Similarly to `wirelessCostPerRange`, this is multiplied with the distance to the bound block.
mfuRelay=1
# Amount of energy a microcontroller consumes per tick while running.
microcontroller=0.1
# The base energy cost for assembling a microcontroller.
microcontrollerAssemblyBase=10000
# The additional amount of energy required to assemble a
# microcontroller for each point of complexity.
microcontrollerAssemblyComplexity=10000
# Energy consumed per tick per active input node by nanomachines.
nanomachineInput=0.5
# Energy consumed when reconfiguring nanomachines.
nanomachinesReconfigure=5000
# The amount of energy pushing blocks with the piston upgrade costs.
pistonPush=20
# How much energy is required for a single 3D print.
printerModel=100
# The amount of energy a robot consumes per tick when running. This is
# per default less than a normal computer uses because... well... they
# are better optimized? It balances out due to the cost for movement,
# interaction and whatnot, and the fact that robots cannot connect to
# component networks directly, so they are no replacements for normal
# computers.
robot=0.25
# The base energy cost for assembling a robot.
robotAssemblyBase=50000
# The additional amount of energy required to assemble a robot for
# each point of complexity.
robotAssemblyComplexity=10000
# The conversion rate of exhaustion from using items to energy
# consumed. Zero means exhaustion does not require energy, one is a
# one to one conversion. For example, breaking a block generates 0.025
# exhaustion, attacking an entity generates 0.3 exhaustion.
robotExhaustion=10
# The amount of energy it takes a robot to move a single block.
robotMove=15
# The amount of energy it takes a robot to perform a 90 degree turn.
robotTurn=2.5
# The amount of energy a screen consumes per tick. For each lit pixel
# (each character that is not blank) this cost increases linearly:
# for basic screens, if all pixels are lit the cost per tick will be
# this value. Higher tier screens can become even more expensive to
# run, due to their higher resolution. If a screen cannot consume the
# defined amount of energy it will stop rendering the text that
# should be displayed on it. It will *not* forget that text, however,
# so when enough power is available again it will restore the
# previously displayed text (with any changes possibly made in the
# meantime). Note that for multi-block screens *each* screen that is
# part of it will consume this amount of energy per tick.
screen=0.05
# The actual cost per tick for computers and robots is multiplied
# with this value if they are currently in a "sleeping" state. They
# enter this state either by calling `os.sleep()` or by pulling
# signals. Note that this does not apply in the tick they resume, so
# you can't fake sleep by calling `os.sleep(0)`.
sleepFactor=0.1
# The base energy cost for assembling a tablet.
tabletAssemblyBase=20000
# The additional amount of energy required to assemble a tablet for
# each point of complexity.
tabletAssemblyComplexity=5000
# Energy required for one transposer operation (regardless of the number
# of items / fluid volume moved).
transposer=1
# The amount of energy it costs to send a wireless message with signal
# strength one, which means the signal reaches one block. This is
# scaled up linearly, so for example to send a signal 400 blocks a
# signal strength of 400 is required, costing a total of
# 400 * `wirelessCostPerRange`. In other words, the higher this value,
# the higher the cost of wireless messages.
# See also: `maxWirelessRange`.
# These values are for the tier 1 and 2 wireless cards, in that order.
wirelessCostPerRange=[
0.05,
0.05
]
}
# The amount of energy the disassembler can apply per tick. This
# controls the speed at which items are disassembled, basically.
disassemblerTickAmount=25
# The energy efficiency of the generator upgrade. At 1.0 this will
# generate as much energy as you'd get by burning the fuel in a BuildCraft
# Stirling Engine (1MJ per fuel value / burn ticks). To discourage fully
# autonomous robots the efficiency of generators is slighly reduced by
# default.
generatorEfficiency=0.8
# Whether to ignore any power requirements. Whenever something requires
# power to function, it will try to get the amount of energy it needs from
# the buffer of its connector node, and in case it fails it won't perform
# the action / trigger a shutdown / whatever. Setting this to `true` will
# simply make the check 'is there enough energy' succeed unconditionally.
# Note that buffers are still filled and emptied following the usual
# rules, there just is no failure case anymore. The converter will however
# not accept power from other mods.
ignorePower=false
# If you don't want OpenComputers to accept power from one or more of the
# supported power mods, for example because it doesn't suit the vision
# of your mod pack, you can disable support for them here. To stop
# OpenComputers accepting power from a mod, enter its mod id here, e.g.
# `BuildCraftAPI|power`, `IC2`, `factorization`, ...
modBlacklist=[]
# The amount of energy the printer can apply per tick. This controls
# the speed at which prints are completed, basically.
printerTickAmount=1
# The rate at which different blocks accept external power. All of these
# values are in OC energy / tick.
rate {
accessPoint=10
assembler=100
case=[
5,
10,
20
]
charger=200
disassembler=50
powerConverter=500
serverRack=50
}
# The energy efficiency of the solar generator upgrade. At 1.0 this will
# generate as much energy as you'd get by burning fuel in a BuildCraft
# Stirling Engine . To discourage fully autonomous robots the efficiency
# of solar generators is greatly reduced by default.
solarGeneratorEfficiency=0.2
# This determines how often continuous power sinks try to actually try to
# consume energy from the network. This includes computers, robots and
# screens. This also controls how frequent distributors revalidate their
# global state and secondary distributors, as well as how often the power
# converter queries sources for energy (for now: only BuildCraft). If set
# to 1, this would query every tick. The default queries every 10 ticks,
# or in other words twice per second.
# Higher values mean more responsive power consumption, but slightly more
# work per tick (shouldn't be that noticeable, though). Note that this
# has no influence on the actual amount of energy required by computers
# and screens. The power cost is directly scaled up accordingly:
# `tickFrequency * cost`.
tickFrequency=10
# Power values for different power systems. For reference, the value of
# OC's internal energy type is 1000. I.e. the conversion ratios are the
# values here divided by 1000. This is mainly to avoid small floating
# point numbers in the config, due to potential loss of precision.
value {
AppliedEnergistics2=200
Factorization=13
# same as RedstoneFlux
ForgeEnergy=100
Galacticraft=48
IndustrialCraft2=400
Mekanism=1333.33
PowerAdvantage=31.25
RedstoneFlux=100
# / 11256, same as AE2
RotaryCraft=200
}
}
# 3D printer related stuff.
printer {
# Whether Chamelium is edible or not. When eaten, it gives a (short)
# invisibility buff, and (slightly longer) blindness debuff.
chameliumEdible=true
# The extra material cost involved for printing a model with a customized
# redstone output, i.e. something in [1, 14].
customRedstoneCost=300
# The amount by which a printers ink buffer gets filled for a single
# cartridge. Tweak this if you think printing is too cheap or expensive.
# Note: the amount a single dye adds is this divided by 10.
inkValue=50000
# The amount by which a printers material buffer gets filled for a single
# chamelium. Tweak this if you think printing is too cheap or expensive.
materialValue=2000
# The maximum light level a printed block can emit. This defaults to
# a value similar to that of a redstone torch, because by default the
# material prints are made of contains redstone, but no glowstone.
# Prints' light level can further be boosted by crafting them with
# glowstone dust. This is merely the maximum light level that can be
# achieved directly when printing them.
maxBaseLightLevel=8
# The maximum number of shape for a state of a 3D print allowed. This is
# for the individual states (off and on), so it is possible to have up to
# this many shapes *per state* (the reasoning being that only one state
# will ever be visible at a time).
maxShapes=24
# By what (linear) factor the cost of a print increases if one or both of
# its states are non-collidable (i.e. entities can move through them).
# This only influences the chamelium cost.
noclipMultiplier=2
# Whether to enable print opacity, i.e. make prints have shadows. If
# enabled, prints will have an opacity that is estimated from their
# sampled fill rate. This is disabled by default, because MC's lighting
# computation is apparently not very happy with multiple blocks with
# dynamic opacity sitting next to each other, and since all prints share
# the same block type, this can lead to weird shadows on prints. If you
# don't care about that and prefer them to be not totally shadowless,
# enable this.
printsHaveOpacity=false
# How much of the material used to print a model is refunded when using
# the model to refuel a printer. This the value the original material
# cost is multiplied with, so 1 is a full refund, 0 disables the
# functionality (won't be able to put prints into the material input).
recycleRate=0.75
}
# Robot related settings, what they may do and general balancing.
robot {
# Whether robots may 'activate' blocks in the world. This includes
# pressing buttons and flipping levers, for example. Disable this if it
# causes problems with some mod (but let me know!) or if you think this
# feature is too over-powered.
allowActivateBlocks=true
# Whether robots may use items for a specifiable duration. This allows
# robots to use items such as bows, for which the right mouse button has
# to be held down for a longer period of time. For robots this works
# slightly different: the item is told it was used for the specified
# duration immediately, but the robot will not resume execution until the
# time that the item was supposedly being used has elapsed. This way
# robots cannot rapidly fire critical shots with a bow, for example.
allowUseItemsWithDuration=true
# Whether robots may damage players if they get in their way. This
# includes all 'player' entities, which may be more than just real players
# in the game.
canAttackPlayers=false
# Allows fine-tuning of delays for robot actions.
delays {
# The time in seconds to pause execution after an item was
# successfully dropped from a robot's inventory.
drop=0.5
# This is the *ratio* of the time a player would require to harvest a
# block. Note that robots cannot break blocks they cannot harvest. So
# the time a robot is forced to sleep after harvesting a block is
# breakTime * harvestRatio
# Breaking a block will always at least take one tick, 0.05 seconds.
harvestRatio=1
# The time in seconds to pause execution after a robot issued a
# successful move command. Note that this essentially determines how
# fast robots can move around, since this also determines the length
# of the move animation.
move=0.4
# The time in seconds to pause execution after a robot successfully
# placed an item from its inventory.
place=0.4
# The time in seconds to pause execution after a robot successfully
# picked up an item after triggering a suck command.
suck=0.5
# The time in seconds to pause execution after a robot successfully
# swung a tool (or it's 'hands' if nothing is equipped). Successful in
# this case means that it hit something, i.e. it attacked an entity or
# extinguishing fires.
# When breaking blocks the normal harvest time scaled with the
# `harvestRatio` (see below) applies.
swing=0.4
# The time in seconds to pause execution after a robot turned either
# left or right. Note that this essentially determines hw fast robots
# can turn around, since this also determines the length of the turn
# animation.
turn=0.4
# The time in seconds to pause execution after a robot successfully
# used an equipped tool (or it's 'hands' if nothing is equipped).
# Successful in this case means that it either used the equipped item,
# for example a splash potion, or that it activated a block, for
# example by pushing a button.
# Note that if an item is used for a specific amount of time, like
# when shooting a bow, the maximum of this and the duration of the
# item use is taken.
use=0.4
}
# The rate at which items used as tools by robots take damage. A value of
# one means that items lose durability as quickly as when they are used by
# a real player. A value of zero means they will not lose any durability
# at all. This only applies to items that can actually be damaged (such as
# swords, pickaxes, axes and shovels).
# Note that this actually is the *chance* of an item losing durability
# when it is used. Or in other words, it's the inverse chance that the
# item will be automatically repaired for the damage it just took
# immediately after it was used.
itemDamageRate=0.1
# Limit robot flight height, based on the following rules:
# - Robots may only move if the start or target position is valid (e.g.
# to allow building bridges).
# - The position below a robot is always valid (can always move down).
# - Positions up to <flightHeight> above a block are valid (limited
# flight capabilities).
# - Any position that has an adjacent block with a solid face towards the
# position is valid (robots can "climb").
# Set this to 256 to allow robots to fly whereever, as was the case
# before the 1.5 update. Consider using drones for cases where you need
# unlimited flight capabilities instead!
limitFlightHeight=8
# The name format to use for robots. The substring '$player$' is
# replaced with the name of the player that owns the robot, so for the
# first robot placed this will be the name of the player that placed it.
# This is transitive, i.e. when a robot in turn places a robot, that
# robot's owner, too, will be the owner of the placing robot.
# The substring $random$ will be replaced with a random number in the
# interval [1, 0xFFFFFF], which may be useful if you need to differentiate
# individual robots.
# If a robot is placed by something that is not a player, e.g. by some
# block from another mod, the name will default to 'OpenComputers'.
nameFormat="$player$.robot"
# Determines whether robots are a pretty cool guy. Ususally cobwebs are
# the bane of anything using a tool other than a sword or shears. This is
# an utter pain in the part you sit on, because it makes robots meant to
# dig holes utterly useless: the poor things couldn't break cobwebs in
# mining shafts with their golden pick axes. So, if this setting is true,
# we check for cobwebs and allow robots to break 'em anyway, no matter
# their current tool. After all, the hardness value of cobweb can only
# rationally explained by Steve's fear of spiders, anyway.
notAfraidOfSpiders=true
# The 'range' of robots when swinging an equipped tool (left click). This
# is the distance to the center of block the robot swings the tool in to
# the side the tool is swung towards. I.e. for the collision check, which
# is performed via ray tracing, this determines the end point of the ray
# like so: `block_center + unit_vector_towards_side * swingRange`
# This defaults to a value just below 0.5 to ensure the robots will not
# hit anything that's actually outside said block.
swingRange=0.49
# The maximum flight height with upgrades, tier one and tier two of the
# hover upgrade, respectively.
upgradeFlightHeight=[
64,
256
]
# The 'range' of robots when using an equipped tool (right click) or when
# placing items from their inventory. See `robot.swingRange`. This
# defaults to a value large enough to allow robots to detect 'farmland',
# i.e. tilled dirt, so that they can plant seeds.
useAndPlaceRange=0.65
# Controls the UUID robots are given. You can either specify a fixed UUID
# here or use the two provided variables:
# - $random$, which will assign each robot a random UUID.
# - $player$, which assigns to each placed robot the UUID of the player
# that placed it (note: if robots are placed by fake players, i.e.
# other mods' blocks, they will get that mods' fake player's profile!)
# Note that if no player UUID is available this will be the same as
# $random$.
uuidFormat="$player$"
# This controls how fast robots gain experience, and how that experience
# alters the stats.
xp {
# This controls how much experience a robot gains for each successful
# action it performs. "Actions" only include the following: swinging a
# tool and killing something or destroying a block and placing a block
# successfully. Note that a call to `swing` or `use` while "bare handed"
# will *not* gain a robot any experience.
actionXp=0.05
# The required amount per level is computed like this:
# xp(level) = baseValue + (level * constantGrowth) ^ exponentialGrowth
baseValue=50
# This is the amount of additional energy that fits into a robots
# internal buffer for each level it gains. So with the default values,
# at maximum level (30) a robot will have an internal buffer size of
# two hundred thousand.
bufferPerLevel=5000
# The required amount per level is computed like this:
# xp(level) = baseValue + (level * constantGrowth) ^ exponentialGrowth
constantGrowth=8
# This determines how much "exhaustion" contributes to a robots
# experience. This is additive to the "action" xp, so digging a block
# will per default give 0.05 + 0.025 [exhaustion] * 1.0 = 0.075 XP.
exhaustionXpRate=1
# The required amount per level is computed like this:
# xp(level) = baseValue + (level * constantGrowth) ^ exponentialGrowth
exponentialGrowth=2
# The increase in block harvest speed a robot gains per level. The time
# it takes to break a block is computed as actualTime * (1 - bonus).
# For example at level 20, with a bonus of 0.4 instead of taking 0.3
# seconds to break a stone block with a diamond pick axe it only takes
# 0.12 seconds.
harvestSpeedBoostPerLevel=0.02
# This determines how much experience a robot gets for each real XP orb
# an ore it harvested would have dropped. For example, coal is worth
# two real experience points, redstone is worth 5.
oreXpRate=4
# The additional "efficiency" a robot gains in using tools with each
# level. This basically increases the chances of a tool not losing
# durability when used, relative to the base rate. So for example, a
# robot with level 15 gets a 0.15 bonus, with the default damage rate
# that would lead to a damage rate of 0.1 * (1 - 0.15) = 0.085.
toolEfficiencyPerLevel=0.01
}
}
# Switch and access point network message forwarding logic related stuff.
switch {
# This is the size of the queue of a not upgraded switch. Increasing it
# avoids packets being dropped when many messages are sent in a single
# burst.
defaultMaxQueueSize=20
# The base number of packets that get relayed in one 'cycle'. The
# cooldown between cycles is determined by the delay.
defaultRelayAmount=1
# The delay a switch has by default between relaying packets (in ticks).
# WARNING: lowering this value will result in higher maximum CPU load,
# and may in extreme cases cause server lag.
defaultRelayDelay=5
# This is the amount by which the queue size increases per tier of the
# hard drive installed in the switch.
queueSizeUpgrade=10
# The number of additional packets that get relayed per cycle, based on
# the tier of RAM installed in the switch. For built-in RAM this
# increases by one per half-tier, for third-party ram this increases by
# two per item tier.
relayAmountUpgrade=1
# The amount of ticks the delay is *reduced* by per tier of the CPU
# inserted into a switch.
relayDelayUpgrade=1.5
}
# The version of OC this config was generated by. This is used to allow the
# mod to reset parts of the config when their meaning changed across
# versions, so that the user does not have to delete it.
version="1.7.5.192"
}