Skip to content

feat: Add quarry, modules, trash can and assets#2

Open
Dario-Maselli wants to merge 6 commits into
mainfrom
feature/quarry
Open

feat: Add quarry, modules, trash can and assets#2
Dario-Maselli wants to merge 6 commits into
mainfrom
feature/quarry

Conversation

@Dario-Maselli

Copy link
Copy Markdown
Member

Summary

Introduce a new quarry feature plus supporting modules and a trash can: added Java classes for quarry machine (controller, frame, landmark, controller BE, menu, renderer, render state, chunk loader, region, miner tiers, output filter, planet profiles), module registry and item classes, and trash can storage BE. Added generated resources (blockstates, models, item models, recipes, loot tables, advancements, tags, language entries) plus Blockbench model sources and textures. Updated datagen providers, registries, client code, tests, tools, and docs (wiki pages) to wire everything together. Also minor docs/format tweaks (.markdownlint, PRIVACY.md code fence, RELEASE_CHECKLIST formatting).

Related issue

Type of change

  • 🐞 Bug fix
  • ✨ New feature / content
  • 🎨 Assets / textures / models
  • 🧹 Refactor / cleanup
  • 📖 Docs

Checklist

  • ./gradlew runData (if datagen changed) and ./gradlew build both pass (BUILD SUCCESSFUL).
  • New blocks/items have models + textures (or are intentionally placeholder).
  • No new compiler warnings.
  • I understand the project is All Rights Reserved and have the right to contribute this code.

Notes for reviewers

Introduce a new quarry feature plus supporting modules and a trash can: added Java classes for quarry machine (controller, frame, landmark, controller BE, menu, renderer, render state, chunk loader, region, miner tiers, output filter, planet profiles), module registry and item classes, and trash can storage BE. Added generated resources (blockstates, models, item models, recipes, loot tables, advancements, tags, language entries) plus Blockbench model sources and textures. Updated datagen providers, registries, client code, tests, tools, and docs (wiki pages) to wire everything together. Also minor docs/format tweaks (.markdownlint, PRIVACY.md code fence, RELEASE_CHECKLIST formatting).
Copilot AI review requested due to automatic review settings June 14, 2026 12:47
@Dario-Maselli Dario-Maselli changed the title Add quarry, modules, trash can and assets feat: Add quarry, modules, trash can and assets Jun 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new automated mining feature (Quarry Controller + Landmarks + Frame), a cross-machine upgrade-module system, and a Trash Can void-sink block, then wires them through registries, datagen, client rendering/UI, commands/gallery capture, and wiki documentation. It also enhances the local gradle-mcp helper with parsed diagnostics and a Markdown linter plus a companion auto-fixer script.

Changes:

  • Add Quarry gameplay feature: region discovery from landmarks, frame placement, mining loop (with chunk forcing), GUI/menu, and client-side renderer/screen.
  • Add cross-machine upgrade modules (items + aggregation logic) and a Trash Can storage block entity that voids items/fluids/gas.
  • Update tooling (gradle-mcp diagnostics + markdown_check + fix_markdown), wiki pages, and generated assets/recipes/tags/advancements/models/lang entries.

Reviewed changes

