2285 lines
58 KiB
Markdown
2285 lines
58 KiB
Markdown
60\. AI Prompt Pack — Local Model Workflow for Each Build Step
|
||
|
||
Date added: 05 June 2026
|
||
|
||
Purpose:
|
||
This section gives copy-and-paste prompts for local AI development using Qwen3.5-9B as the main coding worker and Qwen3.6-27B as the planner, reviewer, debugger, and architecture guard.
|
||
|
||
Model usage rule:
|
||
|
||
\- Use Qwen3.5-9B for small, isolated implementation tasks.
|
||
\- Use Qwen3.6-27B for architecture decisions, reviewing several files at once, diagnosing difficult errors, and checking that the code still follows the design.
|
||
\- Do not ask Qwen3.5-9B to build broad systems.
|
||
\- Do not waste Qwen3.6-27B on tiny one-class tasks unless Qwen3.5-9B fails twice.
|
||
|
||
General 9B worker prompt template:
|
||
|
||
Use this when asking Qwen3.5-9B to create or edit one file.
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
You are implementing one small Java task for a Minecraft NeoForge mod called Living World.
|
||
|
||
Important project rules:
|
||
\- Core simulation code must be plain Java wherever possible.
|
||
\- Do not import Minecraft or NeoForge classes unless this specific task says to.
|
||
\- Do not create extra systems beyond the task.
|
||
\- Keep the code small and testable.
|
||
\- Follow the package path exactly.
|
||
\- Use clear names.
|
||
\- Add validation where requested.
|
||
\- If tests are requested, write the tests too.
|
||
|
||
Task:
|
||
\[PASTE TASK HERE\]
|
||
|
||
Output required:
|
||
1\. Brief explanation of what files you will create or edit.
|
||
2\. Full code for each file.
|
||
3\. Any test code required.
|
||
4\. Notes about assumptions.
|
||
|
||
Do not skip requirements.
|
||
Do not add unrelated features.
|
||
|
||
General 27B architect/reviewer prompt template:
|
||
|
||
Use this when asking Qwen3.6-27B to review multiple files, fix design drift, or plan the next batch.
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
You are the senior architect reviewing the Living World Minecraft NeoForge mod.
|
||
|
||
Project direction:
|
||
This is an ecosystem-only world evolution mod. It does not simulate villagers, NPC civilisations, settlements, factions, wars, trade, roads, or wildlife AI.
|
||
|
||
Architecture rules:
|
||
\- Core simulation must remain plain Java where possible.
|
||
\- Minecraft and NeoForge code must stay in platform or integration packages.
|
||
\- Regions are the main simulation unit, not chunks.
|
||
\- Modules must communicate through services, events, or public data contracts.
|
||
\- Save data must be versioned.
|
||
\- Debug and tests are mandatory.
|
||
|
||
Review these files:
|
||
\[PASTE FILES OR SUMMARIES\]
|
||
|
||
Check for:
|
||
1\. Incorrect Minecraft/NeoForge imports in core classes.
|
||
2\. Scope creep into NPCs, factions, roads, or settlements.
|
||
3\. Broken package boundaries.
|
||
4\. Missing validation.
|
||
5\. Bad lifecycle handling.
|
||
6\. Save/versioning issues.
|
||
7\. Test gaps.
|
||
8\. Overly broad or fragile code.
|
||
|
||
Output required:
|
||
1\. Pass/fail summary.
|
||
2\. Specific problems by file.
|
||
3\. Exact fixes.
|
||
4\. Revised code only where necessary.
|
||
5\. Recommended next task.
|
||
|
||
61\. Milestone 1 AI Prompts — Project Skeleton
|
||
|
||
Task 1.1 prompt — Create base mod package
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/LivingWorldMod.java for a Minecraft NeoForge mod called Living World.
|
||
|
||
Requirements:
|
||
\- Package: com.livingworld
|
||
\- Class name: LivingWorldMod
|
||
\- Define public static final String MOD\_ID using LivingWorldConstants.MOD\_ID if that class already exists. If it does not exist yet, temporarily define MOD\_ID \= "livingworld" and add a TODO to replace it after constants are created.
|
||
\- This class must contain only entrypoint wiring.
|
||
\- It must not contain simulation logic.
|
||
\- It must log a startup message.
|
||
\- It must delegate startup work to com.livingworld.bootstrap.LivingWorldBootstrap if available.
|
||
\- If NeoForge annotations/imports are needed, keep them only in this entrypoint file.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Any assumptions about the NeoForge version.
|
||
\- Do not create unrelated classes.
|
||
|
||
Task 1.2 prompt — Create bootstrap class
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/bootstrap/LivingWorldBootstrap.java.
|
||
|
||
Requirements:
|
||
\- Package: com.livingworld.bootstrap
|
||
\- Class name: LivingWorldBootstrap
|
||
\- Methods:
|
||
\- void initialize()
|
||
\- void onCommonSetup()
|
||
\- void onServerStarting()
|
||
\- void onServerStarted()
|
||
\- void onServerStopping()
|
||
\- Each method should log its lifecycle stage.
|
||
\- Use LivingWorldLogger if available. If not available yet, use a minimal temporary logger comment and no System.out.
|
||
\- Do not add gameplay logic.
|
||
\- Do not create region, ecosystem, or persistence systems yet.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Short explanation of where it should be called from.
|
||
|
||
Task 1.3 prompt — Create package placeholders
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create the package placeholder structure for the Living World mod.
|
||
|
||
Packages:
|
||
\- com.livingworld.api
|
||
\- com.livingworld.bootstrap
|
||
\- com.livingworld.config
|
||
\- com.livingworld.core
|
||
\- com.livingworld.core.lifecycle
|
||
\- com.livingworld.core.registry
|
||
\- com.livingworld.core.services
|
||
\- com.livingworld.core.simulation
|
||
\- com.livingworld.data
|
||
\- com.livingworld.data.saved
|
||
\- com.livingworld.data.migration
|
||
\- com.livingworld.data.serialization
|
||
\- com.livingworld.events
|
||
\- com.livingworld.regions
|
||
\- com.livingworld.regions.cache
|
||
\- com.livingworld.regions.query
|
||
\- com.livingworld.commands
|
||
\- com.livingworld.debug
|
||
\- com.livingworld.networking
|
||
\- com.livingworld.platform
|
||
\- com.livingworld.platform.neoforge
|
||
\- com.livingworld.integration.minecraft
|
||
\- com.livingworld.modules
|
||
\- com.livingworld.modules.ecosystem
|
||
\- com.livingworld.modules.soil
|
||
\- com.livingworld.modules.water
|
||
\- com.livingworld.modules.pollution
|
||
\- com.livingworld.modules.vegetation
|
||
\- com.livingworld.modules.resources
|
||
\- com.livingworld.modules.recovery
|
||
\- com.livingworld.modules.worldeffects
|
||
\- com.livingworld.testing
|
||
|
||
If Java requires at least one file per package in this project setup, create a package-info.java file with a one-line comment for each package.
|
||
|
||
Do not add implementation logic.
|
||
|
||
Task 1.4 prompt — Create constants
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/LivingWorldConstants.java.
|
||
|
||
Requirements:
|
||
\- Package: com.livingworld.core
|
||
\- Final utility class.
|
||
\- Private constructor.
|
||
\- Constants:
|
||
\- public static final String MOD\_ID \= "livingworld";
|
||
\- public static final String MOD\_NAME \= "Living World";
|
||
\- public static final int CURRENT\_CORE\_SCHEMA\_VERSION \= 1;
|
||
\- public static final int DEFAULT\_REGION\_SIZE\_CHUNKS \= 8;
|
||
\- public static final int DEFAULT\_SIMULATION\_INTERVAL\_TICKS \= 100;
|
||
\- Do not import Minecraft or NeoForge classes.
|
||
\- Add short comments explaining each constant.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 1 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the completed Milestone 1 project skeleton for the Living World ecosystem mod.
|
||
|
||
Files to review:
|
||
\[LivingWorldMod.java, LivingWorldBootstrap.java, LivingWorldConstants.java, and package list]
|
||
|
||
Check:
|
||
\- Entrypoint contains no simulation logic.
|
||
\- Bootstrap owns startup flow.
|
||
\- Constants are centralised.
|
||
\- No ecosystem/NPC/settlement/faction systems were added early.
|
||
\- Minecraft/NeoForge imports are restricted to entrypoint or platform boundary.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Required fixes.
|
||
\- Next safe milestone.
|
||
|
||
62\. Milestone 2 AI Prompts — Logging and Diagnostics
|
||
|
||
Task 2.1 prompt — Create logger wrapper
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/debug/LivingWorldLogger.java.
|
||
|
||
Requirements:
|
||
\- Package: com.livingworld.debug
|
||
\- Class name: LivingWorldLogger
|
||
\- Provide static methods:
|
||
\- info(String message)
|
||
\- warn(String message)
|
||
\- error(String message)
|
||
\- error(String message, Throwable throwable)
|
||
\- debug(String message)
|
||
\- info(DiagnosticCategory category, String message)
|
||
\- warn(DiagnosticCategory category, String message)
|
||
\- error(DiagnosticCategory category, String message)
|
||
\- debug(DiagnosticCategory category, String message)
|
||
\- Use a standard logger appropriate for the mod environment if available.
|
||
\- Do not use System.out.
|
||
\- If debug config does not exist yet, allow debug messages for now and add a TODO to wire config later.
|
||
\- Do not import ecosystem module classes.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 2.2 prompt — Create diagnostic category enum
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/debug/DiagnosticCategory.java.
|
||
|
||
Requirements:
|
||
\- Package: com.livingworld.debug
|
||
\- Enum values:
|
||
\- BOOTSTRAP
|
||
\- CONFIG
|
||
\- REGIONS
|
||
\- SIMULATION
|
||
\- PERSISTENCE
|
||
\- EVENTS
|
||
\- MODULES
|
||
\- COMMANDS
|
||
\- NETWORKING
|
||
\- PLATFORM
|
||
\- ECOSYSTEM
|
||
\- TESTING
|
||
\- Add a method displayName() that returns a readable name.
|
||
\- Do not import Minecraft or NeoForge classes.
|
||
|
||
Output:
|
||
\- Full Java enum.
|
||
|
||
Milestone 2 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the logging and diagnostics foundation.
|
||
|
||
Files:
|
||
\[PASTE LivingWorldLogger.java and DiagnosticCategory.java\]
|
||
|
||
Check:
|
||
\- No System.out usage.
|
||
\- Logger methods are consistent.
|
||
\- Categories match the ecosystem-only architecture.
|
||
\- No unnecessary Minecraft imports.
|
||
\- Debug behaviour can later connect to config.
|
||
|
||
Output:
|
||
\- Problems found.
|
||
\- Recommended fixes.
|
||
\- Whether Milestone 3 can begin.
|
||
|
||
63\. Milestone 3 AI Prompts — Configuration Foundation
|
||
|
||
Task 3.1 prompt — Create SimulationConfig
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/config/SimulationConfig.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- int regionSizeChunks \= 8
|
||
\- int simulationIntervalTicks \= 100
|
||
\- int maxRegionsPerCycle \= 50
|
||
\- int maxMillisecondsPerCycle \= 25
|
||
\- int emergencyStopMilliseconds \= 40
|
||
\- boolean enableDebugCommands \= true
|
||
\- boolean enableProfiler \= true
|
||
\- Add getters.
|
||
\- Add setters only if needed for tests.
|
||
\- Add validate() method.
|
||
\- Validation rules:
|
||
\- regionSizeChunks \>= 1
|
||
\- simulationIntervalTicks \>= 1
|
||
\- maxRegionsPerCycle \>= 1
|
||
\- maxMillisecondsPerCycle \>= 1
|
||
\- emergencyStopMilliseconds \>= maxMillisecondsPerCycle
|
||
\- Throw IllegalArgumentException with clear messages on invalid values.
|
||
\- Do not import Minecraft or NeoForge classes.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Basic test suggestions.
|
||
|
||
Task 3.2 prompt — Create ConfigService interface
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/services/ConfigService.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- SimulationConfig getSimulationConfig()
|
||
\- void reload()
|
||
\- void validate()
|
||
\- Import SimulationConfig from com.livingworld.config.
|
||
\- Do not reference NeoForge config APIs here.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Task 3.3 prompt — Create DefaultConfigService
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/config/DefaultConfigService.java.
|
||
|
||
Requirements:
|
||
\- Implements ConfigService.
|
||
\- Holds a SimulationConfig instance.
|
||
\- Constructor creates default SimulationConfig and validates it.
|
||
\- getSimulationConfig returns the config.
|
||
\- reload can be a safe placeholder for now, but it must revalidate.
|
||
\- validate delegates to SimulationConfig.validate().
|
||
\- Log validation success using LivingWorldLogger if available.
|
||
\- Do not use NeoForge config classes yet.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 3 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the configuration foundation for the Living World ecosystem mod.
|
||
|
||
Files:
|
||
\[PASTE SimulationConfig.java, ConfigService.java, DefaultConfigService.java\]
|
||
|
||
Check:
|
||
\- Config is plain Java.
|
||
\- Validation is strict and clear.
|
||
\- No direct NeoForge dependency yet.
|
||
\- Defaults match the design document.
|
||
\- Future Forge/NeoForge config wiring can be added without rewriting core code.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Required fixes.
|
||
\- Any missing config values for ecosystem-only MVP.
|
||
|
||
64\. Milestone 4 AI Prompts — Core Service Registry
|
||
|
||
Task 4.1 prompt — Create ServiceKey
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/services/ServiceKey.java.
|
||
|
||
Requirements:
|
||
\- Generic immutable value object.
|
||
\- Prefer Java record if project Java version supports it.
|
||
\- Fields:
|
||
\- String id
|
||
\- Class\<T\> serviceType
|
||
\- Validate id is not null or blank.
|
||
\- Validate serviceType is not null.
|
||
\- Add stable toString().
|
||
\- Do not import Minecraft or NeoForge classes.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 4.2 prompt — Create ServiceRegistry
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/services/ServiceRegistry.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Internally store services by ServiceKey.
|
||
\- Methods:
|
||
\- \<T\> void register(ServiceKey\<T\> key, T service)
|
||
\- \<T\> T get(ServiceKey\<T\> key)
|
||
\- \<T\> Optional\<T\> find(ServiceKey\<T\> key)
|
||
\- boolean isRegistered(ServiceKey\<?\> key)
|
||
\- void lock()
|
||
\- boolean isLocked()
|
||
\- Reject duplicate registrations.
|
||
\- Reject null keys and null services.
|
||
\- If locked, reject new registrations.
|
||
\- Missing get() should throw clear IllegalStateException.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Suggested unit tests.
|
||
|
||
Task 4.3 prompt — Create CoreServices
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/services/CoreServices.java.
|
||
|
||
Requirements:
|
||
\- Final utility class with private constructor.
|
||
\- Define ServiceKey constants for:
|
||
\- CONFIG
|
||
\- REGIONS
|
||
\- SIMULATION
|
||
\- PERSISTENCE
|
||
\- EVENTS
|
||
\- MODULES
|
||
\- TIME
|
||
\- DEBUG
|
||
\- HISTORY
|
||
\- If some service interfaces do not exist yet, add TODO comments and create keys only for existing interfaces, or use Object temporarily with clear TODOs.
|
||
\- Do not create fake gameplay services.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Note any TODOs caused by missing interfaces.
|
||
|
||
Milestone 4 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the core service registry.
|
||
|
||
Files:
|
||
\[ServiceKey.java, ServiceRegistry.java, CoreServices.java\]
|
||
|
||
Check:
|
||
\- Type safety is acceptable.
|
||
\- Registry cannot be mutated after lock.
|
||
\- Errors are clear.
|
||
\- No hidden global state problems.
|
||
\- No Minecraft imports.
|
||
\- Design is suitable for module dependency injection later.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
\- Risk notes.
|
||
|
||
65\. Milestone 5 AI Prompts — Region Identity
|
||
|
||
Task 5.1 prompt — Create RegionCoordinate
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionCoordinate.java.
|
||
|
||
Requirements:
|
||
\- Java record if available.
|
||
\- Fields:
|
||
\- String dimensionId
|
||
\- int x
|
||
\- int z
|
||
\- Validate dimensionId is not null or blank.
|
||
\- Static methods:
|
||
\- fromChunk(String dimensionId, int chunkX, int chunkZ, int regionSizeChunks)
|
||
\- fromBlock(String dimensionId, int blockX, int blockZ, int regionSizeChunks)
|
||
\- Instance methods:
|
||
\- int minChunkX(int regionSizeChunks)
|
||
\- int minChunkZ(int regionSizeChunks)
|
||
\- int maxChunkX(int regionSizeChunks)
|
||
\- int maxChunkZ(int regionSizeChunks)
|
||
\- int centerBlockX(int regionSizeChunks)
|
||
\- int centerBlockZ(int regionSizeChunks)
|
||
\- String stableId()
|
||
\- Use Math.floorDiv so negative coordinates work correctly.
|
||
\- Validate regionSizeChunks \>= 1\.
|
||
\- Do not import Minecraft classes.
|
||
|
||
Test requirements:
|
||
Create RegionCoordinateTest if test framework exists.
|
||
Test:
|
||
\- block 0,0 maps to region 0,0
|
||
\- block 127,127 maps to region 0,0 with region size 8 chunks
|
||
\- block 128,0 maps to region 1,0
|
||
\- block \-1,0 maps to region \-1,0
|
||
\- block \-128,0 maps to region \-1,0
|
||
\- block \-129,0 maps to region \-2,0
|
||
\- stableId is stable
|
||
\- works as HashMap key
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Full test file if possible.
|
||
|
||
Task 5.2 prompt — Create RegionLifecycleState
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionLifecycleState.java.
|
||
|
||
Requirements:
|
||
\- Enum values:
|
||
\- UNLOADED
|
||
\- LOADING
|
||
\- ACTIVE
|
||
\- DIRTY
|
||
\- SAVING
|
||
\- FAILED
|
||
\- UNLOADING
|
||
\- Add comments explaining each state.
|
||
\- Do not add methods unless useful.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java enum.
|
||
|
||
Task 5.3 prompt — Create RegionFlags
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionFlags.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- boolean hasPlayerActivity
|
||
\- boolean hasHighPollution
|
||
\- boolean hasLowSoilQuality
|
||
\- boolean hasActiveEcosystemEvent
|
||
\- boolean forceLoadedBySimulation
|
||
\- boolean corrupted
|
||
\- Do not include settlement, road, faction, or NPC flags.
|
||
\- Add getters and setters.
|
||
\- Add copy().
|
||
\- Add clearTransientFlags(). This should clear hasPlayerActivity and hasActiveEcosystemEvent, but not corrupted.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 5 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review region identity classes.
|
||
|
||
Files:
|
||
\[RegionCoordinate.java, RegionLifecycleState.java, RegionFlags.java, and tests\]
|
||
|
||
Check:
|
||
\- Negative coordinate math is correct.
|
||
\- No Minecraft classes leaked into region core.
|
||
\- Flags match ecosystem-only scope.
|
||
\- RegionCoordinate is safe as a HashMap key.
|
||
\- Tests cover edge cases.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Exact fixes if needed.
|
||
|
||
66\. Milestone 6 AI Prompts — Region Core Data
|
||
|
||
Task 6.1 prompt — Create RegionMetrics
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionMetrics.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Ecosystem-only fields:
|
||
\- double ecosystemHealth
|
||
\- double pollutionScore
|
||
\- double soilQuality
|
||
\- double waterQuality
|
||
\- double vegetationPressure
|
||
\- double resourceDepletion
|
||
\- double recoveryPressure
|
||
\- Values should normally be clamped between 0 and 100\.
|
||
\- Add normalize().
|
||
\- Add copy().
|
||
\- Add static defaults().
|
||
\- Defaults:
|
||
\- ecosystemHealth \= 60
|
||
\- pollutionScore \= 0
|
||
\- soilQuality \= 60
|
||
\- waterQuality \= 60
|
||
\- vegetationPressure \= 50
|
||
\- resourceDepletion \= 0
|
||
\- recoveryPressure \= 50
|
||
\- Add applyDelta methods if simple and clean.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Suggested tests.
|
||
|
||
Task 6.2 prompt — Create RegionModuleData
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionModuleData.java.
|
||
|
||
Requirements:
|
||
\- Stores module-specific data by module ID.
|
||
\- Field:
|
||
\- Map\<String, Object\> moduleData
|
||
\- Methods:
|
||
\- void put(String moduleId, Object data)
|
||
\- \<T\> Optional\<T\> get(String moduleId, Class\<T\> type)
|
||
\- boolean contains(String moduleId)
|
||
\- Set\<String\> moduleIds()
|
||
\- RegionModuleData copyShallow()
|
||
\- Validate moduleId is not null or blank.
|
||
\- Reject null data.
|
||
\- If get type does not match, return Optional.empty instead of throwing.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 6.3 prompt — Create Region
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/Region.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- UUID id
|
||
\- RegionCoordinate coordinate
|
||
\- RegionLifecycleState lifecycleState
|
||
\- long createdAtSimulationTick
|
||
\- long lastUpdatedSimulationTick
|
||
\- boolean dirty
|
||
\- RegionFlags flags
|
||
\- RegionMetrics metrics
|
||
\- RegionModuleData moduleData
|
||
\- Constructor validates required fields.
|
||
\- Methods:
|
||
\- markDirty()
|
||
\- clearDirty()
|
||
\- isDirty()
|
||
\- updateLastSimulatedTick(long tick)
|
||
\- setLifecycleState(RegionLifecycleState state)
|
||
\- validate()
|
||
\- validate() checks id, coordinate, lifecycleState, flags, metrics, and moduleData are not null.
|
||
\- Do not include settlement, faction, road, or NPC fields.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 6 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the region core data classes.
|
||
|
||
Files:
|
||
\[PASTE RegionMetrics.java, RegionModuleData.java, Region.java\]
|
||
|
||
Check:
|
||
\- Metrics match ecosystem-only scope.
|
||
\- Region is not bloated with future unrelated systems.
|
||
\- Validation is strong.
|
||
\- Dirty state behaviour is sensible.
|
||
\- No Minecraft imports.
|
||
\- No direct persistence logic inside Region.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Exact corrections.
|
||
|
||
67\. Milestone 7 AI Prompts — Region Creation and Lifecycle
|
||
|
||
Task 7.1 prompt — Create RegionLifecycleController
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionLifecycleController.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Methods:
|
||
\- boolean canTransition(RegionLifecycleState from, RegionLifecycleState to)
|
||
\- void transition(Region region, RegionLifecycleState target)
|
||
\- Allowed transitions:
|
||
\- UNLOADED \-\> LOADING
|
||
\- LOADING \-\> ACTIVE
|
||
\- LOADING \-\> FAILED
|
||
\- ACTIVE \-\> DIRTY
|
||
\- DIRTY \-\> SAVING
|
||
\- SAVING \-\> ACTIVE
|
||
\- SAVING \-\> FAILED
|
||
\- ACTIVE \-\> UNLOADING
|
||
\- UNLOADING \-\> UNLOADED
|
||
\- FAILED \-\> LOADING
|
||
\- Invalid transitions throw IllegalStateException with clear message.
|
||
\- transition() must validate region is not null.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Suggested tests.
|
||
|
||
Task 7.2 prompt — Create RegionFactory
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionFactory.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Method:
|
||
\- Region createNewRegion(RegionCoordinate coordinate, long simulationTick)
|
||
\- New region rules:
|
||
\- random UUID
|
||
\- coordinate from argument
|
||
\- lifecycleState ACTIVE
|
||
\- createdAtSimulationTick \= simulationTick
|
||
\- lastUpdatedSimulationTick \= simulationTick
|
||
\- dirty \= true
|
||
\- default RegionFlags
|
||
\- RegionMetrics.defaults()
|
||
\- empty RegionModuleData
|
||
\- validate before return
|
||
\- No Minecraft imports.
|
||
\- Do not initialise ecology modules here yet; that comes after ModuleRegistry is connected.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 7 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review lifecycle and region creation.
|
||
|
||
Files:
|
||
\[PASTE RegionLifecycleController.java and RegionFactory.java\]
|
||
|
||
Check:
|
||
\- Invalid transitions are rejected.
|
||
\- New regions are immediately dirty.
|
||
\- Factory does not import Minecraft classes.
|
||
\- Factory does not start implementing ecosystem gameplay prematurely.
|
||
\- Tests cover valid and invalid transitions.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
|
||
68\. Milestone 8 AI Prompts — Module Contracts
|
||
|
||
Task 8.1 prompt — Create SimulationModule interface
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/SimulationModule.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- String getModuleId()
|
||
\- ModuleMetadata getMetadata()
|
||
\- void initialize(ModuleContext context)
|
||
\- void onServerStarted(ServerContext context)
|
||
\- void createDefaultRegionData(Region region)
|
||
\- ModuleUpdateResult updateRegion(RegionUpdateContext context)
|
||
\- void onLivingWorldEvent(LivingWorldEvent event)
|
||
\- void saveModuleData(PersistenceWriter writer)
|
||
\- void loadModuleData(PersistenceReader reader)
|
||
\- void shutdown()
|
||
\- Create minimal placeholder interfaces/classes if missing:
|
||
n \- ServerContext
|
||
\- RegionUpdateContext
|
||
\- LivingWorldEvent
|
||
\- PersistenceWriter
|
||
\- PersistenceReader
|
||
\- Do not implement any real ecosystem module yet.
|
||
\- No Minecraft imports in this interface.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
\- Any minimal placeholder files required.
|
||
|
||
Task 8.2 prompt — Create ModuleMetadata
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/ModuleMetadata.java.
|
||
|
||
Requirements:
|
||
\- Immutable class or record.
|
||
\- Fields:
|
||
\- String moduleId
|
||
\- String displayName
|
||
\- String version
|
||
\- String description
|
||
\- String requiredCoreVersion
|
||
\- List\<String\> dependencies
|
||
\- List\<String\> optionalDependencies
|
||
\- boolean defaultEnabled
|
||
\- boolean serverOnly
|
||
\- boolean experimental
|
||
\- Validate moduleId and displayName are not blank.
|
||
\- Replace null dependency lists with empty lists.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 8.3 prompt — Create ModuleContext
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/ModuleContext.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Field:
|
||
\- ServiceRegistry services
|
||
\- Constructor validates services is not null.
|
||
\- Method:
|
||
\- \<T\> T getService(ServiceKey\<T\> key)
|
||
\- Do not expose the whole registry for mutation if avoidable.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 8.4 prompt — Create ModuleUpdateResult
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/ModuleUpdateResult.java.
|
||
|
||
Requirements:
|
||
\- Immutable class or record.
|
||
\- Fields:
|
||
\- boolean changedRegion
|
||
\- List\<LivingWorldEvent\> generatedEvents
|
||
\- List\<HistoryRecord\> historyRecords
|
||
\- int estimatedCost
|
||
\- List\<String\> warnings
|
||
\- Static constructors:
|
||
\- noChange()
|
||
\- changed()
|
||
\- Null lists become empty lists.
|
||
\- estimatedCost must not be negative.
|
||
\- No Minecraft imports.
|
||
|
||
If HistoryRecord does not exist, create a minimal placeholder in com.livingworld.modules or com.livingworld.events with TODO to move later.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Any placeholder file required.
|
||
|
||
Task 8.5 prompt — Create ModuleRegistry
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/ModuleRegistry.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Responsibilities:
|
||
\- register modules
|
||
\- reject duplicate module IDs
|
||
\- return all modules
|
||
\- return enabled modules
|
||
\- find by module ID
|
||
\- initialize all
|
||
\- shutdown all
|
||
\- Methods:
|
||
\- void register(SimulationModule module)
|
||
\- List\<SimulationModule\> getAllModules()
|
||
\- List\<SimulationModule\> getEnabledModules()
|
||
\- Optional\<SimulationModule\> find(String moduleId)
|
||
\- void initializeAll(ModuleContext context)
|
||
\- void shutdownAll()
|
||
\- For v1, enabled modules are modules where metadata.defaultEnabled is true.
|
||
\- Do not implement dependency sorting yet; add TODO.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 8 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review module contract architecture.
|
||
|
||
Files:
|
||
\[PASTE SimulationModule.java, ModuleMetadata.java, ModuleContext.java, ModuleUpdateResult.java, ModuleRegistry.java\]
|
||
|
||
Check:
|
||
\- Modules are generic and not tied to settlements/factions/NPCs.
|
||
\- Core module contracts do not import Minecraft classes.
|
||
\- ModuleRegistry is simple enough for v1.
|
||
\- Missing placeholders are sensible and marked as TODO.
|
||
\- Architecture supports ecosystem modules later.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Required fixes.
|
||
\- Next implementation task.
|
||
|
||
69\. Milestone 9 AI Prompts — Event Foundation
|
||
|
||
Task 9.1 prompt — Create LivingWorldEvent
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/events/LivingWorldEvent.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- String eventType()
|
||
\- long simulationTick()
|
||
\- String sourceModuleId()
|
||
\- No Minecraft imports.
|
||
\- Events must be usable by ecosystem modules later.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Task 9.2 prompt — Create BaseLivingWorldEvent
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/events/BaseLivingWorldEvent.java.
|
||
|
||
Requirements:
|
||
\- Immutable class or record implementing LivingWorldEvent.
|
||
\- Fields:
|
||
\- String eventType
|
||
\- long simulationTick
|
||
\- String sourceModuleId
|
||
\- Validate eventType is not blank.
|
||
\- Validate simulationTick is not negative.
|
||
\- sourceModuleId may be "core" for core events but must not be blank.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 9.3 prompt — Create LivingWorldEventListener
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/events/LivingWorldEventListener.java.
|
||
|
||
Requirements:
|
||
\- Functional interface.
|
||
\- Method:
|
||
\- void onEvent(LivingWorldEvent event)
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Task 9.4 prompt — Create LivingWorldEventBus
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/events/LivingWorldEventBus.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Methods:
|
||
\- void register(String eventType, LivingWorldEventListener listener)
|
||
\- void publish(LivingWorldEvent event)
|
||
\- int getPublishedEventCount()
|
||
\- int getListenerCount(String eventType)
|
||
\- Validate eventType is not blank.
|
||
\- Validate listener is not null.
|
||
\- Event publishing should send the event to listeners registered for that event type.
|
||
\- Unknown event type should not crash.
|
||
\- Prevent obvious recursive event storms with a simple dispatching guard or TODO if not implemented.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Suggested tests.
|
||
|
||
Milestone 9 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the Living World event foundation.
|
||
|
||
Files:
|
||
\[PASTE LivingWorldEvent.java, BaseLivingWorldEvent.java, LivingWorldEventListener.java, LivingWorldEventBus.java\]
|
||
|
||
Check:
|
||
\- Events are plain Java.
|
||
\- EventBus is not overcomplicated.
|
||
\- Unknown events are safe.
|
||
\- Recursion risk is noted or controlled.
|
||
\- Event types can support pollution/soil/vegetation events later.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
|
||
70\. Milestone 10 AI Prompts — Time Service
|
||
|
||
Task 10.1 prompt — Create LivingWorldCalendar
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/simulation/LivingWorldCalendar.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- long simulationTick
|
||
\- int day
|
||
\- int month
|
||
\- int year
|
||
\- Default start: day 1, month 1, year 1, simulationTick 0\.
|
||
\- Methods:
|
||
\- advanceTicks(long ticks)
|
||
\- copy()
|
||
\- toDisplayString()
|
||
\- Keep the calendar simple for now.
|
||
\- Use 30 days per month and 12 months per year unless config is added later.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 10.2 prompt — Create TimeService interface
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/services/TimeService.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- long getSimulationTick()
|
||
\- LivingWorldCalendar getCalendar()
|
||
\- void advanceSimulationTick()
|
||
\- void advanceSimulationTicks(long ticks)
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Task 10.3 prompt — Create DefaultTimeService
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/simulation/DefaultTimeService.java.
|
||
|
||
Requirements:
|
||
\- Implements TimeService.
|
||
\- Owns a LivingWorldCalendar.
|
||
\- advanceSimulationTick advances by 1\.
|
||
\- advanceSimulationTicks validates ticks \>= 0 and advances calendar.
|
||
\- getCalendar returns a copy, not the internal mutable instance.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 10 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the Living World time system.
|
||
|
||
Files:
|
||
\[PASTE LivingWorldCalendar.java, TimeService.java, DefaultTimeService.java\]
|
||
|
||
Check:
|
||
\- Time is independent of Minecraft classes.
|
||
\- Calendar cannot be mutated externally by accident.
|
||
\- Behaviour is deterministic.
|
||
\- Good enough for ecosystem simulation v1.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
|
||
71\. Milestone 11 AI Prompts — Scheduler and Simulation Manager
|
||
|
||
Task 11.1 prompt — Create UpdateReason
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/simulation/UpdateReason.java.
|
||
|
||
Requirements:
|
||
\- Enum values:
|
||
\- NORMAL\_ROLLING\_UPDATE
|
||
\- PLAYER\_NEARBY
|
||
\- HIGH\_POLLUTION
|
||
\- LOW\_SOIL\_QUALITY
|
||
\- ACTIVE\_ECOSYSTEM\_EVENT
|
||
\- FORCED\_DEBUG\_COMMAND
|
||
\- SAVE\_MIGRATION\_REQUIRED
|
||
\- Do not include settlement, road, faction, or NPC update reasons.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java enum.
|
||
|
||
Task 11.2 prompt — Create RegionUpdateJob
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/simulation/RegionUpdateJob.java.
|
||
|
||
Requirements:
|
||
\- Immutable class or record.
|
||
\- Fields:
|
||
\- RegionCoordinate coordinate
|
||
\- int priority
|
||
\- long queuedAtSimulationTick
|
||
\- Set\<String\> requestedModules
|
||
\- UpdateReason reason
|
||
\- Validate coordinate and reason are not null.
|
||
\- priority must not be negative.
|
||
\- queuedAtSimulationTick must not be negative.
|
||
\- Null requestedModules becomes empty set.
|
||
\- Add comparator for descending priority if clean.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 11.3 prompt — Create RegionPriorityCalculator
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/simulation/RegionPriorityCalculator.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Method:
|
||
\- int calculatePriority(Region region)
|
||
\- Initial ecosystem-only scoring:
|
||
\- base \= 5
|
||
\- hasPlayerActivity bonus \= 100
|
||
\- hasActiveEcosystemEvent bonus \= 75
|
||
\- hasHighPollution bonus \= 50
|
||
\- hasLowSoilQuality bonus \= 50
|
||
\- pollution bonus \= pollutionScore / 2
|
||
\- resource depletion bonus \= resourceDepletion / 3
|
||
\- recovery pressure bonus \= recoveryPressure / 4
|
||
\- Validate region is not null.
|
||
\- Result should be deterministic.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 11.4 prompt — Create SimulationScheduler
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/simulation/SimulationScheduler.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Constructor accepts SimulationConfig.
|
||
\- Fields:
|
||
\- long minecraftTickCounter
|
||
\- long simulationTickCounter
|
||
\- PriorityQueue\<RegionUpdateJob\> updateQueue
|
||
\- Methods:
|
||
\- void onMinecraftTick()
|
||
\- boolean shouldRunSimulationCycle()
|
||
\- void queueRegion(RegionUpdateJob job)
|
||
\- List\<RegionUpdateJob\> pollJobsForCycle()
|
||
\- long getMinecraftTickCounter()
|
||
\- long getSimulationTickCounter()
|
||
\- shouldRunSimulationCycle true when minecraftTickCounter reaches the configured interval.
|
||
\- pollJobsForCycle returns at most maxRegionsPerCycle jobs.
|
||
\- Higher priority jobs first.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Suggested scheduler budget tests.
|
||
|
||
Task 11.5 prompt — Create SimulationManager skeleton
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Create the first version of src/main/java/com/livingworld/core/simulation/SimulationManager.java.
|
||
|
||
This is an architecture-sensitive class. Keep it boring and coordinator-only.
|
||
|
||
Requirements:
|
||
\- Constructor dependencies:
|
||
\- SimulationScheduler scheduler
|
||
\- RegionManager regionManager
|
||
\- ModuleRegistry moduleRegistry
|
||
\- LivingWorldEventBus eventBus
|
||
\- TimeService timeService
|
||
\- PersistenceService persistenceService
|
||
\- SimulationProfiler profiler, if available. If not available, make it optional or TODO.
|
||
\- Methods:
|
||
\- void onMinecraftServerTick()
|
||
\- void runSimulationCycle()
|
||
\- void runForcedSimulationTicks(int ticks)
|
||
\- Responsibilities:
|
||
\- Advance scheduler on Minecraft tick.
|
||
\- If scheduler says cycle should run, run one cycle.
|
||
\- Poll region update jobs.
|
||
\- Resolve regions from RegionManager.
|
||
\- Run enabled modules in order.
|
||
\- Publish generated events.
|
||
\- Mark changed regions dirty.
|
||
\- Advance TimeService.
|
||
\- Do not implement ecosystem rules here.
|
||
\- Do not import Minecraft or NeoForge classes.
|
||
\- Do not scan chunks.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Any missing interface TODOs.
|
||
\- Explanation of control flow.
|
||
|
||
Milestone 11 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review scheduler and SimulationManager.
|
||
|
||
Files:
|
||
\[PASTE UpdateReason.java, RegionUpdateJob.java, RegionPriorityCalculator.java, SimulationScheduler.java, SimulationManager.java\]
|
||
|
||
Check:
|
||
\- No Minecraft imports in scheduler/manager.
|
||
\- Budgeting is respected.
|
||
\- SimulationManager contains no gameplay rules.
|
||
\- Ecosystem-only priority values are correct.
|
||
\- Forced simulation cannot accidentally lock the server forever.
|
||
\- Good enough before persistence and region manager are finished.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
\- Next safest step.
|
||
|
||
72\. Milestone 12 AI Prompts — Persistence Foundation
|
||
|
||
Task 12.1 prompt — Create PersistenceWriter
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/data/serialization/PersistenceWriter.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- void writeString(String key, String value)
|
||
\- void writeInt(String key, int value)
|
||
\- void writeLong(String key, long value)
|
||
\- void writeDouble(String key, double value)
|
||
\- void writeBoolean(String key, boolean value)
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Task 12.2 prompt — Create PersistenceReader
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/data/serialization/PersistenceReader.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- String readString(String key, String defaultValue)
|
||
\- int readInt(String key, int defaultValue)
|
||
\- long readLong(String key, long defaultValue)
|
||
\- double readDouble(String key, double defaultValue)
|
||
\- boolean readBoolean(String key, boolean defaultValue)
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Task 12.3 prompt — Create SaveMetadata
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/data/saved/SaveMetadata.java.
|
||
|
||
Requirements:
|
||
\- Immutable class or record.
|
||
\- Fields:
|
||
\- int schemaVersion
|
||
\- String modVersion
|
||
\- long createdAt
|
||
\- long updatedAt
|
||
\- Validate schemaVersion \> 0\.
|
||
\- Validate modVersion is not blank.
|
||
\- Validate updatedAt \>= createdAt.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 12.4 prompt — Create PersistenceService interface
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/core/services/PersistenceService.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- void markRegionDirty(Region region)
|
||
\- void saveDirtyRegions()
|
||
\- Optional\<Region\> loadRegion(RegionCoordinate coordinate)
|
||
\- void saveRegion(Region region)
|
||
\- void flushAll()
|
||
\- No Minecraft imports.
|
||
\- Do not implement file storage yet.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Milestone 12 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review persistence foundation.
|
||
|
||
Files:
|
||
\[PASTE PersistenceWriter.java, PersistenceReader.java, SaveMetadata.java, PersistenceService.java\]
|
||
|
||
Check:
|
||
\- Persistence interfaces are plain Java.
|
||
\- Region persistence is abstracted.
|
||
\- Save metadata is versioned.
|
||
\- No module writes files directly.
|
||
\- Good enough before JSON/NBT implementation.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
|
||
73\. Milestone 13 AI Prompts — Region Storage and Manager
|
||
|
||
Task 13.1 prompt — Create RegionStorage
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionStorage.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Constructor dependency:
|
||
\- PersistenceService persistenceService
|
||
\- Methods:
|
||
\- Optional\<Region\> load(RegionCoordinate coordinate)
|
||
\- void save(Region region)
|
||
\- load delegates to persistenceService.loadRegion.
|
||
\- save delegates to persistenceService.saveRegion.
|
||
\- Validate dependencies and arguments.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 13.2 prompt — Create RegionCache
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/cache/RegionCache.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Field:
|
||
\- Map\<RegionCoordinate, Region\> activeRegions
|
||
\- Methods:
|
||
\- Optional\<Region\> get(RegionCoordinate coordinate)
|
||
\- void put(Region region)
|
||
\- void remove(RegionCoordinate coordinate)
|
||
\- Collection\<Region\> allActive()
|
||
\- int size()
|
||
\- Validate inputs.
|
||
\- allActive should return an unmodifiable copy or safe view.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 13.3 prompt — Create RegionQueryEngine
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/query/RegionQueryEngine.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Constructor dependency:
|
||
\- RegionCache cache
|
||
\- Methods:
|
||
\- Optional\<Region\> getRegion(RegionCoordinate coordinate)
|
||
\- List\<Region\> getRegionsInRadius(RegionCoordinate center, int radius)
|
||
\- List\<Region\> getRegionsWithActiveEcosystemEvent()
|
||
\- List\<Region\> getRegionsAbovePollution(double threshold)
|
||
\- List\<Region\> getRegionsBelowSoilQuality(double threshold)
|
||
\- Do not touch Minecraft chunks.
|
||
\- Radius means region-coordinate radius.
|
||
\- Validate radius \>= 0\.
|
||
\- No settlement, road, faction, or NPC queries.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 13.4 prompt — Create RegionManager
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/regions/RegionManager.java.
|
||
|
||
This is a core architecture class. Keep it clean and plain Java.
|
||
|
||
Dependencies:
|
||
\- RegionFactory regionFactory
|
||
\- RegionStorage regionStorage
|
||
\- RegionCache regionCache
|
||
\- RegionQueryEngine queryEngine
|
||
\- RegionLifecycleController lifecycleController
|
||
\- SimulationConfig simulationConfig
|
||
|
||
Methods:
|
||
\- Region getOrCreateRegion(RegionCoordinate coordinate)
|
||
\- Optional\<Region\> findRegion(RegionCoordinate coordinate)
|
||
\- Region getOrCreateRegionAtBlock(String dimensionId, int blockX, int blockZ)
|
||
\- Collection\<Region\> getActiveRegions()
|
||
\- void markDirty(Region region)
|
||
\- void unloadRegion(RegionCoordinate coordinate)
|
||
|
||
Rules:
|
||
\- getOrCreate first checks cache.
|
||
\- If missing, try storage.
|
||
\- If storage missing, use factory.
|
||
\- New or modified regions must be marked dirty.
|
||
\- Do not import Minecraft or NeoForge classes.
|
||
\- Do not scan chunks.
|
||
\- Do not apply visible world effects.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Explanation of load/create flow.
|
||
\- Edge cases.
|
||
|
||
Milestone 13 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review RegionStorage, RegionCache, RegionQueryEngine, and RegionManager.
|
||
|
||
Files:
|
||
\[PASTE FILES\]
|
||
|
||
Check:
|
||
\- RegionManager load/create flow is correct.
|
||
\- No duplicate region instances are likely.
|
||
\- No Minecraft imports.
|
||
\- Queries are ecosystem-focused.
|
||
\- Dirty handling is sensible.
|
||
\- Region lifecycle transitions are not abused.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
\- Tests to add.
|
||
|
||
74\. Milestone 14 AI Prompts — Debug Commands
|
||
|
||
Task 14.1 prompt — Create command root
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/commands/LivingWorldCommandRoot.java for a NeoForge Minecraft mod.
|
||
|
||
This file is allowed to use Minecraft/NeoForge command classes because it is in the commands boundary.
|
||
|
||
Requirements:
|
||
\- Register /lw command tree.
|
||
\- Initial subcommands:
|
||
\- /lw status
|
||
\- /lw region info
|
||
\- /lw modules list
|
||
\- /lw simulate \<ticks\>
|
||
\- If exact NeoForge command registration API is uncertain, create a clean skeleton with TODO comments at API-specific points.
|
||
\- Command implementation should delegate to service classes where possible.
|
||
\- Do not place ecosystem simulation rules inside command classes.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Notes about API assumptions.
|
||
|
||
Task 14.2 prompt — Create RegionInfoCommand
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/commands/RegionInfoCommand.java.
|
||
|
||
This class may use Minecraft command/source classes if necessary, but region logic must stay in RegionManager.
|
||
|
||
Output should include:
|
||
\- Region coordinate
|
||
\- Lifecycle state
|
||
\- Dirty state
|
||
\- Ecosystem metrics
|
||
\- Flags
|
||
\- Module IDs present
|
||
|
||
Requirements:
|
||
\- Use RegionManager to get region data.
|
||
\- Use coordinate mapper or boundary conversion instead of putting Minecraft classes into RegionCoordinate.
|
||
\- Do not reference settlements, factions, NPCs, roads, or economy.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- API assumptions.
|
||
|
||
Task 14.3 prompt — Create SimulateCommand
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/commands/SimulateCommand.java.
|
||
|
||
Requirements:
|
||
\- Operator-only command.
|
||
\- Accept tick count.
|
||
\- Safe maximum default: 1000 ticks.
|
||
\- Calls SimulationManager.runForcedSimulationTicks(ticks).
|
||
\- Rejects negative or zero ticks.
|
||
\- Prints clear success/failure output.
|
||
\- Does not implement simulation rules itself.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
\- Notes on NeoForge/Minecraft command API assumptions.
|
||
|
||
Milestone 14 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review command implementation.
|
||
|
||
Files:
|
||
\[PASTE LivingWorldCommandRoot.java, RegionInfoCommand.java, SimulateCommand.java\]
|
||
|
||
Check:
|
||
\- Minecraft/NeoForge imports are limited to command boundary.
|
||
\- Commands delegate to services.
|
||
\- /lw simulate has safety limits.
|
||
\- Output is useful for debugging ecosystem state.
|
||
\- No gameplay logic hidden in commands.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
|
||
75\. Milestone 15 AI Prompts — Profiling
|
||
|
||
Task 15.1 prompt — Create SimulationProfiler
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/debug/SimulationProfiler.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Tracks:
|
||
\- cycle start time
|
||
\- cycle end time
|
||
\- per-module timings
|
||
\- per-region timings if simple
|
||
\- event count
|
||
\- save count
|
||
\- budget overruns
|
||
\- Methods:
|
||
\- beginCycle()
|
||
\- endCycle()
|
||
\- beginModule(String moduleId)
|
||
\- endModule(String moduleId)
|
||
\- recordEvent()
|
||
\- recordSave()
|
||
\- recordBudgetOverrun()
|
||
\- SimulationProfileSnapshot createSnapshot()
|
||
\- Use System.nanoTime internally for timing.
|
||
\- Do not use System.out.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 15.2 prompt — Create SimulationProfileSnapshot
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/debug/SimulationProfileSnapshot.java.
|
||
|
||
Requirements:
|
||
\- Immutable class or record.
|
||
\- Fields:
|
||
\- long totalCycleNanos
|
||
\- Map\<String, Long\> moduleTimings
|
||
\- int eventsPublished
|
||
\- int regionsUpdated
|
||
\- int savesPerformed
|
||
\- boolean budgetExceeded
|
||
\- Add method toHumanReadableString().
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Milestone 15 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review simulation profiling classes.
|
||
|
||
Files:
|
||
\[PASTE SimulationProfiler.java and SimulationProfileSnapshot.java\]
|
||
|
||
Check:
|
||
\- Profiler can measure module cost.
|
||
\- Snapshot is immutable or safely copied.
|
||
\- No server-spam logging built in.
|
||
\- Usable by debug commands later.
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
|
||
76\. Milestone 16 AI Prompts — Tests and Long-Run Validation
|
||
|
||
Task 16.1 prompt — Create TestSimulationModule
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/testing/TestSimulationModule.java.
|
||
|
||
Requirements:
|
||
\- Implements SimulationModule.
|
||
\- Module ID: test
|
||
\- Metadata display name: Test Simulation Module
|
||
\- On initialize, set initialized \= true.
|
||
\- On updateRegion, increment an internal update counter.
|
||
\- Every 10 updates, return ModuleUpdateResult.changed().
|
||
\- Otherwise return ModuleUpdateResult.noChange().
|
||
\- No Minecraft imports.
|
||
\- This is for engine testing only, not gameplay.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Task 16.2 prompt — Create RegionCoordinateTest
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/test/java/com/livingworld/regions/RegionCoordinateTest.java.
|
||
|
||
Tests:
|
||
\- block 0,0 maps to region 0,0
|
||
\- block 127,127 maps to region 0,0 with region size 8 chunks
|
||
\- block 128,0 maps to region 1,0
|
||
\- block \-1,0 maps to region \-1,0
|
||
\- block \-128,0 maps to region \-1,0
|
||
\- block \-129,0 maps to region \-2,0
|
||
\- stableId remains stable
|
||
\- RegionCoordinate works as HashMap key
|
||
|
||
Use the project’s test framework. If unknown, assume JUnit 5\.
|
||
|
||
Output:
|
||
\- Full test file.
|
||
|
||
Task 16.3 prompt — Create RegionLifecycleControllerTest
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/test/java/com/livingworld/regions/RegionLifecycleControllerTest.java.
|
||
|
||
Tests:
|
||
\- Allowed transitions succeed.
|
||
\- Invalid transitions throw IllegalStateException.
|
||
\- FAILED can transition to LOADING.
|
||
\- ACTIVE cannot transition directly to SAVING.
|
||
|
||
Use JUnit 5 unless project uses something else.
|
||
|
||
Output:
|
||
\- Full test file.
|
||
|
||
Task 16.4 prompt — Create SchedulerBudgetTest
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/test/java/com/livingworld/core/simulation/SchedulerBudgetTest.java.
|
||
|
||
Tests:
|
||
\- Given 500 jobs and maxRegionsPerCycle 50, one cycle returns 50 jobs.
|
||
\- Higher priority jobs are returned first.
|
||
\- Jobs not processed remain queued.
|
||
\- shouldRunSimulationCycle respects simulationIntervalTicks.
|
||
|
||
Use JUnit 5 unless project uses something else.
|
||
|
||
Output:
|
||
\- Full test file.
|
||
|
||
Task 16.5 prompt — Create EventBusTest
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/test/java/com/livingworld/events/EventBusTest.java.
|
||
|
||
Tests:
|
||
\- Listener receives event.
|
||
\- Listener receives event once.
|
||
\- Multiple listeners receive the event.
|
||
\- Unknown event type does not crash.
|
||
|
||
Use BaseLivingWorldEvent for test events.
|
||
Use JUnit 5 unless project uses something else.
|
||
|
||
Output:
|
||
\- Full test file.
|
||
|
||
Task 16.6 prompt — Create LongRunSimulationTest
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Create src/test/java/com/livingworld/testing/LongRunSimulationTest.java.
|
||
|
||
Purpose:
|
||
Prove the foundation can run for a long time without collapsing.
|
||
|
||
Test setup:
|
||
\- Create 1000 fake regions.
|
||
\- Register TestSimulationModule.
|
||
\- Run 100,000 simulation ticks or a reduced count if local test runtime is too high.
|
||
\- Save dirty regions periodically using a fake/in-memory PersistenceService.
|
||
|
||
Pass conditions:
|
||
\- No crash.
|
||
\- No unhandled exception.
|
||
\- No invalid lifecycle transition.
|
||
\- Dirty region count does not grow forever.
|
||
\- Profiler reports cycle data.
|
||
|
||
Requirements:
|
||
\- Keep it plain Java where possible.
|
||
\- Do not require a full Minecraft client.
|
||
\- If full implementation requires missing services, create small in-memory fakes inside the test.
|
||
|
||
Output:
|
||
\- Full test file.
|
||
\- Explanation of any fake services.
|
||
|
||
Milestone 16 review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the engine test suite.
|
||
|
||
Files:
|
||
\[PASTE all test files and TestSimulationModule.java\]
|
||
|
||
Check:
|
||
\- Tests cover foundation risks.
|
||
\- Tests do not require Minecraft client unless absolutely necessary.
|
||
\- Long-run test is realistic for local hardware.
|
||
\- Tests catch coordinate, lifecycle, scheduler, event, and simulation failures.
|
||
\- No NPC/settlement/faction/wildlife scope creep.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Missing tests.
|
||
\- Recommended final fixes before Volume 2\.
|
||
|
||
77\. Platform Adapter AI Prompts
|
||
|
||
Task P1 prompt — Create PlatformAdapter interface
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/platform/PlatformAdapter.java.
|
||
|
||
Requirements:
|
||
\- Interface.
|
||
\- Methods:
|
||
\- String getPlatformName()
|
||
\- String getMinecraftVersion()
|
||
\- String getLoaderVersion()
|
||
\- boolean isDedicatedServer()
|
||
\- Path getWorldSaveDirectory()
|
||
\- void registerCommands()
|
||
\- void registerServerTickHook()
|
||
\- void registerPlayerEventHooks()
|
||
\- Import java.nio.file.Path only.
|
||
\- No NeoForge imports here.
|
||
|
||
Output:
|
||
\- Full Java interface.
|
||
|
||
Task P2 prompt — Create NeoForgePlatformAdapter skeleton
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/platform/neoforge/NeoForgePlatformAdapter.java.
|
||
|
||
Purpose:
|
||
Implement PlatformAdapter using NeoForge as the active loader.
|
||
|
||
Rules:
|
||
\- This class may import NeoForge and Minecraft classes.
|
||
\- Core simulation classes must not import NeoForge or Minecraft classes.
|
||
\- If exact NeoForge API names are uncertain for the target version, add clear TODOs at those points instead of inventing unsafe code.
|
||
\- Must log platform name, Minecraft version, and loader version during bootstrap.
|
||
\- Must provide hooks that can forward server ticks to SimulationManager later.
|
||
|
||
Output:
|
||
\- Full Java file or safe skeleton.
|
||
\- API assumptions.
|
||
\- TODOs requiring verification.
|
||
|
||
Task P3 prompt — Create MinecraftCoordinateMapper
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapper.java.
|
||
|
||
Requirements:
|
||
\- Boundary class for converting Minecraft coordinates into Living World coordinates.
|
||
\- For now, avoid importing Minecraft classes unless necessary.
|
||
\- Methods:
|
||
\- RegionCoordinate fromBlockPos(String dimensionId, int blockX, int blockZ, int regionSizeChunks)
|
||
\- RegionCoordinate fromChunkPos(String dimensionId, int chunkX, int chunkZ, int regionSizeChunks)
|
||
\- Delegate to RegionCoordinate.fromBlock and RegionCoordinate.fromChunk.
|
||
\- No gameplay logic.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Platform review prompt
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Review the platform adapter layer.
|
||
|
||
Files:
|
||
\[PASTE PlatformAdapter.java, NeoForgePlatformAdapter.java, MinecraftCoordinateMapper.java\]
|
||
|
||
Check:
|
||
\- NeoForge imports are isolated to platform/neoforge or command boundary.
|
||
\- Core simulation remains plain Java.
|
||
\- Platform API is not too wide.
|
||
\- Version reporting is possible.
|
||
\- Server tick hook can eventually call SimulationManager.
|
||
|
||
Output:
|
||
\- Pass/fail.
|
||
\- Fixes.
|
||
\- Any NeoForge API calls that need checking against current docs.
|
||
|
||
78\. Ecosystem MVP AI Prompts — To Use After Volume 1 Passes
|
||
|
||
Do not use these until the Volume 1 completion gate passes.
|
||
|
||
Ecosystem MVP prompt 1 — Create EcosystemRegionData
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/ecosystem/EcosystemRegionData.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- double ecosystemHealth
|
||
\- double stress
|
||
\- double resilience
|
||
\- double recoveryRate
|
||
\- Values clamped 0 to 100\.
|
||
\- Methods:
|
||
\- defaults()
|
||
\- normalize()
|
||
\- copy()
|
||
\- applyStress(double amount)
|
||
\- applyRecovery(double amount)
|
||
\- No Minecraft imports.
|
||
\- No wildlife, NPC, village, faction, or economy logic.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Ecosystem MVP prompt 2 — Create SoilRegionData
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/soil/SoilRegionData.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- double fertility
|
||
\- double moisture
|
||
\- double contamination
|
||
\- double compaction
|
||
\- double erosion
|
||
\- Values clamped 0 to 100\.
|
||
\- Methods:
|
||
\- defaults()
|
||
\- normalize()
|
||
\- copy()
|
||
\- degrade(double amount)
|
||
\- recover(double amount)
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Ecosystem MVP prompt 3 — Create PollutionRegionData
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/pollution/PollutionRegionData.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- double airPollution
|
||
\- double groundPollution
|
||
\- double waterPollution
|
||
\- double decayResistance
|
||
\- Values clamped 0 to 100\.
|
||
\- Methods:
|
||
\- defaults()
|
||
\- normalize()
|
||
\- copy()
|
||
\- addPollution(double air, double ground, double water)
|
||
\- decay(double amount)
|
||
\- No Minecraft imports.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Ecosystem MVP prompt 4 — Create VegetationRegionData
|
||
|
||
MODEL: Qwen3.5-9B
|
||
|
||
PROMPT:
|
||
Create src/main/java/com/livingworld/modules/vegetation/VegetationRegionData.java.
|
||
|
||
Requirements:
|
||
\- Plain Java class.
|
||
\- Fields:
|
||
\- double grassPressure
|
||
\- double flowerPressure
|
||
\- double shrubPressure
|
||
\- double treePressure
|
||
\- double deadVegetation
|
||
\- Values clamped 0 to 100\.
|
||
\- Methods:
|
||
\- defaults()
|
||
\- normalize()
|
||
\- copy()
|
||
\- reduceFromLogging(double amount)
|
||
\- recover(double amount)
|
||
\- No Minecraft imports.
|
||
\- Do not simulate animal populations.
|
||
|
||
Output:
|
||
\- Full Java file.
|
||
|
||
Ecosystem MVP prompt 5 — Create simple ecosystem update formulas
|
||
|
||
MODEL: Qwen3.6-27B
|
||
|
||
PROMPT:
|
||
Design the first simple ecosystem update formulas for the Living World mod.
|
||
|
||
Scope:
|
||
\- Ecosystem-only.
|
||
\- No animals.
|
||
\- No villagers.
|
||
\- No settlements.
|
||
\- No factions.
|
||
|
||
Inputs per region:
|
||
\- ecosystemHealth
|
||
\- soil fertility
|
||
\- soil moisture
|
||
\- soil contamination
|
||
\- water quality
|
||
\- air/ground/water pollution
|
||
\- vegetation pressure
|
||
\- resource depletion
|
||
\- recovery pressure
|
||
|
||
Output required:
|
||
1\. Simple formulas for one simulation tick.
|
||
2\. Pseudocode for update order.
|
||
3\. Edge cases.
|
||
4\. Values that should be configurable.
|
||
5\. Safety caps so values stay between 0 and 100\.
|
||
6\. Explanation simple enough to turn into Java classes.
|
||
|
||
Do not write Minecraft block-changing code yet.
|
||
|
||
79\. Daily Local AI Working Method
|
||
|
||
Use this method every coding session.
|
||
|
||
Step 1:
|
||
Use Qwen3.6-27B for planning the next 3 to 5 tiny tasks.
|
||
|
||
Prompt:
|
||
MODEL: Qwen3.6-27B
|
||
|
||
Given the current Living World project state below, choose the next 3 to 5 safest tasks.
|
||
|
||
Current state:
|
||
\[PASTE WHAT EXISTS\]
|
||
|
||
Rules:
|
||
\- Ecosystem-only mod.
|
||
\- No NPCs, factions, settlements, roads, or wildlife simulation.
|
||
\- Core simulation remains plain Java.
|
||
\- Minecraft/NeoForge imports stay in platform, integration, or command packages.
|
||
\- Each task must be completable by Qwen3.5-9B in one file or one test file.
|
||
|
||
Output:
|
||
For each task give:
|
||
\- task name
|
||
\- target model
|
||
\- file path
|
||
\- exact prompt to give Qwen3.5-9B
|
||
\- tests required
|
||
\- definition of done
|
||
|
||
Step 2:
|
||
Give one task at a time to Qwen3.5-9B.
|
||
|
||
Step 3:
|
||
Run build/tests.
|
||
|
||
Step 4:
|
||
If build fails, give the exact error to Qwen3.5-9B once.
|
||
|
||
Repair prompt:
|
||
MODEL: Qwen3.5-9B
|
||
|
||
The previous code failed to compile.
|
||
|
||
Error:
|
||
\[PASTE ERROR\]
|
||
|
||
Relevant files:
|
||
\[PASTE FILES\]
|
||
|
||
Fix only the error.
|
||
Do not rewrite unrelated code.
|
||
Do not add new systems.
|
||
Return the corrected file only.
|
||
|
||
Step 5:
|
||
If the second 9B attempt fails, escalate to Qwen3.6-27B.
|
||
|
||
Escalation prompt:
|
||
MODEL: Qwen3.6-27B
|
||
|
||
Qwen3.5-9B failed twice to fix this issue.
|
||
|
||
Goal:
|
||
\[PASTE TASK GOAL\]
|
||
|
||
Error:
|
||
\[PASTE ERROR\]
|
||
|
||
Files:
|
||
\[PASTE RELEVANT FILES\]
|
||
|
||
Find the root cause and provide the smallest safe fix.
|
||
Do not redesign the system unless the design is the root cause.
|
||
Do not add unrelated features.
|
||
|
||
Output:
|
||
\- root cause
|
||
\- corrected code
|
||
\- why the fix works
|
||
\- any follow-up test needed
|
||
|
||
Step 6:
|
||
After every successful task, ask Qwen3.6-27B to review the milestone when enough files exist.
|
||
|
||
80\. Prompt Discipline Rules
|
||
|
||
These rules are mandatory when working with local AI.
|
||
|
||
Rule 1:
|
||
Never ask a 9B model to build a whole subsystem.
|
||
|
||
Rule 2:
|
||
Never give vague prompts such as "make the ecosystem" or "fix the mod".
|
||
|
||
Rule 3:
|
||
Always include the file path.
|
||
|
||
Rule 4:
|
||
Always include the class name.
|
||
|
||
Rule 5:
|
||
Always state whether Minecraft or NeoForge imports are allowed.
|
||
|
||
Rule 6:
|
||
Always state what is out of scope.
|
||
|
||
Rule 7:
|
||
Always ask for tests when the code is plain Java.
|
||
|
||
Rule 8:
|
||
Always run tests before moving on.
|
||
|
||
Rule 9:
|
||
After two failed repair attempts by Qwen3.5-9B, escalate to Qwen3.6-27B.
|
||
|
||
Rule 10:
|
||
If Qwen3.6-27B says the task is too broad, split it into smaller files.
|
||
|
||
81\. Local Model Role Summary
|
||
|
||
Qwen3.5-9B role:
|
||
\- one class
|
||
\- one enum
|
||
\- one record
|
||
\- one interface
|
||
\- one test file
|
||
\- simple bug fix
|
||
\- simple refactor
|
||
\- simple documentation
|
||
|
||
Qwen3.6-27B role:
|
||
\- architecture review
|
||
\- multi-file debugging
|
||
\- NeoForge uncertainty
|
||
\- save design
|
||
\- scheduler design
|
||
\- module boundary review
|
||
\- version upgrade review
|
||
\- difficult compile errors
|
||
\- planning next batches
|
||
|
||
Do not swap these roles unless necessary. |