← All plugins
GlymeraLumberTower icon

GlymeraLumberTower

Automated tree-felling tower with 4 built-in chests. Fires a green bolt at the nearest tree in a 60-block cube every 5s, fells the whole trunk, vacuums the drops into its chests, and replants a sapling of the same species.

v6.0.0 Hytale 0.7.x FarmingFurnitureGameplayMiscellaneousQuality of Life

Gallery

Description

GlymeraLumberTower - Automated Tree-Felling Tower with Built-In Chests

Place a single tower block and watch it shoot bolts at nearby trees, fell them, vacuum the wood into its built-in chests, and replant a sapling of the same species - all on its own.


What is GlymeraLumberTower?

GlymeraLumberTower adds a static 9-block-tall tower (17 gold-brick blocks + 4 built-in chests) that automates tree harvesting completely. Place it, then walk away. Every five seconds it scans a configurable cube (32 blocks by default) around itself, fires a green energy bolt at the nearest tree, fells the entire trunk column, sucks the drops into its own chests, and plants a replacement sapling of the matching wood type. When all chests are full, the tower pauses until you make space.

Single JAR, no setup. Drop it into your server's mods/ folder and craft the tower at a workbench.


Features

Fully Automated Tree Harvesting

  • 5-second fire cycle per tower - scans, fires, fells, vacuums, replants
  • Configurable Chebyshev cube range (default 32 blocks; 3D cube, not sphere - matches the way players think about block ranges)
  • Picks the nearest tree when multiple are in range
  • Visual bolt: bright green particle trail from the tower tip to the trunk plus an impact strike, with shot/impact sound effects

Smart Trunk Felling

  • Fells the entire trunk column in one shot, not just the bottom block
  • Triggers Hytale's native physics cascade for branches and leaves (breakBlock(x, y, z, 0x100))
  • Spawns the trunk's natural item drops (the programmatic break path otherwise loses them)

Drop Vacuuming

  • 1.5 seconds after impact, the tower scans all item entities in its fire radius
  • Tree-drop filter: only picks up wood, leaves, branches, and saplings - unrelated drops on the ground stay where they are
  • Round-robin insertion across the four built-in chests, falling through full ones
  • Visual feedback: a small green particle burst at the tower tip on each successful vacuum

Automatic Replanting

  • On each successful chop, plants a Plant_Sapling_<WoodType> on the nearest soil block (Type=Soil tag, broader than just Soil_*)
  • One-sapling-per-tree rule: skips the replant if any sapling already sits within 10 blocks - so multi-shot chopping of one tree never produces a forest of saplings
  • Species match: an Oak trunk replants Oak, Stormbark replants Stormbark, etc. (species without a matching sapling - Burnt, Fir - are silently skipped)

Atomic Tower Break (Exploit-Proof)

  • The four chest blocks and the floor directly underneath them are protected from being broken or damaged - undermining the floor would otherwise physics-drop a chest as an item
  • Breaking any tower block (chest, gold-brick, ornate top) demolishes the entire tower atomically and returns a single tower item to the player
  • All chest contents are spawned as item drops at the tower's base - survival players never lose stored items when picking up the tower
  • Non-owners cannot break the tower; OPs override

Built-In Chests

  • 4× Furniture_Dungeon_Chest_Epic blocks form the tower's foot - right-click to open like any native chest
  • Tower pauses firing when all four chests are completely full - no items are destroyed by an overflowing tower
  • Chest contents survive server restarts (native Hytale persistence)

Recipe Toggle

  • Workbench recipe is enabled by default
  • Set recipesEnabled: false in config.json to disable crafting and let admins gate distribution via /give

Crafting

The tower is crafted at the Workbench (Crafting → Workbench_Survival category):

Ingredient Quantity
Concentrated Life Essence (Ingredient_Life_Essence_Concentrated) 3
Gold Bar (Ingredient_Bar_Gold) 5

Output: 1× GlymeraLumberTower (5 second craft time)

Admins can also use /give <player> GlymeraLumberTower to hand them out directly.


Commands

All sub-commands of /lumbertower are OP-only by design (world-modifying or admin commands).

