Repository navigation
Releases: Neroland/nerotech
Release list
NeroTech 0.6.0-beta.1
Quest pack, personal milestone records and cleaner world signals. Requires Neroland Core 1.15.0
(player gates by UUID, sourced threshold crossings). No new dependency: the quest pack is inert data.
Added
- NeroQuests quest pack — chapter
nerotech:industrial_record"Industrial Record", 19 quests
(16 player, 3 server world-log) — that appears in the quest book when NeroQuests is installed; inert
otherwise, no dependency in any form. The player line runs components → generator →
fabricator → ore processor → solar/wind → grid → scrubber and remediator → heat and gas → fusion
parts → stellar fuel → collider parts → antimatter, plus four milestone quests (below). Machine
outputs arecollect_itemobjectives, never crafts. - Milestone record gates (
data/nerotech/neroland_gates/, player scope, norequires, checked by
nothing):nerotech:fusion_online(the Fusion Reactor shell forms),nerotech:first_collision
(the Collider lands its first product),nerotech:remediated(a Remediator actually removes
pollution) andnerotech:grid_scale(a Grid Controller's summed machine capacity reaches the new
gridScaleMilestoneCapacity, default 5,000,000 NE;0disables). A machine opens them for its
stored owner, online or offline (progression/MilestoneGates); an unowned machine or an owner who
opted out of attribution records nothing. nerotech:hook/tech_guide_unlockhook gate +progression/QuestHooks: when a quest mod opens
it for a player, NeroTech marks that player's next incomplete Tech Guide entry complete and says
which in chat, then closes the gate to re-arm it. Information only — NeroTech advancements carry no
recipe or item rewards. Delivered on next login when it opened while offline.nerotech:pollution_decaythreshold channel: a region that drifts back under
pollutionEventThresholdthrough the periodic decay sweep now fires here (falling, scope = region
key).nerotech:pollutionfalling is reserved for active Scrubber/Remediator removal, so a listener
can tell cleanup from waiting.NeroTechCommon.serverTick(MinecraftServer): the loaders' end-of-tick fan-out (pollution sweep +
quest-hook delivery).
Changed
nerotech:machine_failurescope is nowmachineId@dimension— the block position is gone.
On a shared server a base's coordinates identify its builder; listeners filter on the stage
(value/threshold) andrising, never on the scope.MachineFailureEvents.fire(...)and
scope(...)keep their 0.4/0.5 signatures (theBlockPosis ignored) and gain position-free
overloads.- Every NeroTech threshold crossing is published with
nerotechas its source mod (Core 1.15.0
ThresholdEvents.fire(String, ThresholdCrossing)). - Version
0.6.0-beta.1; Core pin1.13.0→1.15.0.
Privacy
- The milestone and hook gates are rows in Neroland Core's progression store (UUID-keyed, covered by
Core's privacy notice and erased through Core's shared erasure hook). NeroTech writes them only
for a machine's stored owner and never logs or broadcasts the UUID.PRIVACY.mdupdated.
NeroTech 0.5.0-beta.1
Optional NeroEconomy operating charges. Requires Neroland Core 1.13.0 (unchanged). NeroEconomy stays
optional: NeroTech builds, loads and runs without it.
Added
- Per-operation machine charges (
compat/neroeconomy). With NeroEconomy 0.3.0+ installed and
machineOperationChargeCostabove 0 (default0= off), an owned Ore Processor, Fabricator, Advanced
Ore Processor, Advanced Fabricator or Chemical Processor charges its owner in advance for each batch
ofmachineOperationChargeBatchoperations (default 64), under NeroEconomy callernerotech, reason
machine_operation. Charges sink into the Reserve; a machine never pays out. A refused charge idles
the machine with the new Unpaid analytics status, showing NeroEconomy's reason, and is retried
every 30 seconds — never per tick. An unowned machine is never charged. With an older NeroEconomy the
bridge falls back to Core'sCurrencyApi.withdrawand checks its result. MachineStatus.UNPAID(appended; ordinals unchanged) and an optional status detail lang key on the
analytics payload.IPlatformHelper.isModLoaded(String)on every loader.- NeroEconomy
compileOnlydependency (neroeconomy_version=0.3.1-beta.1, never bundled); optional in
every loader manifest (suggests/type = "optional"/mandatory = false, floor0.3.0-beta.1).
Its GitHub Packages repository is declared only when credentials are present.
Changed
- Machines also record the placing player's UUID as owner while operating charges are enabled (before:
only withpollutionPerPlayerAttribution). Same storage and erasure path; seePRIVACY.md. - The machine block-entity update tag sent to clients no longer carries the owner's UUID.
Notes
- No processing recipe type or ore/scrubber bonus changed in this release. Iron, copper and gold dust
already carry theirc:dusts/*tags.
NeroTech 0.4.0-beta.2
Redeploy to Maven Local and GitHub Packages.
NeroTech 0.4.0-beta.1
The add-on seam for NeroPower, and four safety fixes. Requires Neroland Core 1.13.0 (was
1.13.0).
Added
- Public API package
za.co.neroland.nerotech.api— stable within a 0.x minor; NeroPower depends
on it. Everything outside it stays internal.PowerMachine: the read/steer surface everyNeroTechMachineBlockEntitynow implements
(energy buffer, heat / capacity / add / extract / ambient / overheated, preset get + set,
shedable(),owner(),reportStatus).addHeat,extractHeatandreportStatusare public on
the base now;heatCapacity(),ambient(),owner()andclearOwner()are new.MachineTypeRegistry: register a block-entity type on the energy / item / gas / fluid surface
once and it is wired on every loader like NeroTech's own machines. NeroTech seeds it first from
NeroTechCommon.init();ModBlockEntities.*MachineTypes()now return registry snapshots.
NeoForge reads the registry inRegisterCapabilitiesEvent(add-ons register from their mod
constructor); Fabric subscribes withonRegisteredlisteners so a registration from a later
initializer is still wired; Forge already attaches byinstanceof.MachineFailureEvents: failure stages (1 warning/throttled, 2 unstable, 3 failure/meltdown,
4 containment breach) published on Core'sThresholdEventsbus, channel
nerotech:machine_failure, scopemachineId@dimension:pos— never a player. The Fusion Reactor
fires stage 1 once per overheat episode (rising and falling), stage 3 on meltdown and stage 4
on a breach.PlanetApi:solarMultiplier(Level),windMultiplier(Level)andambientAt(Level, BlockPos)—
the same Nerospace-aware per-planet model NeroTech's generators and thermal model use.
- Maven publishing of the nine loader cells as
za.co.neroland.nerotech:nerotech-<loader>-<mc>:<version>to Maven Local and GitHub Packages
(mirrors Core's setup; seeMANUAL-PUBLISH-YML.mdfor the workflow step). - Config:
fusionMeltdownTerrainDamage(auto|on|off, defaultauto) and
fusionMeltdownRadiusCap(1..16, default 8).
Fixed
- Wireless Power Node pairing is authorised. Pairing or unlinking with the Configurator now
requires that the acting player may interact with the block at both endpoints (spawn protection,
world border, adventure rules) and, when both nodes have an owner, that they own both or hold
gamemaster permission. Refusals showitem.nerotech.configurator.link_denied. The actor is
always the item holder, never a nearest-player lookup. - Wireless pairing auth hardened. The rule now covers every node an action touches — the
clicked node, the pending node, and any node whose current link would be broken (the clicked
node's partner on unlink, either end's old partner on pair). Each must be in a loaded chunk
(an unloaded endpoint can't be verified and is refused), interactable by the player, and — when
it has an owner — owned by the player unless they are a gamemaster; one owned endpoint is enough
to require ownership (previously only when both were owned, and an unloaded partner skipped the
owner check entirely). The decision lives in the Minecraft-freeitem.LinkAuth. - Tests:
WirelessPairingAuthTest(pairing/unlink authorisation matrix) and
MeltdownTerrainModeTest(fusionMeltdownTerrainDamageon / off / auto × dedicated /
singleplayer, plus unrecognised values reading asauto); the resolver moved to the pure
MeltdownMath.terrainDamage. - Fusion meltdown terrain damage is off on dedicated servers by default.
autoresolves to no
block damage on a dedicated server (the blast still hurts and knocks back, and the reactor is
still lost) and full damage in singleplayer / LAN; the radius ismin(shellSize + 1, fusionMeltdownRadiusCap). - Saved-data stores recover instead of crashing. The pollution, attribution-preference and
Tech Guide "seen" stores load through Core'sSavedDataRecovery(last-known-good backup, then a
fresh store), and each erasure refreshes that backup at once. - Data erasure reaches machine ownership. An erase request through Core's
PlayerDataErasure
hook now also drops the placing-player UUID from every machine the player owns: loaded machines
react on their next tick, unloaded ones on their next load, from a pending-erasure set kept in the
attribution-preference store for 30 days.
NeroTech 0.3.0-beta.1
EMI support and working JEI pages on Fabric for the machine pages, and NeroTech can now be started
without dust.
Added
- EMI support. The five machine recipe pages JEI already had (ore processing, fabricating, advanced
fabricating, particle accelerator, chemical processing) now come from a native EMI plugin too. Official
EMI has no Minecraft 26.x release, so this targets the community EMI Unofficial Port (Unstable) on
NeoForge and Fabric; that port has no Forge build. With JEI and EMI both installed, the pages show once.
EMI stays optional. See the wiki's Recipe Viewers page.
Fixed
- JEI pages now appear on Fabric. JEI on Fabric only loads plugins listed under the
jei_mod_plugin
entrypoint and ignores the@JeiPluginannotation, so NeroTech's five machine pages never showed
there. NeoForge was not affected.
NeroTech can be started without dust
- The first generator could not be crafted in survival. Every generator needs a Nero Coil or a
Circuit Board, both needed dust, and dust needs a powered Ore Processor. The Nero Coil now also
crafts from Copper Ingot + Iron Ingot + Copper Ingot, and the Circuit Board from Redstone + Gold
Ingot + Redstone. The dust recipes stay, and the Fabricator still makes two per dust. - Wiki: new Standalone Progression page covering the full path with only Neroland Core installed.
The Making Dust page now notes that both ore processors take raw ore blocks and gives the Advanced
Ore Processor's default yield bonus.
NeroTech 0.2.1-beta.1
Gases move through pipes, one oxygen shared with Nerospace, and the gas textures load. Pair it with
Nerospace 1.1.1, whose Universal Pipe now connects to NeroTech's gas machines.
Fixed
Gases move through gas pipes, and the Electrolyzer drains (#9)
- One oxygen, shared with Nerospace. NeroTech's oxygen is now
nerospace:oxygen, the same gas
as the Nerospace Oxygen Generator and life support. The old separatenerotech:oxygengas meant
the Chemical Processor refused Oxygen Generator oxygen even when a pipe delivered it. NeroTech
still does not depend on Nerospace: the id is only a name. - Legacy oxygen migrates automatically. Tanks saved with
nerotech:oxygenload as
nerospace:oxygen. NeroTech machines acceptnerotech:oxygenfrom any source, such as a Core Gas
Tank filled by an older build, and store it as the shared gas. AturbineGasBurnentry for the
old id counts for the new one. The transport fluid keeps its registry idnerotech:oxygen, so
other mods' pipes and tanks keep their contents. It now stands fornerospace:oxygen. - Gas pipes carry NeroTech gases. With a pipe on Core's
nerolandcore:gascapability (such as
the Nerospace Universal Pipe from Nerospace 1.1.1), the Electrolyzer's products
flow out and into the Chemical Processor, the Gas Turbine or a Core Gas Tank. Those machines
accept gas on every face by default and pull from an adjacent pipe or tank on their own. - The Electrolyzer's gas faces are output-only. An I/O gas face used to take gas back, so a pipe
that both pulls and pushes returned every millibucket and the product tanks never emptied. The
machine then stopped with full tanks. On Core's gas capability, I/O now means output for the
Electrolyzer, and an input face takes nothing.
Crash reporting
- Crash reports no longer include vanilla's "Invalid block entity" message. Minecraft logs it when a
chunk's saved NeroTech machine data no longer matches the block there, for example after another mod
remapped blocks. Vanilla discards the stale data and the world keeps working. Exceptions thrown inside
another mod's own code are no longer reported either. - Hydrogen and oxygen fluid textures render. The sprites lived in
textures/fluid/, listed by
anassets/nerotech/atlases/blocks.jsonthat Minecraft never reads (atlas definitions are read
from theminecraftnamespace only). The sprites were never stitched, so both gas fluids drew
the missing texture in tank and pipe GUIs and JEI. They now live intextures/block/, which the
block atlas always includes.
NeroTech 0.2.0-beta.1
Minecraft 26.3 support, plus one recipe fix.
Added
- Minecraft 26.3 as a new Stonecutter node on every loader — NeoForge
26.3.0.7-beta,
Forge26.3-66.0.2and Fabric (fabric-api0.161.0+26.3, NeoForm26.3-1) — built alongside
26.1.2 and 26.2, so every release now ships nine loader × version jars.
Changed
- VS Code run/debug configurations (
.vscode/launch.json,.vscode/tasks.json) gain the three
26.3 cells; the "Build all" task now builds all nine. - CI (
multiloader.yml,publish.yml) builds, attaches and publishes the 26.3 jars. - Requires Neroland Core 1.13.0 (was
1.12.0) — the first Core release with a 26.3
build. The loader range still derives from the pin ([${nerolandcore_version},2.0)). - JEI pins moved to the newest published builds on each Minecraft version:
29.40.0.101(26.1.2),30.35.0.223(26.2) and31.3.0.18(26.3). Compile-time API only — JEI remains a soft dependency and the shipped jar gains no hard requirement. Thecompat/jeiplugin compiles unchanged against all three.
26.3 port notes
- Block classes build their codecs through Core's
BlockCodecs(26.3 removed block-type codecs);codec()is kept without@Overrideso one source compiles on every version. - 26.3 API differences are handled with Stonecutter blocks:
PoseStack#rotate(wasmulPose), the newPredictionargument ondrop/placeItemBackInInventory,setPermanentlyInvulnerable, and similar renames. - JEI recipe sync keeps a version-neutral list, because 26.3's
RecipeMapcan no longer be built from a collection. - Fixed: the Configurator recipe used the invalid category
tools, so it failed to load on every version. It is nowequipment. - Build: the shared
common/Java source is now preprocessed by Stonecutter for every non-active node (stonecutterProcessCommon), so common code can carry//? if >=26.3 {blocks, andcommon/src/main/resources-<mc>overlay folders are merged over the shared resources for matching nodes (mergeCommonResources). The active node still compiles the rawcommon/folder. - Build plugins aligned with Neroland Core: ModDevGradle
2.0.147(the older 2.0.141 cannot set up NeoForge 26.3), ForgeGradle7.0.40, Stonecutter0.9.8. - NeoForge metadata: the deprecated
logoFileproperty is replaced byiconFileon 26.2+ (the logo is a square 256x256 PNG) while 26.1.2, whose FML only understands the old key, still getslogoFile— the key is chosen per cell when the manifest is expanded. This clears NeoForge 26.2+'s dev-only "uses the deprecatedlogoFileproperty" warning screen. The Forge manifest is unchanged:logoFileis still the only key Forge supports.
NeroTech 0.1.0-beta.1
The big push from alpha to the first beta: every machine gets a real visual identity, the Fusion
Reactor becomes a scalable multiblock, heat becomes a full thermal model, pollution gets its
mitigation tech, every GUI gains analytics, presets and side-config tooling — and the tech tree
grows four whole tiers: a free-form Particle Accelerator, a fluid & gas chain, a six-block
power tier, automation QoL and an exotic endgame. NeroTech is standalone-first: every
machine, including the endgame, is reachable with NeroTech + Neroland Core alone, and pairing with
other Neroland mods accelerates progression rather than unlocking it.
Added
Particle Accelerator
- A free-form endgame build and NeroTech's standalone route to space-grade materials: no
multiblock, no fixed footprint. Lay Accelerator Guide Coils at the Accelerator
Controller's own Y level in any shape; right-click each (empty hand or Configurator) to cycle
its bend straight / 45° left / 45° right. The controller ray-marches its facing up to
acceleratorMaxGapblocks per hop, follows the bends, and a line that returns to itself is a
closed loop. A virtual particle (server-side, no entity, drawn as an END_ROD streak) is
injected from the first slot and boosted at every guide it passes. - Ring geometry is the progression axis, via three unit-tested rules: the gap rule (a
stretch too long for the current speed loses the particle; inverted, it sets the injection
speed), the bend rule (a 45° turn survives at mostacceleratorBendSpeedBase× the run-up
before it — the shortest bend stretch caps the loop), and collision energy
E = 0.5·v²·acceleratorEnergyScale. Put a second item in the collision slot and every lap
through the controller attempts the collision. - Collision recipes (
nerotech:collider, datapack-driven) take two order-free ingredients plus a
min_energyfloor — an energy requirement is really a minimum ring size: 800 J / 1,500 J for
the dust transmutations (a starter octagon), 3,000 J for Starsteel Dust (Netherite Scrap +
Iron Dust) and Void Crystal Dust (Echo Shard + Amethyst Shard), 12,000 J for the Antimatter
Cell (two Stellar Cells — a ~29×29 ring). Both blocks craft from vanilla + Tier-1 materials
only, so the advanced tier (Fusion Reactor included) is reachable on Earth alone. - The ring reads itself back: after every trace the controller writes each guide's outgoing
beam direction into a display-onlyheadingblockstate, lighting the coil's top with one of 24
directional arrows (3 bends × 8 compass headings). An unlit coil is not part of a closed loop —
the first debugging tool for a ring that will not close. Ships with a two-input JEI page, Tech
Guide steps, advancements and the Particle Accelerator wiki page.
Mechanic inspired by Oritech's particle accelerator; clean-room implementation.
Scalable Fusion Reactor multiblock
- The Fusion Reactor is now a multiblock: a hollow 3×3×3, 5×5×5 or 7×7×7 shell of the new
Fusion Casing and Fusion Containment Glass, controller set into one wall, strictly empty
interior. Inert until formed — a spinning plasma torus telegraphs a live core. - Four fuel tiers, all datapack tags: Fusion Cell (any shell) → Plasma Cell (Starsteel,
5×5×5+) → Stellar Cell (Void Crystal + Starsteel, 7×7×7) → Antimatter Cell (see the
exotic endgame below; the 7×7×7 alone contains it). Per-tier burn times
(fusionFuelTier1BurnTicks..Tier4) and per-size output multipliers (1× / 4× / 12×,
fusionSizeOutputPermille) are config. - Scaled risk: bigger shells run hotter and melt down harder (blast radius 4/6/8;
fusionReactorMeltdownEnabledstill stalls instead when off). Breaking the shell mid-burn is
a containment breach: the charge is lost and a pollution burst vents into the region.
Power tier (the feature set once planned for a separate NeroPower mod — see Changed)
- Wind Turbine — fuel-free, day and night:
windTurbineNePerTick(default 25) scaled by an
altitude curve (0.5× at y≤80 rising to 2× at y≥200) andwindDimensionMultipliers; needs sky
access above. An airless Nerospace planet gives zero — no atmosphere, no wind. - Geothermal Generator — counts lava/magma in the 3×3 directly beneath (0–9) for
geothermalNePerTickPerSource(default 8) each. Perfectly steady, runs hot, no pollution. - Bio Generator — burns the new datapack-overridable
#nerotech:bio_fuelsitem tag (seeded
with dried kelp blocks; NeroAgriculture and packs add crops with no code change) at
bioGeneratorNePerBurnTick(default 48) — 20% above the Nero Generator at half the
pollution. - Battery Bank — a single-block
batteryBankCapacity(default 1,000,000) NE buffer with
every-face I/O and auto-eject, FE interop included. - Grid Controller — passive brownout protection: rescans
gridControllerRadiusevery 100
ticks; belowgridShedThresholdPermilleit drops non-generator machines to Eco until fill
recovers pastgridRestorePermille(hysteresis, so a grid at the line never flaps). It throttles
demand, never supply. - Wireless Power Node — pair two with the Configurator (crouch-use each end): up to
wirelessNodeTransferPerTick(default 200) NE every 5 ticks acrosswirelessNodeRange(default
32) blocks, lossless, never chunk-loading, self-unlinking on break.
Fluid & gas chain
- Neroland Core's fluid/gas substrate is now live, with NeroTech's first gases
(nerotech:hydrogen,nerotech:oxygen). Electrolyzer splits stored water 2:1 (bucket or
Core fluid capability in — no item slots) and hands both gases to adjacent gas blocks;
Gas Turbine burns gas (turbineGasBurnconfig map) into NE with mild heat and zero
pollution — clean power, not free power (electrolysis is a net energy sink by design);
Chemical Processor washes raw ore with oxygen for 3 dust versus the Ore Processor's 2
(nerotech:chemical_processingrecipes). Every tank is on Core's sharednerolandcore:fluid/
nerolandcore:gascapabilities, so Core's tanks and any mod on those surfaces interoperate. - Coolant loop — active cooling as two blocks: the Radiator (passive, worth four natural
coolant blocks, never melts) and the Coolant Pump (spends NE per thermal-exchange interval to
pull heat out of every adjacent machine, scaled by Radiators within 3 blocks in a line). All
scans event-driven and cached.
Full thermal model
- Machines conduct heat to adjacent machines and relax toward a local ambient derived from
dimension (thermalAmbientByDimension— the Nether runs hot) plus a biome flavour term. Coolant
blocks (water, ice, snow, Radiators) are cached alongside the neighbour links — no per-tick
scanning anywhere. Six tuning keys (thermalConductivityPermille..thermalBiomeScale).
Pollution mitigation tech
- Scrubber — cleans its own pollution region at full rate plus the 8 neighbours at a fraction;
consumes Filter Cartridges that foul into Dirty Filters (reprocess for an iron refund). - Remediator — heavy-duty slotless area cleaner: no consumables, steep NE cost, Starsteel-tier.
- Regional pollution publishes threshold events through Core 1.7.0
(pollutionEventThreshold) — dormant until a listener mod (NeroEvents) exists.
Automation & QoL
- Conveyor Belt — the only NeroTech block with no block entity: a flat directional plate that
nudges item entities along its facing (~0.15 blocks/tick, capped). No power, no GUI — lines and
corners form naturally. Crafts 6 from Iron Dust + Nero Coils + Redstone. - Robotic Arm — once a second moves up to
roboticArmStackPerMoveitems from the container
behind it into the one in front, forroboticArmNePerMoveNE per item, through the standard
hopper-style container surface (side configs and sidedness honoured on every loader). A GUI-only
filter slot restricts it to one item type. - Auto Crafter recipe preview + grid lock — the output well shows a server-matched ghost of the
current grid, and a Lock toggle snapshots the grid as per-slot templates enforced through the GUI
and pipes/hoppers, so automation can never scramble the recipe. - Configurator wrench — click a machine face to cycle its side mode, sneak-click to read the
layout, and copy/paste: copying captures side config and overclock preset, and pasting is
cross-type — each copied channel applies wherever the target declares it. Also pairs Wireless
Power Nodes and sets accelerator coil bends.
Exotic endgame
- Antimatter Cell — tier-4 fusion fuel, made only by the accelerator (no crafting recipe).
BurnsfusionFuelTier4BurnTicks(default 28,800 — twice a Stellar Cell) with a flat +2 heat-rate
surcharge: the strongest generator in NeroTech and the likeliest to melt down. - Singularity Vault — bulk storage for one item type up to
singularityVaultCapacity
(default 1,000,000), held as a virtual store. Automation sees a two-slot facade (input drained
in, output kept stocked); by hand right-click deposits, crouch-right-click withdraws; a
comparator reads the fill. Crafted around an Antimatter Cell. Empty it before you break it —
the stored bulk does not drop. - Accelerator transmutation — lossy collider recipes: Copper Dust ×2 → Iron Dust (800 J), Iron
Dust ×2 → Gold Dust (1,500 J). Transmuted gold is the most expensive gold in the game.
Production analytics
- Every machine GUI gains an Analytics tab: a status line naming the limiting cause, live heat/
energy/pollution/efficiency readouts, and 60-second heat and energy sparklines. - New Analytics Terminal — a passive console scanning
analyticsTerminalRadius(default 16):
counts by status, the hottest machine, the 10 nearest with their ...
NeroTech 0.0.1-alpha.3
See CHANGELOG.md for details.
NeroTech 0.0.1-alpha.2
See CHANGELOG.md for details.