Docs · For mod authors · Format 1Doku · Für Mod-Autoren · Format 1

Parts format (JSON)Teile-Format (JSON)

Every drone part can be a JSON file in an add-on, exactly like Propwash’s own parts. This page lists every field Propwash 0.5.2 reads.

Jedes Drohnenteil kann eine JSON-Datei in einem Add-on sein, genau wie Propwashs eigene Teile. Diese Seite nennt jedes Feld, das Propwash 0.5.2 liest.

Propwash 0.5.2 · Minecraft 26.3 · Fabric & NeoForge · API 1.6.0 · protocolProtokoll 16

Files and loadingDateien und Laden

PathPfad
src/main/resources/data/<namespace>/propwash_parts/<category>/<path>.json
  • Categories are the folder names: frame, stack, motor, prop, video, battery, accessory, chemistry. Sub-folders and other folder names are errors.Kategorien sind die Ordnernamen: frame, stack, motor, prop, video, battery, accessory, chemistry. Unterordner und andere Ordnernamen sind Fehler.
  • The id is <namespace>:<file name without .json>; the path may only contain [a-z0-9_.-] and must be unique across all categories.Die Id ist <namensraum>:<dateiname ohne .json>; der Pfad darf nur [a-z0-9_.-] enthalten und muss über alle Kategorien eindeutig sein.
  • Files are loaded only by PropwashApi.parts().loadBundled(modId) from the add-on’s own jar, in the order chemistry → frame → stack → motor → prop → video → battery → accessory, alphabetically within a folder. Not from world data packs, no /reload.Geladen werden die Dateien nur von PropwashApi.parts().loadBundled(modId) aus dem eigenen Jar des Add-ons, in der Reihenfolge chemistry → frame → stack → motor → prop → video → battery → accessory, innerhalb eines Ordners alphabetisch. Nicht aus Welt-Datenpaketen, kein /reload.
  • Propwash’s own 38 built-in parts and chemistries are files in exactly this format.Propwashs eigene 38 eingebaute Teile und Zellchemien sind Dateien in genau diesem Format.

ConventionsKonventionen

  • Ids without a namespace ("m22", "lipo") mean propwash:…. Always write other namespaces in full.Ids ohne Namensraum ("m22", "lipo") meinen propwash:…. Andere Namensräume immer voll schreiben.
  • Numbers are JSON numbers; integers must not have decimals ("kv": 1750, not 1750.5).Zahlen sind JSON-Zahlen; ganze Zahlen dürfen keine Nachkommastellen haben ("kv": 1750, nicht 1750.5).
  • [min, max] ranges may also be a single number for cells ("cells": 6 = [6, 6]).[min, max]-Bereiche dürfen bei cells auch eine einzelne Zahl sein ("cells": 6 = [6, 6]).
  • Positions are [x, y, z] in millimetres: origin in the middle of the frame at the height of the stack plate, +X right, +Y up, −Z forward.Positionen sind [x, y, z] in Millimetern: Ursprung in der Rahmenmitte auf Höhe der Stack-Auflage, +X rechts, +Y oben, −Z vorn.
  • "format": 1 is optional. New optional fields can come with minor API versions; the format number only rises for incompatible changes."format": 1 ist optional. Neue optionale Felder können mit Nebenversionen der API kommen; die Formatnummer steigt nur bei inkompatiblen Änderungen.

Fields of every partFelder jedes Teils

FieldFeldTypeTypDefaultStandardMeaningBedeutung
formatintegerganze Zahl1File format. Optional; a higher number than this Propwash knows stops loading with “update Propwash”.Dateiformat. Optional; eine höhere Nummer, als dieses Propwash kennt, bricht das Laden mit „Propwash aktualisieren“ ab.
mass_gnumberZahlrequiredPflichtMass in grams, above 0 and at most 20000.Masse in Gramm, über 0 und höchstens 20000.
stack_sizeintegerganze Zahl0 = by category (props 64, others 16)0 = je Kategorie (Props 64, sonst 16)Item stack size, 1–99.Stapelgröße des Items, 1–99.
sortintegerganze Zahl1000Order in lists and the creative tab.Reihenfolge in Listen und im Kreativ-Tab.
creativebooleanbooltrueListed in the add-on’s creative tab.Im Kreativ-Tab des Add-ons gelistet.
durabilitynumberZahl1.0 (props: material)1,0 (Props: Material)Divides the wear a crash causes; 2.0 wears half as fast.Teilt die Abnutzung durch einen Absturz; 2,0 nutzt halb so schnell ab.
recycle"none" or object"none" oder Objektby categoryje KategorieWhat the salvage slot gives for a broken part.Was das Zerlegen-Feld für ein kaputtes Teil gibt.
recycle.itemidIdrequiredPflichtItem id, for example propwash:copper_coil.Item-Id, zum Beispiel propwash:copper_coil.
recycle.countintegerganze Zahl1How many.Wie viele.
raritytextText–Colour of the item name: common, uncommon, rare, epic.Farbe des Item-Namens: common, uncommon, rare, epic.
visualobjectObjekt–Look of the part.Aussehen des Teils.
visual.accent"#rrggbb"–Accent colour (battery wrap, procedural shape).Akzentfarbe (Akkuhülle, prozedurale Form).
visual.render_modelidId–Use another drone model, for example a built-in one.Ein anderes Drohnen-Modell benutzen, zum Beispiel ein eingebautes.

