promotional bannermobile promotional banner

Create Balloon

Adds inflatable hot air balloons to Create: Aeronautics.
Back to Files

create_balloon-1.0.7p3.jar

File namecreate_balloon-1.0.7p3.jar
Uploader
xiaoliz46xiaoliz46
Uploaded
Jul 3, 2026
Downloads
128
Size
124.4 KB
Mod Loaders
NeoForge
File ID
8362502
Type
B
Beta
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:create-balloon-1551177:8362502"

Learn more about Curse Maven

What's new

### What's New in 1.0.7p3

- **CC:Tweaked native API** — call `balloon.ascend()` directly from any computer on a Sable structure. No `peripheral.wrap()` or `peripheral.find()` required. Old peripheral approach still works for backward compatibility.
- **`getHeight()` added** — returns the Y coordinate of the first balloon on the structure.
- **Gyroscope angular impulse cap** — prevents PD controller runaway on tiny structures (< 20 mass). Restoring and damping torque combined magnitude clamped to `mass × 0.5` per tick. Large structures unaffected.
- **Debug logging overhaul** —
  - Session archive naming uses readable timestamps (`debug-2026-07-03_15-30-00.log`).
  - `latest-debug.log` — tail view of current session (last 5000 lines), crash-safe, always the file you check first.
  - `latest-debug-throttled.log` — same tail view but PHY entries throttled to 1 Hz for quick browsing.
  - Full per-session log written to timestamped archive (never deleted, never truncated).
- **Example scripts updated** — all use new native API syntax. `balloon_test_all.lua` added for full API testing.
- **HotAirBalloonBlock entity state cleanup** — movement flags now reset on controller stop/remove.

- ### CC:Tweaked Usage

Both approaches work. Choose whichever you prefer:

```lua
-- New: native global API (works from any computer on the structure)
balloon.ascend()
balloon.descend()
balloon.hover()
balloon.forward()
balloon.back()
balloon.turnLeft()
balloon.turnRight()
balloon.stop()
balloon.count()
balloon.isActive()
balloon.getHeight()
```

```lua
-- Old: peripheral wrapping (backward compatible, computer next to balloon/controller)
local b = peripheral.find("balloon")
b.ascend()
b.descend()
b.hover()
b.forward()
b.back()
b.turnLeft()
b.turnRight()
b.stop()
b.count()
b.isActive()
-- Note: getHeight() is native API only
```

```Example scripts
-- Create Balloon CC API Test
-- Put on Sable 

print("==== Create Balloon API Test ====")
print()

-- 1. count / getHeight / isActive
local n = balloon.count()
local h = balloon.getHeight()
local a = balloon.isActive()
print(string.format("[STATUS] balloons=%d  height=%d  active=%s", n, h, tostring(a)))
if n == 0 then
    error("No balloons found on this structure. Place balloon blocks first.")
end

-- 2. ascend
print("[TEST] ascend()")
balloon.ascend()
sleep(3)
print("  height after 3s: " .. balloon.getHeight())

-- 3. hover
print("[TEST] hover()")
balloon.hover()
sleep(3)
print("  height after 3s: " .. balloon.getHeight())

-- 4. descend
print("[TEST] descend()")
balloon.descend()
sleep(3)
print("  height after 3s: " .. balloon.getHeight())

-- 5. forward
print("[TEST] forward()")
balloon.forward()
sleep(2)
balloon.hover()
print("  moved forward 2s")

-- 6. back
print("[TEST] back()")
balloon.back()
sleep(2)
balloon.hover()
print("  moved back 2s")

-- 7. turnLeft
print("[TEST] turnLeft()")
balloon.turnLeft()
sleep(2)
balloon.hover()
print("  turned left 2s")

-- 8. turnRight
print("[TEST] turnRight()")
balloon.turnRight()
sleep(2)
balloon.hover()
print("  turned right 2s")

-- 9. stop
print("[TEST] stop()")
balloon.stop()
sleep(1)
print("  active: " .. tostring(balloon.isActive()))

-- 10. hover -> ascend -> stop cycle
print("[TEST] ascend→hover→stop cycle")
balloon.ascend()
sleep(2)
balloon.hover()
sleep(1)
balloon.stop()
sleep(1)
print("  all stopped")

print()
print("==== All tests passed ====")
print(string.format("  final: balloons=%d  height=%d  active=%s",
    balloon.count(), balloon.getHeight(), tostring(balloon.isActive())))
```