Command Description
/lumbertower spawn Place a tower at your feet (the NW-bottom-chest is the anchor)
/lumbertower remove Remove the nearest tower in this world (clean removal, no item drop)
/lumbertower list Show the tower count in this world (yours / total)
/lumbertower capture <halfWidth> <height> Re-capture the structure around you as a new tower template
/lumbertower captureat <x> <y> <z> <halfWidth> <height> Same, with an explicit anchor position

Configuration

Config file: mods/de.glymera_GlymeraLumberTower/config.json (auto-generated on first start)

{
  "_info": "GlymeraLumberTower v1.0.0 - Automated lumber towers.",
  "fireRadius": 32,
  "cooldownMs": 5000,
  "fireTickMs": 1000,
  "maxTreeHeight": 32,
  "projectileSpeed": 50.0,
  "recipesEnabled": true
}
Field Description
fireRadius 3D Chebyshev half-edge in blocks (default 32 → 65×65×65 search cube)
cooldownMs Milliseconds between shots per tower (default 5000 = 5s)
fireTickMs How often the tower's fire-tick loop runs (default 1000 = 1s)
maxTreeHeight Maximum trunk-column height the felling walks up (default 32)
projectileSpeed Bolt flight speed in blocks per second (default 50 → ~0.6s at 32 blocks)
recipesEnabled If false, the workbench recipe is blocked - admins distribute via /give

Installation

Drop the single JAR into your server's mods/ folder:

mods/GlymeraLumberTower-1.0.0.jar

That's it. The JAR contains everything: plugin code, the default tower template, block + recipe definitions, particle systems, sounds, icon, and language files. Config, template, and tower-data files are auto-generated under mods/de.glymera_GlymeraLumberTower/ on first start.


Technical Details

  • All-in-one JAR with IncludesAssetPack: true - no separate pack folders required
  • Default tower template is shipped as /default-template.json inside the JAR and extracted to the data directory on first start (matches the GlymeraObelisk pattern)
  • Trunk felling uses world.breakBlock(x, y, z, 0x100) to trigger Hytale's native neighbour-update cascade (the setBlock("Empty") low-level path would silently delete blocks without propagating updates to branches and leaves)
  • Trunk drops are spawned manually via ItemComponent.generateItemDrops because the programmatic break path does not produce the natural drop pipeline output
  • Bottom-trunk detection filters trunks whose block below is not the same trunk type (natural Hytale trees have Wood_*_Roots with Material:Empty beneath the bottom log)
  • Soil detection uses the Type=Soil tag rather than the Soil_* name prefix - this also catches Pathway_* and other tagged blocks that saplings will accept
  • Sapling re-validation gap: Hytale does not validate Support.Down at setBlock time, only at the first growth tick. The 10-block radius check on existing saplings ensures one tree → one sapling regardless of how many bolts hit it
  • Atomic protection is tracked in two maps: blockPosToLumberTower (the 21 tower blocks) and supportPosToLumberTower (the 4 floor positions under the chests). Break/Damage events on either map trigger atomic demolition; on demolition all chest contents are extracted via ItemContainerBlock.getItemContainer().getItemStack(i) and spawned as item drops
  • Persistence is atomic (.tmp + ATOMIC_MOVE) to prevent zero-byte files on crash

Good to Know

  • Towers do not aim across worlds. Each tower scans only its own world.
  • Towers do not aim at branches or leaves. Only bottom-trunk blocks are targeted - branches and leaves come down via the physics cascade after the trunk is broken.
  • Multiple towers in overlapping range all fire independently. The chest contents may end up redundantly populated if both towers vacuum the same drops - that's fine, items are not duplicated.
  • Tower placement uses the player's foot position as the NW-bottom-chest anchor. Make sure you have a 3×3 footprint of clear space at your feet when using /lumbertower spawn.
  • The recipe is identical to the GlymeraObelisk recipe (3× Concentrated Life Essence + 5× Gold Bar at Workbench Survival). Both items appear as separate craftable entries in the bench - the player picks which one to craft.

Made with care by Glymera for the Hytale community

Changelog

GlymeraLumberTower - Changelog

