skills/create-simulated-aeronautics-mod/SKILL.md
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.
npx skillsauth add aradotso/trending-skills create-simulated-aeronautics-modInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Skill by ara.so — Daily 2026 Skills collection.
The Simulated Project is a suite of NeoForge Minecraft mods that extend the 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, a custom rigid-body physics engine built for Minecraft contraptions.
mods/ folder alongside dependenciesUse Modrinth App or Prism Launcher for dependency resolution.
git clone https://github.com/Creators-of-Aeronautics/Simulated-Project.git
cd Simulated-Project
./gradlew build
# Start a development client
./gradlew runClient
# Start a development server
./gradlew runServer
# Generate IDE run configurations (IntelliJ)
./gradlew genIntellijRuns
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
Unlike vanilla Create contraptions (which move block-by-block along tracks), Simulated contraptions are assembled into physics objects with:
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.
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)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);
}
}
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);
}
}
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
)
);
}
}
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());
}
}
Propellers are directional. Place them facing the direction you want thrust:
// 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);
}
}
Wheels simulate suspension travel. Stiffer suspensions use more rigid Create structural blocks near the wheel mounts.
Connect Create's Rotation Speed Controller to front wheels to implement steering differentials.
Config files generate in config/ on first run:
# 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
The project uses Crowdin for community translations.
// 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!"
}
@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);
}
@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
}
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);
}
}
| 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 |
build.gradledependencies {
// 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}"
}
development
```markdown --- name: compose-performance-skills description: Install and use the skydoves/compose-performance-skills agent skill library to diagnose and fix Jetpack Compose performance issues including stability, recomposition, lazy layouts, modifiers, side effects, and build configuration. triggers: - "my composable recomposes too often" - "LazyColumn drops frames during scroll" - "diagnose Compose stability issues" - "fix unnecessary recomposition in Jetpack Compose" - "optimize Com
development
Headless iOS Simulator manager with host-side HID input injection, 60fps streaming, and device farm web UI for iOS 26
development
```markdown --- name: claude-code-game-studios description: Turn Claude Code into a full 49-agent game dev studio with 72 workflow skills, automated hooks, and a real studio hierarchy for Godot, Unity, and Unreal projects. triggers: - "set up claude code game studios" - "use ai agents for game development" - "set up game dev studio with claude" - "add game studio agents to my project" - "how do I use claude code for game dev" - "set up godot unity unreal ai workflow" - "49 agents g
development
```markdown --- name: xq-py-quantum-vm description: Python implementation of the Quip Network's quantum virtual machine (xqvm) triggers: - quantum virtual machine python - xqvm quip network - quantum circuit simulation python - xq-py quantum vm - quip network quantum python - simulate quantum gates python - quantum vm xqvm - xqvm-py quantum circuit --- # xq-py Quantum Virtual Machine > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. `xqvm-py` is a Python impl