Frame frameRahmen frame

Folder propwash_parts/frame/, plus the fields of every part.

Ordner propwash_parts/frame/, dazu die Felder jedes Teils.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
roletextTextfreestyleFrame class: whoop, toothpick, cinewhoop, freestyle, race, long_range, cinelifter, x_class.Rahmenklasse: whoop, toothpick, cinewhoop, freestyle, race, long_range, cinelifter, x_class.
shapetextTexttrue_xShape: true_x, stretched_x, squashed_x, deadcat, h_frame, custom.Form: true_x, stretched_x, squashed_x, deadcat, h_frame, custom.
wheelbase_mmintegerganze ZahlrequiredPflichtDiagonal motor-to-motor distance, 20–2000.Diagonaler Abstand Motor zu Motor, 20–2000.
max_prop_mmintegerganze Zahlone of twoeins von zweiLargest prop diameter, at most 400. Either this or props_mm.Größter Prop-Durchmesser, höchstens 400. Entweder das oder props_mm.
props_mm[min, max]one of twoeins von zweiSmallest and largest prop diameter, instead of max_prop_mm.Kleinster und größter Prop-Durchmesser, statt max_prop_mm.
motor_mountslist of idsListe von IdsrequiredPflichtMotor mounts the frame takes (one id is also fine).Motor-Halterungen, die der Rahmen nimmt (eine einzelne Id geht auch).
stack_mountslist of idsListe von IdsrequiredPflichtStack mounts the frame takes.Stack-Halterungen, die der Rahmen nimmt.
accessory_mountslistListeemptyleerAccessory mounts: top, bottom, front.Zubehör-Halterungen: top, bottom, front.
armsobjectObjekttrue X from the wheelbaseTrue-X aus dem RadstandOwn arm geometry with the keys front_left, front_right, rear_left, rear_right.Eigene Arm-Geometrie mit den Schlüsseln front_left, front_right, rear_left, rear_right.
arms.<arm>.pos[x, y, z] mmrequiredPflichtMotor position.Motorposition.
arms.<arm>.spintextTextprops inProps nach innenSpin direction: cw, ccw.Drehrichtung: cw, ccw.
batteryobjectObjekt–Where the battery sits.Wo der Akku sitzt.
battery.on_topbooleanboolwheelbase ≥ 100Radstand ≥ 100Battery on top of the frame.Akku oben auf dem Rahmen.
battery.plate_mmnumberZahlon top 0.13 × wheelbase, below −0.05 × wheelbaseoben 0,13 × Radstand, unten −0,05 × RadstandHeight of the battery plate.Höhe der Akku-Auflage.
electronics_mmnumberZahl0.05 × wheelbase0,05 × RadstandHeight of the electronics.Höhe der Elektronik.
cameraobjectObjekt–FPV camera. Every frame should set the position.FPV-Kamera. Jeder Rahmen sollte die Position setzen.
camera.pos[x, y, z] mm15 mm above the centre of mass15 mm über dem SchwerpunktLens position; decides how much of the props shows in the FPV picture.Objektivlage; bestimmt, wie viel von den Props im FPV-Bild zu sehen ist.
camera.tilt_degnumberZahl20Default camera angle, 0–80°.Standard-Kamerawinkel, 0–80°.
center_of_mass_mm[x, y, z] mm[0, 0, 0]Centre of mass of the frame.Schwerpunkt des Rahmens.
mass_splitobjectObjektopen 0.6 / 0.4 / 0, ducted 0.2 / 0.3 / 0.5offen 0,6 / 0,4 / 0, geduckt 0,2 / 0,3 / 0,5How the mass divides; the parts add up to 1.Wie sich die Masse verteilt; die Anteile ergeben zusammen 1.
mass_split.armsnumberZahlrequiredPflichtShare of the arms.Anteil der Arme.
mass_split.platenumberZahlrequiredPflichtShare of the plate.Anteil der Platte.
mass_split.ductnumberZahl0Share of the duct.Anteil des Ducts.
accessory_anchorsobjectObjektformula from the frameFormel aus dem RahmenWhere accessories sit, per mount (top, bottom, front).Wo Zubehör sitzt, je Halterung (top, bottom, front).
accessory_anchors.<slot>.pos[x, y, z] mmrequiredPflichtPosition.
accessory_anchors.<slot>.tilt_degnumberZahl0Tilt.Neigung.
accessory_anchors.<slot>.length_mmnumberZahl0Length of the mount.Länge der Halterung.
aeroobjectObjektrequiredPflichtAerodynamics.Aerodynamik.
aero.frontal_area_m2numberZahlrequiredPflichtFrontal area in m².Stirnfläche in m².
aero.drag_coefficientnumberZahlrequiredPflichtDrag coefficient.Widerstandsbeiwert.
aero.side_area_m2numberZahlfrom the frontal areaaus der StirnflächeSide area.Seitenfläche.
aero.top_area_m2numberZahlfrom the frontal areaaus der StirnflächeTop area.Draufsichtfläche.
ducttrue or objecttrue oder Objektopen propsoffene PropsDucted frame. true or {} uses the standard duct; single values below override it.Geduckter Rahmen. true oder {} nimmt den Standard-Duct; einzelne Werte darunter überschreiben ihn.
duct.thrust_gainnumberZahlstandardStandardExtra static thrust of the duct.Zusätzlicher Standschub des Ducts.
duct.clearance_mmnumberZahlstandardStandardGap between blade tip and duct.Spalt zwischen Blattspitze und Duct.
duct.translational_lift_gainnumberZahlstandardStandardLift gain in forward flight.Auftriebsgewinn im Vorwärtsflug.
duct.wash_lossnumberZahlstandardStandardThrust lost in the own downwash.Schubverlust im eigenen Abwind.
duct.wash_noisenumberZahlstandardStandardShaking in the own downwash.Rütteln im eigenen Abwind.
duct.restitutionnumberZahlstandardStandardBounce on impact.Abprallen beim Aufprall.
duct.frictionnumberZahlstandardStandardFriction when touching blocks.Reibung an Blöcken.
impact_tolerancenumberZahl8.08,0Impact speed in m/s that counts as a crash, above 0 and at most 100.Aufprallgeschwindigkeit in m/s, ab der ein Absturz zählt, über 0 und höchstens 100.
battery_fitobjectObjektrequiredPflichtWhich batteries fit.Welche Akkus passen.
battery_fit.cells[min, max]requiredPflichtCell range (a single number means exactly that many).Zellbereich (eine einzelne Zahl heißt genau so viele).
battery_fit.max_mass_gnumberZahlrequiredPflichtHeaviest battery.Schwerster Akku.
battery_fit.preferred_min_cellsintegerganze Zahlsmallest cell countkleinste ZellzahlCells of the preferred battery (shown in the workbench).Zellen des bevorzugten Akkus (Anzeige in der Werkbank).
battery_fit.preferred_min_capacity_mahintegerganze Zahl0Capacity of the preferred battery.Kapazität des bevorzugten Akkus.
JSONbuilt-in propwash:freestyle_5eingebaut: propwash:freestyle_5
{
  "format": 1,
  "mass_g": 125.0,
  "role": "freestyle",
  "shape": "true_x",
  "wheelbase_mm": 225,
  "max_prop_mm": 130,
  "motor_mounts": ["propwash:m22"],
  "stack_mounts": ["propwash:s30"],
  "accessory_mounts": ["top", "bottom", "front"],
  "battery": {"on_top": true, "plate_mm": 30.0},
  "electronics_mm": 12.0,
  "camera": {"pos": [0.0, 17.2, -58.8], "tilt_deg": 28.0},
  "accessory_anchors": {
    "top": {"pos": [0.0, 34.7, -69.0], "tilt_deg": 22.0, "length_mm": 0.0},
    "bottom": {"pos": [0.0, -3.0, -56.0], "tilt_deg": 30.0, "length_mm": 34.0},
    "front": {"pos": [0.0, 0.0, -72.0], "tilt_deg": 0.0, "length_mm": 0.0}
  },
  "aero": {"frontal_area_m2": 0.012, "drag_coefficient": 0.9},
  "impact_tolerance": 8.0,
  "battery_fit": {"cells": [4, 6], "max_mass_g": 230.0, "preferred_min_cells": 6, "preferred_min_capacity_mah": 0},
  "sort": 2
}