v6.0.0 (2026-10-16) — sticks, tree sap and plant fibre are collected too

  • Fix: the tower left part of the harvest on the ground. A felled tree drops more than logs: sticks and tree sap fall out of the branches, plant fibre out of the leaves. The tower only collected the logs (and leaf or sapling items, which trees do not actually drop) and left the rest lying around. It now collects everything a tree drops.
  • New config: pick what gets collected. collectLogs, collectSticks, collectTreeSap, collectPlantFibre and collectSaplings (all true by default). Set one to false and that kind stays on the ground for you to pick up yourself.
  • Every setting in config.json now has its explanation directly above it (_name lines), refreshed on every start; your values are kept. The config path is printed in the server log on startup. A config.json that cannot be read is left untouched, with a warning in the log, and the defaults are used until it is fixed.
  • Upgrade: replace the jar in mods/, keep the plugin's data folder and restart the server.

v5.0.0 (2026-10-12) — Hytale 0.7.0 (Update 7)

  • Rebuilt for Hytale 0.7.0 (Update 7 / Chapter 1). Requires server 0.7.0 or newer; this version does not run on 0.6.x, and the previous version does not run on 0.7.0 (the server removed the old block and chunk API).
  • Migrated to the 0.7.0 world API: block reads and writes now go through the chunk store and block sections (BlockOperations), chunk ticking through the engine's new marker component, spawn points through the asynchronous spawn provider.
  • Mod icon added (icon-256.png in the jar) so the plugin shows its picture in the world's mod list instead of a question mark.
  • Upgrade: delete the old jar from mods/, drop in the new one and keep the plugin's data folder — configs and saved data carry over unchanged. Restart the server.
  • Block placement migrated from the removed chunk accessor to the section API; behaviour unchanged.

v4.0.0 (2026-08-28) — Hytale 0.6.0 (Update 6)

  • Rebuilt for Hytale 0.6.0 (Update 6). Requires server 0.6.0 or newer; this version does not run on 0.5.x, and older versions of this plugin do not run on 0.6.0.
  • Migrated to the 0.6.0 APIs (network protocol hytale/3, new command-permission API, block/chunk/entity API changes). Everything that was open to players before is open to players again.
  • Upgrade: delete the old jar from mods/, drop in the new one and keep the plugin's data folder — configs and saved data carry over unchanged. Restart the server.

v3.0.0 (2026-05-30)

Performance fix. The fire-tick tree search was far too expensive and scaled badly
with many towers — on a populated server (for example 10 players × 3 towers each) the
old cost could saturate the world's main thread and cause server-wide lag.

Root cause

  • The "nearest trunk" search brute-force scanned the entire fireRadius cube on every
    attempt. At the default fireRadius=60 that is a 121×121×121 box — roughly 1.8
    million block reads per scan — and it runs on the world's main (tick) thread.
  • A tower that had free chest space but no tree left in range never started its
    cooldown (only a successful shot did), so it re-scanned that whole cube every
    single second, forever. Idle towers were the most expensive ones of all.

Fix

  • Single rate gate. Every scan attempt — hit, miss, or full chest — now stamps the
    per-tower timer, so a tower scans at most once per cooldownMs (default 5 s) instead
    of every second. This removes the endless idle re-scan.
  • Ring search with early-out. The cube scan is replaced by an outward
    Chebyshev-ring search. Because every block in ring d is at least d blocks away,
    once a candidate is found that is closer than the current ring the search stops — the
    work is now proportional to the distance to the nearest tree (typically a few hundred
    reads), not to the cube volume. It still returns the exact nearest bottom-trunk.
  • Per-column early break at the tree base, plus a tighter inner loop.
  • Default fireRadius lowered 60 → 32. Existing config.json files keep their
    saved value; lower it there as well for the full benefit in the worst case (a tower
    with no tree anywhere in range).

Result

  • With a tree in range, per-scan cost drops by roughly one to two orders of magnitude.
  • Idle towers drop by a further ~5× from the rate-gate fix.
  • Many towers no longer pile their scans onto the single main thread.

