← 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.

v4.0.0 Hytale 0.6.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

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.