Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
sdb. (string dupers back.)

support
description
brings string dupers back to minecraft.
features
configurable limits: set the duper rate per tick, per second, and per hour
multi-position farms: one module can contain any number of tripwire positions
shared global rate limiter across every module, player, and world
toggle: on or off, in game or in the config
safe config reload without restarting the server or breaking active farms
tab completion for all available commands
how it works
when water flows from a waterlogged trapdoor into an attached tripwire, the flow is intercepted and the tripwire is temporarily handled by the duper, producing one string at its position.
a module is an entire string duper setup: a continuous tripwire line with hooks at both ends and any number of waterlogged trapdoors feeding positions along that line.
each position in a module can run its own duplication cycle independently. a 7-position module therefore has 7 possible active positions, while still counting as only one module toward modules.max-active.
every string produced spends from one shared global budget, controlled by the limits below.
usage
-
drop the jar into your
pluginsfolder
-
start the server to generate
config.yml
-
adjust the limits to your liking
-
use it with
/stringduper <on|off|toggle|reload>
commands
| command | effect | reply |
|---|---|---|
/stringduper on |
enables the duper | String duper enabled. |
/stringduper off |
disables the duper | String duper disabled. |
/stringduper toggle |
flips the current state | whichever of the two applies |
/stringduper reload |
safely reloads the configuration | sdb. configuration reloaded. |
players with op only. it can't be run from the console
tab completion suggests on, off, toggle, and reload
the state is server-wide and takes effect immediately, in every world
the state is not saved. on restart it goes back to the enabled value in config.yml
reload applies configuration changes without restarting the server and preserves active farms and cycles
if the configuration cannot be loaded safely, the previous configuration remains active
missing or extra arguments return the usage line, and an unknown action returns Unknown action. Use on, off, toggle, or reload.
enabled: true
modules:
max-active: 4
limits:
per-tick: 0.4
per-second: 8.0
per-hour: 28800.0
| key | default | description |
|---|---|---|
enabled |
true |
state at startup. must be true or false |
debug |
false |
show debug messages from the duper on console |
modules.max-active |
4 |
maximum number of active duper modules at once. whole number, 0 or higher |
limits.per-tick |
0.4 |
maximum amount added to the budget each tick. decimals allowed |
limits.per-second |
8.0 |
sustained strings per second |
limits.per-hour |
28800.0 |
sustained strings per hour, averaged continuously |
how the limits combine
all three limits apply at the same time and the lowest one wins. each is converted to strings per second:
per-tick x 20
per-second as is
per-hour / 3600
the smallest result is the sustained rate.
with the default values:
0.4 x 20 = 8
8.0 = 8
28800 / 3600 = 8
so all three limits allow the same sustained rate of 8 strings per second.
per-hour is a steady rate, not a counter that resets. it does not allow 28800 drops through immediately and then stop for the rest of the hour.
per-tick also controls burst size. the budget refills by at most per-tick each tick and has a small burst capacity based on that value.
the budget is global. it is shared by every module, every position, every player, and every world on the server.
when the budget is empty, duplication waits for it to refill instead of destroying or skipping the farm cycle.
setting any limit to 0 stops drops entirely.
modules
a module is an entire string duper setup, not an individual trapdoor or tripwire block.
a module consists of a continuous tripwire line with hooks at both ends and any number of waterlogged trapdoors feeding positions along the line.
for example:
H----------------
| position 1
| position 2
| position 3
| position 4
| position 5
| position 6
| position 7
H-----------------
H= Hook
is one module with 7 positions, not 7 modules.
each position can have its own duplication cycle and can operate independently of the other positions in the same module.
a module is identified by its complete structure and remains a single module regardless of how many positions it contains.
modules.max-active counts complete modules, not individual positions or cycles.
a module is released after 60 seconds without activity
when modules.max-active modules are active, another module can wait until a slot becomes available
0 turns duping off entirely, equivalent to disabling the plugin through enabled
applying changes
config.yml is read when the plugin loads.
after editing the configuration, use:
/stringduper reload
to apply the changes without restarting the server.
reload is designed to preserve existing farms, cached modules, queued cycles, and active cycles. it does not create additional listeners, tasks, or rate limiters.
if the new configuration is invalid or cannot be loaded safely, the previous configuration remains active.
compatibility
bukkit plugin, built for paper and other bukkit-based servers
api version 26.2