No gameplay changes: harvesting, replanting, drop vacuuming, the recipe and the
tower-break protection all behave exactly as before.

v1.0.0 (2026-05-21)

Initial release.

Tower Structure

  • Static 9-block-tall tower placed via a single inventory item: 17× Rock_Gold_Brick_* blocks (Ornate/Beam/Roof/Pillar_Base) plus 4× Furniture_Dungeon_Chest_Epic as the foot
  • Default layout is shipped as default-template.json inside the JAR and extracted to the data directory on first start - no admin setup required
  • Re-capturable via /lumbertower capture and /lumbertower captureat for server admins who want a different tower shape

Automated Tree Harvesting

  • Fire-tick loop runs every 1 second; per-tower cooldown is 5 seconds between shots
  • 60-block Chebyshev cube scan (fireRadius=60) picks the nearest bottom-trunk in range
  • Green particle bolt (LumberTowerBolt spawner, RGB 50/220/80) flies from the tower tip to the trunk at ~50 blocks/s, with shot and impact sound effects
  • On impact the trunk column is felled top-to-bottom via world.breakBlock(x, y, z, 0x100), triggering Hytale's native neighbour-update cascade for branches and leaves
  • Trunk drops are spawned manually via ItemComponent.generateItemDrops because the programmatic break path does not produce the natural drop pipeline output
  • Pre-shot check pauses firing when all four chests are completely full

Drop Vacuuming

  • 1.5 seconds after a successful chop, the tower scans all item entities in its fire radius
  • Filter accepts only tree-related item ids (Wood_*, Plant_Leaves*, Plant_Sapling*, *_Branch*, *_Leaves*) - unrelated drops on the ground stay put
  • Round-robin chest insertion via ItemContainer.addItemStack; items that don't fit anywhere stay on the ground
  • Visual feedback: a small green particle burst at the tower tip on each vacuum cycle

Automatic Replanting

  • On each successful chop, plants a Plant_Sapling_<WoodType> on the nearest soil block within radius 5
  • One-sapling-per-tree gate: skips the replant if any sapling already sits within 10 blocks of the felled trunk - multi-shot chopping of a single tree produces at most one sapling
  • Soil detection uses the Type=Soil tag rather than the Soil_* name prefix; this also catches Pathway_* and other tagged blocks that saplings will accept
  • Species with no matching sapling (Burnt, Fir) are silently skipped

Atomic Tower Break (Exploit-Proof)

  • The four chest blocks and the floor positions directly underneath them are protected from BreakBlockEvent and DamageBlockEvent for non-owners
  • Without this, a player could undermine the floor under a chest, the chest would physics-drop as an item, the tower would still be intact, and the chest could be combined with a fresh placement to produce unlimited chests - exploit closed
  • Owner/OP break on any tower block triggers an atomic demolition: the entire 21-block structure is silently removed, the 4 chest inventories are extracted and spawned as item drops at the tower base, and one GlymeraLumberTower item is returned to the player's hotbar
  • Survival players never lose their stored items when picking the tower back up

Recipe

  • Crafted at the Workbench (Crafting → Workbench_Survival) from 3× Ingredient_Life_Essence_Concentrated + 5× Ingredient_Bar_Gold in 5 seconds
  • recipesEnabled: false in config.json blocks the workbench recipe via CraftRecipeEvent.Pre for admin-gated distribution

Item Icon

  • 32×32 in-game screenshot of the placed tower, native Hytale convention
  • Matches the convention from project_glymeraBeacons v2 - rendered icons or oversized PNGs cause the engine to stripe-stripe them into unreadability

Plugin Logic Architecture

  • Forked from GlymeraObelisk v2.0.0, replacing the lightning-strike-on-hostile-NPCs logic with tree-felling. The chest, vacuum, replant, and atomic-break logic are net-new to this plugin
  • Single all-in-one JAR with IncludesAssetPack: true; particles, sounds, recipes, language strings, and the default template are all bundled
  • Persistence (towers.json, template.json, config.json) uses atomic .tmp + ATOMIC_MOVE writes to prevent zero-byte files on crash
Public — visible to everyone. No account needed.

Only Marc can read this.