Skip to main content

create-simulated-aeronautics-mod

Expertise in the Create Simulated Project — a NeoForge Minecraft mod suite adding physics-based contraptions including planes, airships, cars, and land vehicles built on the Create mod framework.

Ir para a instalação

Informações da origem

Repositório
reason-machines/trending-skills
Última atividade na origem
20 de abril de 2026 às 05:57
Idioma detectado do SKILL.md
inglês
Estrelas
82
Forks
15

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
create-simulated-aeronautics-mod
description
Expertise in the Create Simulated Project — a NeoForge Minecraft mod suite adding physics-based contraptions including planes, airships, cars, and land vehicles built on the Create mod framework.
triggers
["add physics contraptions to my minecraft mod","create aeronautics neoforge mod","build a flying machine with create simulated","how to use create simulated project","physics based vehicles in minecraft java","assemble a plane or airship in create mod","create offroad land vehicle mod","propeller hot air balloon create aeronautics"]
# Create Simulated Project (Aeronautics) > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. ## What Is This Project? The Simulated Project is a suite of NeoForge Minecraft mods that extend the [Create](https://github.com/Creators-of-Create/Create) mod with real-time physics-based contraptions. It consists of three interconnected mods: | Mod | Purpose | |-----|---------| | **Create Simulated** | Core assembly system, redstone components, physics interaction API | | **Create Aeronautics** | Flying contraptions — propellers, hot air, levitation rocks | | **Create Offroad** | Land vehicles — wheels, suspension, terrain traversal | Physics simulation is powered by [Sable](https://github.com/ryanhcode/sable), a custom rigid-body physics engine built for Minecraft contraptions. --- ## Installation (Player/Server) ### Modrinth (Recommended) 1. Download from [modrinth.com/project/create-aeronautics](https://modrinth.com/modrinth/project/create-aeronautics) 2. Place the JAR(s) in your `mods/` folder alongside dependencies ### Required Dependencies - **NeoForge** (matching the mod's target Minecraft version) - **Create** mod (matching version) - **Sable** physics library ### Recommended Launcher Use [Modrinth App](https://modrinth.com/app) or [Prism Launcher](https://prismlauncher.org/) for dependency resolution. --- ## Developer Setup (Building from Source) ### Clone & Build ```bash git clone https://github.com/Creators-of-Aeronautics/Simulated-Project.git cd Simulated-Project ./gradlew build ``` ### Run in Dev Environment ```bash # Start a development client ./gradlew runClient # Start a development server ./gradlew runServer # Generate IDE run configurations (IntelliJ) ./gradlew genIntellijRuns ``` ### Project Structure ``` Simulated-Project/ ├── simulated/ # Core mod — assembly, physics API ├── aeronautics/ # Flying contraptions submod ├── offroad/ # Land vehicle submod ├── common/ # Shared utilities across submods └── build.gradle # Multi-project Gradle build ``` --- ## Core Concepts ### 1. Simulated Contraptions Unlike vanilla Create contraptions (which move block-by-block along tracks), Simulated contraptions are assembled into physics objects with: - **Mass** derived from block composition - **Moment of inertia** for rotation - **Forces** applied by thrusters, propellers, wheels ### 2. Assembly Players assemble a contraption using a designated assembly block (similar to Create's mechanical bearing). Once assembled, the structure becomes a rigid physics body managed by Sable. ### 3. Force Providers Blocks that apply forces to assembled contraptions: - `PropellerBlock` — directional thrust (Aeronautics) - `HotAirBlock` — upward buoyancy (Aeronautics) - `LevitationRockBlock` — magical lift (Aeronautics) - `WheelBlock` — ground traction and propulsion (Offroad) --- ## Key API — Create Simulated Core ### Registering a Custom Force Provider ```java import com.simulated.api.force.IForceProvider; import com.simulated.api.contraption.SimulatedContraption; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import org.joml.Vector3f; public class MyThrusterBlock extends Block implements IForceProvider { public MyThrusterBlock(Properties properties) { super(properties); } @Override public Vector3f getForce(SimulatedContraption contraption, BlockPos localPos, Level level) { // Return force vector in world space (Newtons equivalent) // Positive Y = upward lift, positive Z = forward thrust float thrustMagnitude = 500.0f; return new Vector3f(0, 0, thrustMagnitude); } @Override public Vector3f getTorque(SimulatedContraption contraption, BlockPos localPos, Level level) { // Torque applied around center of mass (optional) return new Vector3f(0, 0, 0); } } ``` ### Registering Your Block with NeoForge ```java import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredRegister; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.level.block.Block; import net.neoforged.neoforge.registries.DeferredHolder; public class MyModBlocks { public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(BuiltInRegistries.BLOCK, "mymod"); public static final DeferredHolder<Block, MyThrusterBlock> MY_THRUSTER = BLOCKS.register("my_thruster", () -> new MyThrusterBlock( Block.Properties.of().strength(2.0f) )); public static void register(IEventBus eventBus) { BLOCKS.register(eventBus); } } ``` ### Accessing a SimulatedContraption at Runtime ```java import com.simulated.api.contraption.SimulatedContraption; import com.simulated.api.contraption.SimulatedContraptionHandler; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; public class ContraptionUtils { /** * Get the simulated contraption an entity is riding, if any. */ public static SimulatedContraption getRiddenContraption(Entity entity) { return SimulatedContraptionHandler.getContraptionForEntity(entity); } /** * Apply an impulse to a contraption's physics body directly. */ public static void applyImpulse(SimulatedContraption contraption, Vec3 impulse) { contraption.getPhysicsBody().applyImpulse( new org.joml.Vector3f( (float) impulse.x, (float) impulse.y, (float) impulse.z ) ); } } ``` ### Listening to Contraption Assembly Events ```java import com.simulated.api.event.ContraptionAssembleEvent; import com.simulated.api.event.ContraptionDisassembleEvent; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @EventBusSubscriber(modid = "mymod") public class ContraptionEventHandler { @SubscribeEvent public static void onAssemble(ContraptionAssembleEvent event) { SimulatedContraption contraption = event.getContraption(); // e.g., calculate custom mass modifier float customMass = contraption.getMass() * 0.8f; contraption.setMassOverride(customMass); System.out.println("Contraption assembled with " + contraption.getBlocks().size() + " blocks."); } @SubscribeEvent public static void onDisassemble(ContraptionDisassembleEvent event) { // Cleanup any custom data attached to this contraption MyContraptionData.remove(event.getContraption().getId()); } } ``` --- ## Aeronautics — Flight Mechanics ### Propeller Configuration (In-Game) Propellers are directional. Place them facing the direction you want thrust: - **Facing down** → upward lift - **Facing back** → forward thrust - Speed (RPM) fed by Create's rotational network controls thrust magnitude ### Hot Air Balloon 1. Place **Balloon Canvas** blocks in a dome shape above a heat source 2. Connect a **Blaze Burner** below the opening 3. Assemble — the trapped hot air provides buoyancy proportional to enclosed volume ### Levitation Rock - Rare ore providing passive vertical lift - Useful for lighter-than-air vessels needing no fuel ### Flight Control Pattern ```java // Example: Redstone-controlled pitch adjustment via a custom block entity public class FlightControllerBlockEntity extends BlockEntity { public FlightControllerBlockEntity(BlockPos pos, BlockState state) { super(MyModBlockEntities.FLIGHT_CONTROLLER.get(), pos, state); } public void applyPitchInput(SimulatedContraption contraption, float pitchDelta) { // Torque around the X-axis to pitch the vehicle org.joml.Vector3f torque = new org.joml.Vector3f(pitchDelta * 100f, 0, 0); contraption.getPhysicsBody().applyTorqueImpulse(torque); } } ``` --- ## Offroad — Land Vehicles ### Wheel Setup 1. Place **Wheel blocks** at the four corners of your vehicle chassis 2. Each wheel needs rotational input from Create's shaft network 3. Assemble the contraption — wheels automatically detect ground contact ### Suspension Wheels simulate suspension travel. Stiffer suspensions use more rigid Create structural blocks near the wheel mounts. ### Steering Connect Create's **Rotation Speed Controller** to front wheels to implement steering differentials. --- ## Configuration Config files generate in `config/` on first run: ```toml # simulated-common.toml [physics] # Physics simulation tick rate (ticks per second, default 20) simulationRate = 20 # Maximum contraption block count before performance warnings maxContraptionSize = 2048 # Enable contraption–contraption collision contraptionCollision = true [aeronautics] # Propeller force multiplier propellerForceScale = 1.0 # Hot air buoyancy multiplier hotAirBuoyancyScale = 1.0 [offroad] # Wheel traction coefficient wheelTraction = 0.85 # Maximum vehicle speed (blocks/second) maxVehicleSpeed = 40.0 ``` --- ## Localization / Translations The project uses [Crowdin](https://crowdin.com/project/create-aeronautics) for community translations. ### Adding a New Language 1. Join the Crowdin project 2. Translate strings in the web UI 3. Translations are automatically pulled into the repo ### Adding Keys Programmatically ```java // In your lang JSON: src/main/resources/assets/mymod/lang/en_us.json { "block.mymod.my_thruster": "Hyperdrive Thruster", "block.mymod.my_thruster.tooltip": "Applies directional thrust to assembled contraptions.", "mymod.contraption.overloaded": "Contraption mass exceeds safe limits!" } ``` --- ## Common Patterns ### Pattern 1: Fuel-Gated Thrust ```java @Override public Vector3f getForce(SimulatedContraption contraption, BlockPos localPos, Level level) { // Only provide thrust if a fuel item is present in an adjacent chest BlockEntity adjacent = level.getBlockEntity(localPos.above()); if (adjacent instanceof net.minecraft.world.level.block.entity.ChestBlockEntity chest) { boolean hasFuel = !chest.isEmpty(); // simplified check if (hasFuel) { return new Vector3f(0, 0, 800.0f); } } return new Vector3f(0, 0, 0); } ``` ### Pattern 2: Speed-Based Thrust Scaling ```java @Override public Vector3f getForce(SimulatedContraption contraption, BlockPos localPos, Level level) { // Scale thrust with Create rotational speed at this block's position float rpm = contraption.getRotationalSpeedAt(localPos); float thrust = rpm * 2.5f; // tune this constant for your use case return new Vector3f(0, 0, Math.min(thrust, 2000.0f)); // cap at max } ``` ### Pattern 3: Custom Physics Data per Contraption ```java import java.util.HashMap; import java.util.Map; import java.util.UUID; public class MyContraptionData { private static final Map<UUID, Float> fuelLevels = new HashMap<>(); public static float getFuel(UUID contraptionId) { return fuelLevels.getOrDefault(contraptionId, 100.0f); } public static void consumeFuel(UUID contraptionId, float amount) { float current = getFuel(contraptionId); fuelLevels.put(contraptionId, Math.max(0, current - amount)); } public static void remove(UUID contraptionId) { fuelLevels.remove(contraptionId); } } ``` --- ## Troubleshooting | Symptom | Likely Cause | Fix | |---------|-------------|-----| | Contraption won't assemble | Missing dependency mod (Create, Sable) | Verify all deps in `mods/` | | Vehicle sinks through floor | Wheel blocks not receiving rotation | Check shaft connections | | Extreme jitter / vibration | Too many conflicting force providers | Balance thrust/lift forces; reduce `propellerForceScale` in config | | Crash on assembly | Block count exceeds `maxContraptionSize` | Increase limit in config or reduce vehicle size | | Translations not showing | Wrong lang file path | Ensure `assets/<modid>/lang/en_us.json` path is correct | | Physics desync on multiplayer | High server TPS drop | Lower `simulationRate` or reduce contraption count | | `ClassNotFoundException` on IForceProvider | API jar not in classpath | Add `simulated-api` to `build.gradle` dependencies | ### Dependency Setup in `build.gradle` ```groovy dependencies { // NeoForge implementation "net.neoforged:neoforge:${neoforge_version}" // Create mod (via cursemaven or modrinth maven) implementation fg.deobf("com.simibubi.create:create-${minecraft_version}:${create_version}:slim") { transitive = false } // Create Simulated API (once published to maven) implementation "com.aeronautics:simulated-api:${simulated_version}" } ``` --- ## Community & Support - **Discord**: [discord.gg/createaeronautics](https://discord.gg/createaeronautics) - **Issue Tracker**: [GitHub Issues](https://github.com/Creators-of-Aeronautics/Simulated-Project/issues) (233 open) - **Modrinth**: [modrinth.com/project/create-aeronautics](https://modrinth.com/project/create-aeronautics) - **Crowdin Translations**: [crowdin.com/project/create-aeronautics](https://crowdin.com/project/create-aeronautics)
Ver no GitHub