Fixes, tests#20
Merged
Merged
Conversation
Added a minimum brightness constant and updated the getStellarBrightness method to ensure it never returns zero, NaN, or Infinity.
Updated various item and tile names, improved error messages, and added new tooltips for better clarity.
Update Chinese localization
Added compatibility check for liquid container blocks.
Refactor observatory tile to manage button presses and seed synchronization. avoids desync in all my tests
Added anchored warning module to display station's anchored status.
Fix missing newline at end of file
Added detailed changelog for versions 2.2.0 to 2.2.2, including new features, bug fixes, and performance improvements across various components.
Updated changelog to version 2.2.2, adding new blocks, features, and bug fixes.
- EntityRocket flight, abort events, TP grace, fail reasons - Mission system: corrupt/stale cleanup, gas/ore mission updates - Satellite microwave energy fix, atmosphere handler leak guards - Station object handling, network packet guards, util helpers
- XML planet/ore loaders: UTF-8, oreGen save, volcano/geode multipliers - Worldgen crash guards (crater negative-Y, asteroid skylight) - DimensionManager/DimensionProperties biome-by-registry, temp.dat save - PR async-weather impl (reconciled to our Mixin platform in R2)
- JEI categories: Satellite Builder, Fuel Station, Station Assembler, CO2 Scrubber, Oxygen Vent, Orbital Laser Drill, Asteroids, Gas Giants - TheOneProbe + Waila providers for rockets and data blocks
- TooltipInjector + per-block tooltips - GL state leak fixes (renderers, particle FX) - JEI-optional client tick handler guard
- ARConfiguration: PlusTiC compat, gas harvest, orbital registry, databus - AdvancedRocketry main: ARCommandRoot registration, TOP/databus/hover tweaks, Tags-based version, transceiver rename - API surface updates (registries, capability accessors)
- Lang updates (en_US, zh_CN, ru_RU and others) - New blockstates/models/textures: orbital registry, databus big, wireless transceiver, plate press head, pipes - AT moved to advancedrocketry_at.cfg (worldInfo only; deps provide rest) - docs/ oreconfig + planetdefs guides, CI deploy workflow - Remove legacy Template.xml, XML_CONFIG_README.txt
- Add 6 mixins + mixins.advancedrocketry.json (TASK-08-mixin set) - AdvancedRocketryPlugin bootstraps Mixin, registers no ASM transformers - Remove ClassTransformer (fully superseded by mixins; J21 anchor moot) - Restore RocketInventoryHelper.shouldAllowContainerInteract hook - Enable use_mixins in RFG (native refmap/AP) - PlusTiC transformer left unregistered pending @pseudo Mixin conversion
- Replace PR's CustomDerivedWorldInfo/WorldInfoSavedData/WorldInfoHandler with world/weather/** (ARWeatherWorldInfo wrapper + saved-data + manager) - Install wrapper via MixinWorldServerMulti; register PlanetWeatherEventHandler - Keep PR's usesCustomWorldInfo() short-circuit + nextInt clamps in WorldProviderPlanet, add our instance-check warn-once guard - Add weather config keys (enableCustomPlanetWeather, logPlanetWeatherWrapping, forcePlanetWeatherWorldInfoWrapper)
- Remove PlusTiCPacketReleaseEntityTransformer (last pure-ASM transformer) - Remove enablePlusTiCPortlyRocketCompat config option - Document removal in README compatibility notes
- SpaceStationObject: read autoLand flag from "autoLand" not "occupied" - ItemSpaceElevatorChip: clear list under "list" key, not "positions" - ItemPlanetIdentificationChip: attach NBT in INVALID_PLANET branch SatelliteRegistry.getNewSatellite returning null (not SatelliteDefunct) remains a known live bug, pinned by a test in the suite step.
- Wire testUnit / testIntegration JUnit 4 task topology (RFG Groovy) - Resolve forge-test-framework 0.4.2:dev from mavenLocal (composite build is incompatible with RFG variant transforms) - Import 35 unit + 9 integration test classes + shared bootstrap - Drop 25 orphaned cable tests (subsystem removed upstream) - Adapt tests to PR API: DimensionProperties weather getters/setters, FuelRegistry non-inverted add return, default mission NBT serialises, fixed geode-multiplier getter - Move satellite display-name contract to integration (getName resolves via LibVulpes.proxy); bootstrap LibVulpes.proxy in MinecraftBootstrap testServer / testClient harness layers deferred (RFG harness rewrite).
Port the server/client test-harness Gradle wiring from the FG6 branch to
RetroFuturaGradle. No FG6 run-config reflection is needed: RunMinecraftTask
extends JavaExec, and forge-test-framework already defaults to RFG's
GradleStartServer launcher with legacyArgs. The child JVM self-configures
SRG/CSV mappings and discovers our coremod + FMLAT from the classpath manifest
(baked into GradleStart at token-replacement, scanned by GradleForgeHacks).
Key correctness points:
- Take the run task's classpath EAGERLY (.get().classpath) and never depend on
the run task executing — a `runTask.map { it.classpath }` provider makes
Gradle schedule runServer, which launches a foreground MC server that never
exits and hangs the build.
- Exclude sourceSets.main.output from the test classpath: our mod is carried by
the built jar via the run classpath, and FML throws DuplicateModsFoundException
if it sees advancedrocketry as both classes dir and jar. The jar is also the
only form with the FMLCorePlugin/FMLAT manifest, required for coremod loading.
Proven by HarnessDiagnosticTest: boots a real AR dedicated server under RFG and
gets `/list` -> "There are 0/20 players online" back via the framework's
command round-trip.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… runs) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The .agent/ tree (Navigator docs, ~60 context markers, 51 task docs, SOPs, audits, knowledge graph, known-bugs ledger, DEVELOPMENT-README) and the full CLAUDE.md rule set were stashed as "config noise" when feature/upstream was branched from a clean 1.12 to keep the production merge focused. They hold important decisions and rules, so bring them back as the historical base. - Imported feature/tests .agent as-is; layered the 2026-05-31 upstream-merge marker (this branch) on top so it sorts chronologically last. - Recovered three newer feature/tests markers (2026-05-30/31) plus the latest knowledge graph + nav-config from the stash. - Dropped the stale .active resume pointer; appended the imported markers to .marker-log. - Updated CLAUDE.md build facts for the RFG migration (FancyGradle/Kotlin-DSL -> RFG 2.0.2 Groovy, JDK 25 to run Gradle, testServer/testClient harness layers, mandatory wall-clock timeout on harness runs). The Russian-communication and bug-tracking rules carry over unchanged. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bring the test-only probe command tree (12.9k lines) + its conditional
registration from the FG6 branch and reconcile it against the rewritten PR API.
Registered from AdvancedRocketry.serverStarting, gated on
-Dadvancedrocketry.tests=true (or a harness-spawned -Dforge.test.server=true),
so it is a no-op in normal gameplay.
API reconciliation:
- Wireless probes: the cable subsystem (tile.cables.TileWirelessTransciever,
cable.NetworkRegistry/HandlerDataNetwork/CableNetwork) was replaced by the
wireless-data backend. Rewrote the wireless-pair/info/set-mode/set-enabled/
role-on-network handlers against tile.TileWirelessTransceiver's public API
(getWirelessNetworkId/setWirelessNetworkId/isExtractModeWireless/...) and
wirelessdata.{NetworkRegistry,HandlerDataNetwork,DataNetwork}. NetworkRegistry
.dataNetwork is now dataNetwork(world); addSource/addSink take a priority.
Source/sink role detection reflects DataNetwork's private endpoint sets (no
public accessor); added forceJoinWirelessNetwork + wirelessEndpointMatches.
- TileForceFieldProjector.onIntermittentUpdate() -> update().
- world.util.TeleporterNoPortalSeekBlock(World) -> TeleporterSeekBlock(BlockPos)
seeded with the destination world's spawn point.
- DimensionProperties.{rain,thunder}StartLength are now private -> read via
get{Rain,Thunder}StartLength().
compileJava + testUnit + testIntegration green. Probe runtime behaviour will be
exercised by the server-tier suite (Phase C).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bring the full server-tier suite from the FG6 branch. These drive the server entirely through the /artest probe string surface and parse JSON responses, so they carry almost no direct AR-API coupling and compile clean against the upstream-merged tree. Runtime validation runs under `./gradlew testServer` (each test boots a real MC dedicated server via forge-test-framework). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The PR renamed the block from advancedrocketry:wirelessTransciever to the corrected advancedrocketry:wirelessTransceiver, so the `artest place` calls put no tile down and wireless-pair reported "tiles not TileWirelessTransceiver". PipeNetworkSmokeTest.wirelessTransceiverPairsAndTransmits now passes, validating the Phase B wireless probe port end-to-end. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The mission complete-now probe stopped completing missions (completed:false) after the upstream merge for two reasons: - MissionResourceCollection.getProgress() now measures against dim-0 universal time (AdvancedRocketry.proxy.getWorldTimeUniversal(0)), not the mission dim's own clock, so the probe must backdate startWorldTime against the same source. - tickEntity() now only evaluates completion once every MISSION_COMPLETION_TICKS (60) ticks, gated by completionCheckTimer, so a single tickEntity() call no longer reaches the progress>=1 check. Prime the timer to 59 first. Added writeIntField helper. Fixes the 6 MissionGas/Infrastructure/Pyramid completion tests. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…d bug #7 fix The PR replaced the WorldCommand /ar monolith with the ARCommandRoot tree, so the command-surface server tests needed updating to the new contract: - WorldCommandGuardContractTest: player-requiring subcommands now resolve the sender via vanilla getCommandSenderAsPlayer (unified "You must specify which player..." message); goto/station are subtrees (goto dimension, station give); setGravity falls through to usage; addSolidBlockOverride was removed. - CommandsSmokeTest: help now prints "/advancedrocketry [subcommand]". - WorldCommandStarMiscContractTest: dumpBiomes moved under the dev subtree. Also reapply known-bug #7's fix that upstream dropped: ReloadRecipesCommand called createAutoGennedRecipes() on the runtime reload path, which registers ShapedOreRecipe into Forge's frozen recipe registry and throws "being added too late". Auto-genned recipes are registered once at init; the runtime reload only refreshes machine + XML recipes. Restores /advancedrocketry reloadRecipes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- forcefield-tick probe: TileForceFieldProjector merged its gate-free projection step into update(), which only acts on world.getTotalWorldTime() % 5 == 0. Driving update() N times in one command saw a single world time (all-or-nothing). Advance the world clock to a fresh 5-tick boundary before each call so extension/retraction step deterministically. - RocketFlightFailureModes: the merge added a launch-time fuel gate, so a zero-fuel rocket is now refused (isInFlight stays false) instead of entering flight. Pin the new gate. - WirelessTransceiverContract: the rewritten tile's enabled toggle defaults ON, so a freshly placed transceiver starts enabled=true. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The rewritten unmanned-vehicle assembler scan now requires intakePower > 0 (an air intake) and a generic IFluidHandler tank (the liquidTank, distinct from the propellant fuelTank), or it returns NOINTAKE / NOTANK. Add both blocks to the uv-rocket fixture interior so the assemble scan reaches SUCCESS. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
TileSatelliteTerminal.onInventoryButtonPressed(1) is the client half — it only calls PacketHandler.sendToServer(id 101), which throws "Missing" client->server network manager on a dedicated server and never runs the erase. The press-erase probe now invokes the server half directly: useNetworkData(.., id=101) performs the production erase (removeSatellite + chip.erase). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…on plan Expand the progress marker with the Phase E client-test integration steps and record that testClient (and any GL run) must use DISPLAY=:100 (:99 has no OpenGL). Mirror the display rule into CLAUDE.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- precision-assembler: spread recipe ingredients across multiple input hatches (recipe index != inventory slot); add 2nd input hatch overlay - cutting machine: fill ingredient with its recipe meta, not meta 0 - fueling station: add force-tick-clock probe verb that advances world time so the % OP_THROTTLE_TICKS transfer gate can fire
- wire testClient natives to RFG's extractNatives2 (run/natives/lwjgl2); there is no plain extractNatives task under RFG - restore ClientProxy test-bridge bootstrap hook so RealClientHarness's ClientBot can attach (inert in production, gated on forge.test.client) - import 24 client e2e tests + 2 support classes from feature/tests - reconcile /ar command paths to the ARCommandRoot subcommand tree: goto <dim> -> goto dimension <dim>, giveStation -> station give, addSolidBlockOverride -> addSealant, fetch unknown-name now fails (0)
…) for attribution Records all 584 original commits (kaduvill, ZHAY10086/ZetaY, jchung01, Marvin Eckhardt, Wizzerinus) as ancestry. Tree is unchanged: production content was already adopted by cluster in P0-P11; this restores authorship that the squash dropped.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merged almost all from https://github.com/dercodeKoenig/AdvancedRocketry/pull/70
+
Made tests for all core mechanics of AR