Copilot reviewed 100 out of 153 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
wiki/Xertz-Quartz-Ore.md Formatting/spacing tweaks for consistency.
wiki/Upgrade-Modules.md New wiki page documenting frame casing + upgrade modules.
wiki/Universal-Pipe.md Formatting fixes and code fence language normalization.
wiki/Trash-Can.md New wiki page documenting the Trash Can block.
wiki/Terraformer.md Formatting fixes and code fence language normalization.
wiki/Terraform-Monitor.md Formatting fixes and code fence language normalization.
wiki/Station-Wall.md Formatting/spacing tweaks for consistency.
wiki/Station-Floor.md Formatting/spacing tweaks for consistency.
wiki/Station-Core.md Formatting/spacing tweaks for consistency.
wiki/Station-Charter.md Formatting fixes and code fence language normalization.
wiki/Star-Guide.md Formatting fixes and code fence language normalization.
wiki/Rocket-Launch-Pad.md Formatting fixes and code fence language normalization.
wiki/Roadmap.md Minor Markdown cleanup (blank lines/formatting).
wiki/Quarry-Landmark.md New wiki page documenting Quarry Landmarks.
wiki/Quarry-Controller.md New wiki page documenting Quarry Controller setup/behavior.
wiki/Pipe-Filters-and-Upgrades.md Formatting/spacing tweaks for consistency.
wiki/Passive-Generator.md Formatting fixes and code fence language normalization.
wiki/Oxygen-Suit.md Formatting fixes and code fence language normalization.
wiki/Oxygen-Generator.md Formatting fixes and code fence language normalization.
wiki/Nerosteel-Ore.md Formatting/spacing tweaks for consistency.
wiki/Nerosium-Ore.md Formatting/spacing tweaks for consistency.
wiki/Nerosium-Grinder.md Formatting fixes and code fence language normalization.
wiki/Launch-Gantry.md Formatting fixes and code fence language normalization.
wiki/Items.md Formatting/spacing tweaks for consistency.
wiki/Item-Store.md Formatting fixes and code fence language normalization.
wiki/Hydration-Module.md Formatting fixes and code fence language normalization.
wiki/Home.md Add Quarry Controller to progression overview.
wiki/Glacite-Ore.md Formatting/spacing tweaks for consistency.
wiki/Gas-Tank.md Formatting fixes and code fence language normalization.
wiki/Future-Features.md Formatting/spacing tweaks for consistency.
wiki/Fuel-Tank.md Formatting fixes and code fence language normalization.
wiki/Fuel-Refinery.md Formatting fixes and code fence language normalization.
wiki/Fluid-Tank.md Formatting fixes and code fence language normalization.
wiki/Deepslate-Nerosium-Ore.md Formatting/spacing tweaks for consistency.
wiki/Creatures.md Formatting/spacing tweaks for consistency.
wiki/Creative-Source-Blocks.md Formatting/spacing tweaks for consistency.
wiki/Configurator.md Formatting/spacing tweaks for consistency.
wiki/Combustion-Generator.md Formatting fixes and code fence language normalization.
wiki/Cindrite-Ore.md Formatting/spacing tweaks for consistency.
wiki/Block-of-Raw-Nerosium.md Formatting/spacing tweaks for consistency.
wiki/Block-of-Nerosteel.md Formatting/spacing tweaks for consistency.
wiki/Block-of-Nerosium.md Formatting/spacing tweaks for consistency.
wiki/Block-of-Glacite.md Formatting/spacing tweaks for consistency.
wiki/Block-of-Cindrite.md Formatting/spacing tweaks for consistency.
wiki/Battery.md Formatting fixes and code fence language normalization.
wiki/_Sidebar.md Add “Mining” section + links to quarry/module/trash pages; spacing tweaks.
tools/gradle-mcp/server.js Add parsed build diagnostics + markdown_check tool; bump version.
tools/gen_textures.py Generate quarry/trash/module textures and quarry GUI sprite.
tools/gen_bbmodels.py Add quarry/trash/module bbmodel generation lists.
tools/fix_markdown.py New script to auto-fix markdown_check-style violations.
tools/ecj.prefs Improve null-annotation recognition + reduce noisy null warnings.
src/main/java/za/co/neroland/nerospace/Tuning.java Add quarry buffer/fluid capacity/energy-per-block tuning hooks.
src/main/java/za/co/neroland/nerospace/storage/TrashCanBlockEntity.java New Trash Can BE exposing item/fluid/gas transfer sinks.
src/main/java/za/co/neroland/nerospace/storage/TrashCanBlock.java New Trash Can block + server ticker hookup.
src/main/java/za/co/neroland/nerospace/storage/FluidTankBlock.java Update deprecated FluidUtil interaction path to handler overload.
src/main/java/za/co/neroland/nerospace/registry/ModMenuTypes.java Register quarry controller menu type.
src/main/java/za/co/neroland/nerospace/registry/ModItems.java Register quarry block items, trash can item, frame casing, and modules.
src/main/java/za/co/neroland/nerospace/registry/ModCreativeModeTabs.java Expose quarry/module/trash content in creative tab.
src/main/java/za/co/neroland/nerospace/registry/ModCapabilities.java Register quarry capabilities + trash-can item/fluid/gas capabilities.
src/main/java/za/co/neroland/nerospace/registry/ModBlocks.java Register quarry controller/landmark/frame and trash can blocks.
src/main/java/za/co/neroland/nerospace/registry/ModBlockEntities.java Register quarry controller/landmark and trash can block entities.
src/main/java/za/co/neroland/nerospace/NerospaceClient.java Register quarry screen + quarry controller BE renderer.
src/main/java/za/co/neroland/nerospace/module/UpgradeModuleItem.java New upgrade-module item wrapper with fixed ModuleType per item.
src/main/java/za/co/neroland/nerospace/module/ModuleType.java New enum describing module types (speed/efficiency/fortune/silk).
src/main/java/za/co/neroland/nerospace/module/MachineModules.java New reusable module-slot bank + aggregated effect computations.
src/main/java/za/co/neroland/nerospace/machine/quarry/QuarryRegion.java New region discovery/representation derived from landmarks.
src/main/java/za/co/neroland/nerospace/machine/quarry/QuarryMenu.java New menu/container for quarry slots + synced status data.
src/main/java/za/co/neroland/nerospace/machine/quarry/QuarryLandmarkBlockEntity.java New cosmetic landmark BE for client particle “laser” effects.
src/main/java/za/co/neroland/nerospace/machine/quarry/QuarryLandmarkBlock.java New landmark block + client ticker for cosmetic animation.
src/main/java/za/co/neroland/nerospace/machine/quarry/QuarryFrameBlock.java New frame block type for recognition/skip logic + model codec.
src/main/java/za/co/neroland/nerospace/machine/quarry/QuarryControllerBlock.java New quarry controller block + menu opening + server ticker hookup.
src/main/java/za/co/neroland/nerospace/machine/quarry/QuarryChunkLoader.java Register TicketController for quarry chunk forcing.
src/main/java/za/co/neroland/nerospace/machine/quarry/PlanetMiningProfile.java New per-dimension mining speed/yield profile lookup.
src/main/java/za/co/neroland/nerospace/machine/quarry/OutputFilter.java New seam interface for future quarry output filtering.
src/main/java/za/co/neroland/nerospace/machine/quarry/MinerTier.java New tier enum gating area/modules/speed and planet access.
src/main/java/za/co/neroland/nerospace/gametest/NerospaceGameTests.java Suppress removal warning for mock ServerPlayer helper.
src/main/java/za/co/neroland/nerospace/datagen/ModRecipeProvider.java Add recipes for quarry blocks, frame casing, modules, trash can.
src/main/java/za/co/neroland/nerospace/datagen/ModModelProvider.java Generate models for quarry content + translucent quarry frame model.
src/main/java/za/co/neroland/nerospace/datagen/ModLanguageProvider.java Add translations for quarry/modules/trash-can UI + blocks/items.
src/main/java/za/co/neroland/nerospace/datagen/ModBlockTagProvider.java Tag quarry/trash blocks for pickaxe mining / tool requirements.
src/main/java/za/co/neroland/nerospace/datagen/ModBlockLootSubProvider.java Add loot drops for quarry blocks and trash can (frame drops none).
src/main/java/za/co/neroland/nerospace/compat/jei/RefiningCategory.java Adjust rocket fuel output .add call argument type.
src/main/java/za/co/neroland/nerospace/command/NerospaceCommands.java Extend gallery builder with quarry landmark + operating quarry displays.
src/main/java/za/co/neroland/nerospace/client/QuarryScreen.java New GUI screen for quarry controller.
src/main/java/za/co/neroland/nerospace/client/QuarryControllerRenderState.java New render-state object for quarry controller BER.
src/main/java/za/co/neroland/nerospace/client/QuarryControllerRenderer.java New renderer for gantry/drill-head visuals.
src/main/java/za/co/neroland/nerospace/client/GalleryCaptureHarness.java Null-safety tweaks and add quarry capture shots.
src/generated/resources/data/nerospace/recipe/trash_can.json Generated trash can crafting recipe.
src/generated/resources/data/nerospace/recipe/speed_module.json Generated speed module crafting recipe.
src/generated/resources/data/nerospace/recipe/silk_touch_module.json Generated silk touch module crafting recipe.
src/generated/resources/data/nerospace/recipe/quarry_landmark.json Generated quarry landmark crafting recipe.
src/generated/resources/data/nerospace/recipe/quarry_controller.json Generated quarry controller crafting recipe.
src/generated/resources/data/nerospace/recipe/frame_casing.json Generated frame casing crafting recipe.
src/generated/resources/data/nerospace/recipe/fortune_module.json Generated fortune module crafting recipe.
src/generated/resources/data/nerospace/recipe/efficiency_module.json Generated efficiency module crafting recipe.
src/generated/resources/data/nerospace/loot_table/blocks/trash_can.json Generated trash can block loot table.
src/generated/resources/data/nerospace/loot_table/blocks/quarry_landmark.json Generated quarry landmark block loot table.
src/generated/resources/data/nerospace/loot_table/blocks/quarry_controller.json Generated quarry controller block loot table.
src/generated/resources/data/nerospace/advancement/recipes/misc/trash_can.json Generated recipe advancement for trash can.
src/generated/resources/data/nerospace/advancement/recipes/misc/speed_module.json Generated recipe advancement for speed module.
src/generated/resources/data/nerospace/advancement/recipes/misc/silk_touch_module.json Generated recipe advancement for silk touch module.
src/generated/resources/data/nerospace/advancement/recipes/misc/quarry_landmark.json Generated recipe advancement for quarry landmark.
src/generated/resources/data/nerospace/advancement/recipes/misc/quarry_controller.json Generated recipe advancement for quarry controller.
src/generated/resources/data/nerospace/advancement/recipes/misc/frame_casing.json Generated recipe advancement for frame casing.
src/generated/resources/data/nerospace/advancement/recipes/misc/fortune_module.json Generated recipe advancement for fortune module.
src/generated/resources/data/nerospace/advancement/recipes/misc/efficiency_module.json Generated recipe advancement for efficiency module.
src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json Generated vanilla tag update to require iron tool for quarry controller.
src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json Generated vanilla tag update to mine quarry/trash blocks with pickaxe.
src/generated/resources/assets/nerospace/models/item/speed_module.json Generated item model for speed module.
src/generated/resources/assets/nerospace/models/item/silk_touch_module.json Generated item model for silk touch module.
src/generated/resources/assets/nerospace/models/item/frame_casing.json Generated item model for frame casing.
src/generated/resources/assets/nerospace/models/item/fortune_module.json Generated item model for fortune module.
src/generated/resources/assets/nerospace/models/item/efficiency_module.json Generated item model for efficiency module.
src/generated/resources/assets/nerospace/models/block/trash_can.json Generated block model for trash can.
src/generated/resources/assets/nerospace/models/block/quarry_landmark.json Generated block model for quarry landmark.
src/generated/resources/assets/nerospace/models/block/quarry_frame.json Generated block model for quarry frame (AO off).
src/generated/resources/assets/nerospace/models/block/quarry_controller.json Generated block model for quarry controller.
src/generated/resources/assets/nerospace/lang/en_us.json Generated language keys for quarry/modules/trash can.
src/generated/resources/assets/nerospace/items/trash_can.json Generated item definition pointing to block model.
src/generated/resources/assets/nerospace/items/speed_module.json Generated item definition pointing to item model.
src/generated/resources/assets/nerospace/items/silk_touch_module.json Generated item definition pointing to item model.
src/generated/resources/assets/nerospace/items/quarry_landmark.json Generated item definition pointing to block model.
src/generated/resources/assets/nerospace/items/quarry_controller.json Generated item definition pointing to block model.
src/generated/resources/assets/nerospace/items/frame_casing.json Generated item definition pointing to item model.
src/generated/resources/assets/nerospace/items/fortune_module.json Generated item definition pointing to item model.
src/generated/resources/assets/nerospace/items/efficiency_module.json Generated item definition pointing to item model.
src/generated/resources/assets/nerospace/blockstates/trash_can.json Generated blockstate for trash can.
src/generated/resources/assets/nerospace/blockstates/quarry_landmark.json Generated blockstate for quarry landmark.
src/generated/resources/assets/nerospace/blockstates/quarry_frame.json Generated blockstate for quarry frame.
src/generated/resources/assets/nerospace/blockstates/quarry_controller.json Generated blockstate for quarry controller.
RELEASE_CHECKLIST.md Markdown formatting/spacing tweaks.
PRIVACY.md Code fence language normalization.
art/blockbench/item/speed_module.bbmodel Add Blockbench source model for speed module.
art/blockbench/item/silk_touch_module.bbmodel Add Blockbench source model for silk touch module.
art/blockbench/item/frame_casing.bbmodel Add Blockbench source model for frame casing.
art/blockbench/item/fortune_module.bbmodel Add Blockbench source model for fortune module.
art/blockbench/item/efficiency_module.bbmodel Add Blockbench source model for efficiency module.
art/blockbench/block/trash_can.bbmodel Add Blockbench source model for trash can.
art/blockbench/block/quarry_landmark.bbmodel Add Blockbench source model for quarry landmark.
art/blockbench/block/quarry_frame.bbmodel Add Blockbench source model for quarry frame.
art/blockbench/block/quarry_controller.bbmodel Add Blockbench source model for quarry controller.
.markdownlint.json Disable MD036 to align repo lint preferences.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tools/fix_markdown.py
Comment on lines +3 to +6
Auto-fix the Markdown violations the gradle-mcp `markdown_check` tool reports, in place.