Stack (flight controller and ESC) stackStack (Flight-Controller und ESC) stack

Folder propwash_parts/stack/, plus the fields of every part.

Ordner propwash_parts/stack/, dazu die Felder jedes Teils.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
mountidIdrequiredPflichtStack mount, for example propwash:whoop_aio, propwash:s20, propwash:s30.Stack-Halterung, zum Beispiel propwash:whoop_aio, propwash:s20, propwash:s30.
esc_continuous_anumberZahlrequiredPflichtContinuous ESC current in A, at most 500.Dauerstrom des ESC in A, höchstens 500.
cells[min, max]requiredPflichtCell range, 1–16.Zellbereich, 1–16.
all_in_onebooleanboolfalseFlight controller and ESC on one board.Flight-Controller und ESC auf einer Platine.
esc_burst_anumberZahlderivedabgeleitetBurst current, at least the continuous current.Spitzenstrom, mindestens der Dauerstrom.
esc_resistance_ohmnumberZahlderivedabgeleitetESC resistance.Widerstand des ESC.
brownout_vnumberZahlderivedabgeleitetVoltage at which the flight controller resets.Spannung, bei der der Flight-Controller neu startet.
board_size_mmnumberZahlderivedabgeleitetBoard size, 10–120.Platinengröße, 10–120.
JSONbuilt-in propwash:stack_30eingebaut: propwash:stack_30
{
  "format": 1,
  "mass_g": 18.0,
  "mount": "propwash:s30",
  "esc_continuous_a": 55.0,
  "cells": [3, 6],
  "all_in_one": false,
  "sort": 2
}

Motor motor

Folder propwash_parts/motor/, plus the fields of every part.

Ordner propwash_parts/motor/, dazu die Felder jedes Teils.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
statortextTextrequiredPflichtStator label such as "2207" or "2306.5".Stator-Bezeichnung wie "2207" oder "2306.5".
stator_mm[d, h]from statoraus statorStator diameter and height when the label does not say it (first two digits diameter, rest height).Statordurchmesser und -höhe, wenn die Bezeichnung es nicht sagt (erste zwei Ziffern Durchmesser, Rest Höhe).
kvintegerganze ZahlrequiredPflichtKV, 50–100000.
mountidIdrequiredPflichtMotor mount, for example propwash:m08, propwash:m14, propwash:m22, propwash:m28.Motor-Halterung, zum Beispiel propwash:m08, propwash:m14, propwash:m22, propwash:m28.
max_current_anumberZahlrequiredPflichtMaximum current in A, at most 500.Höchststrom in A, höchstens 500.
resistance_ohmnumberZahlrequiredPflichtWinding resistance, below 10.Wicklungswiderstand, unter 10.
cells[min, max]requiredPflichtCell range, 1–16.Zellbereich, 1–16.
prop_mountidIdpropwash:universalProp mount; universal fits every prop.Prop-Aufnahme; universal passt zu jedem Prop.
thermalobjectObjektdefaults belowStandards darunterHeat model.Hitzemodell.
thermal.heat_capacity_j_per_knumberZahlfrom the massaus der MasseHeat capacity in J/K.Wärmekapazität in J/K.
thermal.cooling_w_per_knumberZahlfrom the massaus der MasseCooling at standstill in W/K.Kühlung im Stand in W/K.
thermal.cooling_w_per_k_per_rad_snumberZahlfrom the massaus der MasseExtra cooling per rad/s of rotation.Zusätzliche Kühlung je rad/s Drehzahl.
thermal.derate_start_cnumberZahl130Throttling starts at this temperature in °C (from 40).Ab dieser Temperatur in °C wird gedrosselt (ab 40).
thermal.max_temp_cnumberZahl150Maximum temperature in °C (at most 300).Höchsttemperatur in °C (höchstens 300).
thermal.wear_per_s_at_maxnumberZahl0.0020,002Wear per second at the maximum temperature, 0–1.Verschleiß je Sekunde bei Höchsttemperatur, 0–1.
JSONbuilt-in propwash:m2207_1750eingebaut: propwash:m2207_1750
{
  "format": 1,
  "mass_g": 33.0,
  "stator": "2207",
  "kv": 1750,
  "mount": "propwash:m22",
  "max_current_a": 45.0,
  "resistance_ohm": 0.055,
  "cells": [6, 6],
  "sort": 3,
  "visual": {"accent": "#e8b622"}
}

Propeller prop

Folder propwash_parts/prop/, plus the fields of every part.

Ordner propwash_parts/prop/, dazu die Felder jedes Teils.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
diameter_mmintegerganze ZahlrequiredPflichtDiameter, 10–400.Durchmesser, 10–400.
pitch_innumberZahlrequiredPflichtPitch in inches, above 0 and at most 12.Steigung in Zoll, über 0 und höchstens 12.
bladesintegerganze ZahlrequiredPflichtNumber of blades, 2–8.Blattzahl, 2–8.
ctnumberZahlrequiredPflichtThrust coefficient, between 0 and 1.Schubbeiwert, zwischen 0 und 1.
cpnumberZahlrequiredPflichtPower coefficient, between 0 and 1.Leistungsbeiwert, zwischen 0 und 1.
materialtextTextpolycarbonateMaterial: polycarbonate, glass_fiber_nylon, carbon_fiber_nylon, carbon. Sets the default stiffness and durability.Material: polycarbonate, glass_fiber_nylon, carbon_fiber_nylon, carbon. Bestimmt Standard-Steifigkeit und -Haltbarkeit.
stiffnessnumberZahlby materialje MaterialStiffness, above 0 and at most 10; stiffer props shake less in the downwash.Steifigkeit, über 0 und höchstens 10; steifere Props rütteln weniger im Abwind.
mountidIdpropwash:universalProp mount.Prop-Aufnahme.
reverse_thrustnumberZahl0.55 (normal prop)0,55 (normaler Prop)Thrust when the motor spins backwards in 3D mode, as a share of the forward thrust at the same speed, 0.2 to 1.0. Normal cambered props manage about half; symmetric 3D props give about 1.0.Schub, wenn der Motor im 3D-Modus rückwärts dreht, als Anteil des Vorwärtsschubs bei gleicher Drehzahl, 0,2 bis 1,0. Normale, gewölbte Props schaffen etwa die Hälfte; symmetrische 3D-Props geben etwa 1,0 an.
JSONbuilt-in propwash:p51_3beingebaut: propwash:p51_3b
{
  "format": 1,
  "mass_g": 4.3,
  "diameter_mm": 130,
  "pitch_in": 4.6,
  "blades": 3,
  "ct": 0.12,
  "cp": 0.06,
  "material": "polycarbonate",
  "sort": 3,
  "visual": {"accent": "#ff7a1a"}
}

Video unit videoVideomodul video

Folder propwash_parts/video/, plus the fields of every part.

Ordner propwash_parts/video/, dazu die Felder jedes Teils.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
latency_msintegerganze ZahlrequiredPflichtLatency in ms, 1–500.Latenz in ms, 1–500.
range_blocksintegerganze ZahlrequiredPflichtRange in blocks, 16–20000.Reichweite in Blöcken, 16–20000.
image_qualitynumberZahlrequiredPflichtImage quality, above 0 and at most 1.Bildqualität, über 0 und höchstens 1.
camera_width_mmnumberZahl19Camera width, 8–40.Kamerabreite, 8–40.
camera_fov_degnumberZahlanalog 120, digital 130Horizontal field of view of the camera, 60–180; it is the FPV field of view in the game.Horizontales Sichtfeld der Kamera, 60–180; es ist das FPV-Sichtfeld im Spiel.
vtx_power_mwintegerganze Zahl0 (= 200 mW)Rated transmitter power in mW, 0–10000: the level a drone transmits at until the pilot picks another one; range and power draw are given for it (since API 1.6, before information only).Nennleistung des Senders in mW, 0–10000: die Stufe, mit der eine Drohne sendet, bis der Pilot eine andere wählt; Reichweite und Leistungsaufnahme gelten für sie (seit API 1.6, vorher nur Information).
vtx_levels_mwlist of integersListe ganzer Zahlenderived from vtx_power_mwaus vtx_power_mw abgeleitetSelectable power levels in mW, ascending, 1–10000, at most 8, must contain vtx_power_mw, e.g. [25, 200, 400, 800]. Without the list Propwash derives levels up to the rated power (API 1.6).Wählbare Leistungsstufen in mW, aufsteigend, 1–10000, höchstens 8, muss vtx_power_mw enthalten, z. B. [25, 200, 400, 800]. Ohne Liste leitet Propwash Stufen bis zur Nennleistung ab (API 1.6).
power_wnumberZahlfrom system, mass and poweraus System, Masse und LeistungPower draw of the video system in W for the energy balance, 0.1–60.Leistungsaufnahme des Videosystems in W für die Energiebilanz, 0,1–60.
JSONbuilt-in propwash:analog_raceeingebaut: propwash:analog_race
{
  "format": 1,
  "mass_g": 8.0,
  "link": "analog",
  "latency_ms": 12,
  "range_blocks": 380,
  "image_quality": 0.65,
  "camera_width_mm": 19.0,
  "camera_fov_deg": 125.0,
  "vtx_power_mw": 400,
  "vtx_levels_mw": [25, 200, 400, 800, 1600],
  "power_w": 3.5,
  "sort": 1
}

Battery batteryAkku battery

Folder propwash_parts/battery/, plus the fields of every part.

Ordner propwash_parts/battery/, dazu die Felder jedes Teils.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
cellsintegerganze ZahlrequiredPflichtCells in series, 1–12.Zellen in Reihe, 1–12.
capacity_mahintegerganze ZahlrequiredPflichtCapacity in mAh, 50–50000.Kapazität in mAh, 50–50000.
cell_resistance_ohmnumberZahlrequiredPflichtInternal resistance per cell, below 1.Innenwiderstand je Zelle, unter 1.
c_ratingintegerganze ZahlrequiredPflichtC rating, 1–300.C-Rate, 1–300.
chemistryidIdpropwash:lipoCell chemistry: propwash:lihv, propwash:lion, propwash:lipo or an own one.Zellchemie: propwash:lihv, propwash:lion, propwash:lipo oder eine eigene.
pack_mm[l, w, h][l, b, h]from mass and densityaus Masse und DichtePack size.Maße des Akkus.
connectortextTextemptyleerConnector name, up to 16 characters.Steckername, bis 16 Zeichen.
JSONbuilt-in propwash:b6s_1300eingebaut: propwash:b6s_1300
{
  "format": 1,
  "mass_g": 210.0,
  "cells": 6,
  "capacity_mah": 1300,
  "cell_resistance_ohm": 0.0055,
  "c_rating": 120,
  "chemistry": "propwash:lipo",
  "sort": 3,
  "visual": {"accent": "#2f6fd6"}
}

Accessory accessoryZubehör accessory

Folder propwash_parts/accessory/, plus the fields of every part.

Ordner propwash_parts/accessory/, dazu die Felder jedes Teils.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
slottextTextrequiredPflichtMount: top, bottom, front.Halterung: top, bottom, front.
size_mm[w, h, d][b, h, t]requiredPflichtSize, each above 0 and at most 500.Maße, je über 0 und höchstens 500.
flight_battery_wnumberZahl0Power taken from the flight battery in W, at most 200.Leistung aus dem Flugakku in W, höchstens 200.
frontal_area_m2numberZahl0Extra frontal area, at most 0.5.Zusätzliche Stirnfläche, höchstens 0,5.
ledsintegerganze Zahl0Number of LEDs, 0–64.Anzahl LEDs, 0–64.
lensobjectObjekt–Lens of a camera accessory.Objektiv eines Kamera-Zubehörs.
lens.x_mmnumberZahl0Side offset of the lens.Seitlicher Versatz des Objektivs.
lens.length_mmnumberZahl0Lens length, 0–100.Objektivlänge, 0–100.
action_camobjectObjekt–Makes the accessory an action cam (top mount only).Macht das Zubehör zur Action-Cam (nur obere Halterung).
action_cam.max_heightintegerganze ZahlrequiredPflichtHighest recording height in pixels (1080, 1440 …).Höchste Aufnahmehöhe in Pixeln (1080, 1440 …).
action_cam.max_fpsintegerganze ZahlrequiredPflichtHighest frame rate.Höchste Bildrate.
action_cam.stabilizationbooleanboolfalseImage stabilisation.Bildstabilisierung.
action_cam.horizon_levellingbooleanboolfalseKeeps the horizon level.Hält den Horizont gerade.
action_cam.own_battery_whnumberZahl0Own battery in Wh; 0 = runs from the flight battery.Eigener Akku in Wh; 0 = läuft am Flugakku.
action_cam.record_wnumberZahlrequiredPflichtPower while recording in W.Leistung beim Aufnehmen in W.
action_cam.max_record_wnumberZahlrecord_wPower at the highest setting.Leistung bei der höchsten Einstellung.
action_cam.fov_degnumberZahlrequiredPflichtField of view.Sichtfeld.
action_cam.image_qualitynumberZahlrequiredPflichtImage quality.Bildqualität.
action_cam.low_light_noisenumberZahlrequiredPflichtNoise in the dark.Rauschen im Dunkeln.
action_cam.sensor_innumber or "1/2.8"Zahl oder "1/2.8"requiredPflichtSensor size in inches.Sensorgröße in Zoll.
JSONbuilt-in propwash:action_cam_lighteingebaut: propwash:action_cam_light
{
  "format": 1,
  "mass_g": 42.0,
  "slot": "top",
  "size_mm": [46.0, 30.0, 26.0],
  "flight_battery_w": 4.0,
  "frontal_area_m2": 0.0014,
  "lens": {"x_mm": 0.0, "length_mm": 7.0},
  "action_cam": {
    "max_height": 1080,
    "max_fps": 60,
    "stabilization": false,
    "horizon_levelling": false,
    "own_battery_wh": 0.0,
    "record_w": 4.0,
    "max_record_w": 4.0,
    "fov_deg": 150.0,
    "image_quality": 0.8,
    "low_light_noise": 0.55,
    "sensor_in": "1/2.8"
  },
  "sort": 1
}

Cell chemistry chemistryZellchemie chemistry

Chemistries are not parts and have no common fields; batteries refer to them by id. Register or load them before the batteries that use them.

Zellchemien sind keine Teile und haben keine gemeinsamen Felder; Akkus verweisen per Id auf sie. Vor den Akkus anmelden oder laden, die sie benutzen.

FieldFeldTypeTypDefaultStandardMeaningBedeutung
full_vnumberZahlrequiredPflichtCell voltage when full.Zellspannung voll geladen.
nominal_vnumberZahlrequiredPflichtNominal cell voltage.Nennspannung der Zelle.
empty_vnumberZahlrequiredPflichtCell voltage when empty.Zellspannung leer.
cutoff_vnumberZahlrequiredPflichtCut-off voltage, at most the empty voltage.Abschaltspannung, höchstens die Leerspannung.
storage_vnumberZahlrequiredPflichtStorage voltage, between empty and full.Lagerspannung, zwischen leer und voll.
density_g_cm3numberZahlrequiredPflichtDensity in g/cm³ (for the pack size).Dichte in g/cm³ (für die Akkumaße).
ocv_shape12 numbers12 ZahlenrequiredPflichtOpen-circuit voltage curve: 12 values from 0 to 1, rising, at charge 0, 0.05, 0.1, 0.2 … 1.0.Leerlaufspannungskurve: 12 Werte von 0 bis 1, steigend, bei Ladung 0, 0,05, 0,1, 0,2 … 1,0.
usable_fractionnumberZahl0.88 / 0.85 / 0.80 by voltages0,88 / 0,85 / 0,80 nach SpannungenUsable share of the capacity down to the landing voltage, 0.5–1.Nutzbarer Anteil der Kapazität bis zur Landespannung, 0,5–1.
JSONbuilt-in propwash:lipoeingebaut: propwash:lipo
{
  "format": 1,
  "full_v": 4.2,
  "nominal_v": 3.7,
  "empty_v": 3.5,
  "cutoff_v": 3.3,
  "storage_v": 3.8,
  "density_g_cm3": 2.0,
  "usable_fraction": 0.8,
  "ocv_shape": [0.0, 0.16, 0.27, 0.33, 0.37, 0.4, 0.43, 0.5, 0.61, 0.73, 0.86, 1.0]
}

Built-in idsEingebaute Ids

Mounts of the built-in parts, to make own parts fit them:

Halterungen der eingebauten Teile, damit eigene Teile dazu passen:

MountHalterungId
Mounts.MOTOR_M08propwash:m08
Mounts.MOTOR_M14propwash:m14
Mounts.MOTOR_M22propwash:m22
Mounts.MOTOR_M28propwash:m28
Mounts.STACK_WHOOP_AIOpropwash:whoop_aio
Mounts.STACK_S20propwash:s20
Mounts.STACK_S30propwash:s30
Mounts.PROP_UNIVERSALpropwash:universal

Built-in parts and chemistries, for presets that mix them with own parts:

Eingebaute Teile und Zellchemien, für Presets, die sie mit eigenen Teilen mischen:

CategoryKategorieIds
framepropwash:whoop_65 propwash:cinewhoop_3 propwash:freestyle_5 propwash:race_5 propwash:long_range_7
stackpropwash:aio_whoop propwash:aio_20 propwash:stack_30 propwash:creative_fc
motorpropwash:m0802_22000 propwash:m1404_4600 propwash:m2004_3000 propwash:m2207_1750 propwash:m2306_1860 propwash:m2807_1300
proppropwash:p31_4b propwash:p31_3b propwash:p3_3b propwash:p51_3b propwash:p7_2b propwash:p51_29_3b
videopropwash:analog_nano propwash:analog_race propwash:digital_lite propwash:digital_hd
batterypropwash:b1s_300_hv propwash:b4s_650 propwash:b6s_1100 propwash:b6s_1300 propwash:b6s_4000_lion
accessorypropwash:led_strip propwash:action_cam_light propwash:action_cam_heavy propwash:action_cam_flashback propwash:gripper
chemistrypropwash:lihv propwash:lion propwash:lipo

Example with own armsBeispiel mit eigenen Armen

A deadcat frame from the example add-on: own arm positions and spin directions, the camera far enough in front of the front props, both accessory mounts. "creative": false keeps it out of the creative tab; leave it out for your own parts.

Ein Deadcat-Rahmen aus dem Beispiel-Add-on: eigene Armpositionen und Drehrichtungen, die Kamera weit genug vor den Vorderprops, beide Zubehör-Halterungen. "creative": false hält ihn aus dem Kreativ-Tab; bei eigenen Teilen einfach weglassen.

JSONpropwash_example:deadcat_5
{
  "format": 1,
  "mass_g": 118.0,
  "creative": false,
  "role": "freestyle",
  "shape": "deadcat",
  "wheelbase_mm": 230,
  "max_prop_mm": 130,
  "motor_mounts": ["propwash:m22"],
  "stack_mounts": ["propwash:s30", "propwash:s20"],
  "accessory_mounts": ["top", "bottom"],
  "arms": {
    "front_left": {"pos": [-95.0, 0.0, -60.0], "spin": "cw"},
    "front_right": {"pos": [95.0, 0.0, -60.0], "spin": "ccw"},
    "rear_left": {"pos": [-80.0, 0.0, 80.0], "spin": "ccw"},
    "rear_right": {"pos": [80.0, 0.0, 80.0], "spin": "cw"}
  },
  "battery": {"on_top": true, "plate_mm": 30.0},
  "electronics_mm": 12.0,
  "camera": {"pos": [0.0, 14.0, -100.0], "tilt_deg": 30.0},
  "center_of_mass_mm": [0.0, 0.0, 6.0],
  "aero": {"frontal_area_m2": 0.012, "drag_coefficient": 0.9},
  "impact_tolerance": 8.0,
  "battery_fit": {"cells": [4, 6], "max_mass_g": 260.0, "preferred_min_cells": 6, "preferred_min_capacity_mah": 0}
}

Errors and warningsFehler und Warnungen

  • Propwash first reads all files. If any has an error, loadBundled throws one exception listing every error as file – field: message and registers nothing.Propwash liest zuerst alle Dateien. Hat eine einen Fehler, wirft loadBundled eine Ausnahme mit jedem Fehler als Datei – Feld: Meldung und meldet nichts an.
  • Unknown fields are not errors: they are logged as a warning and ignored, so a file written for a newer Propwash still loads.Unbekannte Felder sind keine Fehler: Sie landen als Warnung im Log und werden ignoriert, damit eine Datei für ein neueres Propwash trotzdem lädt.
  • PropwashEvents.PART_REGISTERED fires for every part (not for chemistries).PropwashEvents.PART_REGISTERED feuert für jedes Teil (nicht für Zellchemien).

Check a file without starting the game: PropwashApi.parts().fromJson(kind, id, json) throws an IllegalArgumentException naming the field. The online configurator reads Just More Parts in this format too.

Eine Datei ohne Spielstart prüfen: PropwashApi.parts().fromJson(kind, id, json) wirft eine IllegalArgumentException, die das Feld nennt. Der Online-Konfigurator liest Just More Parts ebenfalls in diesem Format.