Companion to that linter: it applies the same markdownlint rule subset the repo's
.markdownlint.json leaves enabled, so `markdown_check` comes back clean afterwards.
Comment on lines +17 to +22
/**
* Trash Can: a bottomless sink for every transferable layer. It exposes item, fluid and gas
* capabilities that accept anything inserted (by hopper or pipe) and then <b>void it</b>. Each layer
* is a high-capacity buffer that is emptied every server tick, so it always has room and never spills
* anything back out — there is no extraction surface, so nothing can be pulled out of it.
*/

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2bada9544c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +658 to +662
public void setRemoved() {
if (this.level instanceof ServerLevel serverLevel) {
releaseForcedChunks(serverLevel);
removeFrame(serverLevel);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Avoid tearing down frames on chunk unload

If BlockEntity#setRemoved is invoked for a normal controller chunk unload, this removes the entire frame ring even though the controller block is still present and its saved frameIndex/state still assume the frame exists. A quarry that a player leaves and later revisits can therefore lose the casings/frame without being broken; move frame teardown to the actual block-removal path and keep unload cleanup limited to non-world-changing state.

Useful? React with 👍 / 👎.

Comment on lines +418 to +421
if (!level.hasChunk(cx, cz)) {
forceLoad(level, cx, cz);
changed = true;
break; // retry next tick once the chunk is in

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Ticket chunks even when they are already loaded

Because the quarry only calls forceLoad when hasChunk is false, a quarry started while the player is nearby never creates tickets for the already-loaded region/controller chunks; once the player walks away, those chunks can unload and the controller stops ticking instead of continuing the dig. Take the force-load ticket for the relevant chunks regardless of current loaded state, not only after encountering an unloaded target.

Useful? React with 👍 / 👎.

Comment on lines +37 to +39
public ResourceHandler<ItemResource> getItemHandler() {
return this.items;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Expose only non-extractable trash handlers

This returns a normal MachineItemHandler as the trash can capability, so adjacent pipes configured to pull can extract items during the tick before tick() clears the buffer; the same pattern applies to the fluid/gas handlers below. That makes the trash can able to re-output resources it was supposed to void, so these capabilities should discard on insert or otherwise reject extraction.

Useful? React with 👍 / 👎.

Replace the old translucent cube frame with a real 3-D open structural frame: new model elements and a dedicated registerQuarryFrame data-gen method, updated quarry_frame texture generator, and model JSON now uses a SIDE texture. Make the controller always materialise perimeter frame blocks (skip only existing quarry frames) so the ring is visible regardless of terrain. Extend render state with an ItemStackRenderState and headSpin, and update the renderer to draw depth-tested lines for the moving gantry/shaft and render a spinning, full-bright item model as the drill head (with proper transforms and lighting). Update QuarryFrameBlock javadoc and wiki to reflect the new visual/behaviour changes.
Base automatically changed from v1.0.0 to main June 15, 2026 07:21
Revamp quarry visuals and behaviour: add QUARRY_MINE_INTERVAL and throttle mining to one block per work cycle derived from tier/modules/planet speed; smooth client-side drill-head motion by tracking previous/current mined blocks and their timestamps. Replace spinning item-model head with textured 3D gantry and drill-bit rendering (entityCutout, custom geometry), expand render bounding box and enable off-screen rendering. Make frame placement/resumption more robust: avoid framing over controllers or block entities, pre-carve interior-only pits (leave frame columns), and stage gallery quarries via a new helper in the dev command. Improve chunk ticketing by pinning only the active dig chunk and releasing older tickets; stop tearing down the frame on chunk unload (move teardown to preRemoveSideEffects). Persist new mine tracking fields to save/load. Update quarry frame texture and texture generator script to new visual theme, and refresh wiki notes to document pacing, interior-only excavation, and chunk-loading behaviour.
Introduce a new "mining" chapter and quarry progression: adds four advancement JSONs (frame_casing, quarry_landmark, quarry_controller, upgrade_module), updates ModAdvancements to register the new advancement chain, and extends StarGuide to include the mining steps. Also add language entries (en_us.json / ModLanguageProvider) for the new chapter and guide steps. Documentation updated: clarify quarry behavior and framing/casing rules in Quarry-Controller.md and update Star-Guide.md chapter/step counts and mining chapter summary.
Use distinct textures for the quarry gantry and drill head in the renderer and update texture generation accordingly. QuarryControllerRenderer: remove unused RenderType import, add GANTRY_TEX and DRILL_TEX identifiers, and submit separate RenderTypes.entityCutout calls for gantry and drill. Assets: add quarry_gantry.png and quarry_drill.png and update quarry_frame.png. tools/gen_textures.py: factor common strut creation into _gen_quarry_strut, make gen_quarry_frame use the generic function, add gen_quarry_gantry and gen_quarry_drill, and invoke them from main so all three textures are generated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants