Weather, Computers and Broadcast [OC + Weather2 Remastered]

An addon that adds compatibility between Weather2 Remastered and OpenComputers.
Digital Radar - JEI craft

Digital Radar - JEI craft

Digital Siren - JEI craft

Digital Siren - JEI craft

Santiagom123 | Weather Broadcasting
Create a server, get 25% off your first monthaffiliate logo
Create Server
affiliate banner image

Description

This mod adds a structure in which you can find a block that acts as an OpenComputers peripheral, along with loot. Among this loot is an installable diskette that contains example programs to view the weather in a much more detailed way, allowing the combination of OpenComputers technology with the chaotic weather world added by Weather2 Remastered.

Type legend:

F = float

B = boolean

T = key-value pairs

S = string

I = integer

V = void

METHODS

METHODS (DIGITAL SIREN):

V: PlaySound( F: frequency(20-2000), I: duration in seconds (1-600), I: interval in ticks (1-60) )

METHODS (DIGITAL RADAR):

F: GetWindAngle() – returns the wind direction around the block

F: GetWindSpeed() – returns the wind speed around the block (must be multiplied by 9.65 to obtain a value in MPH)

B: IsRaining() – returns whether it is raining at the block

B: IsAStorm() – returns whether there is a storm within a 712-block radius

F: GetHumidity() – returns the humidity around the block on a 0–1 scale

F: GetPressure() – returns the atmospheric pressure around the block in kPa

F: GetDewpoint() – returns the dew point temperature around the block in °C

F: GetFarenheitTemperature() – returns the temperature around the block in °F (SIC)

F: GetCelsiusTemperature() – returns the temperature around the block in °C

T: ClosestStorm() – returns multiple key-value pairs describing the closest storm within a 712-block radius

S: .type – returns the storm type (TD1, EF1, C1, etc.)

F: .dist – returns the distance from the block to the storm (in blocks)

F: .angle – returns the direction angle of the storm

F: .speed – returns the movement speed of the storm

S: .name – returns the storm name (TROPICAL DEPRESSION IAN, etc.)

B: .danger – returns whether the storm is violent (increased size and health) (WIP)

B: .isDying – returns whether the storm is dissipating

I: .stage – returns the storm stage (higher stages mean stronger storms)

F: .Wspeed – returns the wind speed inside the storm (must be multiplied by 9.65 to obtain MPH)

I: .size – returns the storm size in blocks

EXAMPLE:

-- Lua example code to test the peripheral

local component = require("component")
local term = require("term")

if not component.isAvailable("WindAdapter") then
  error("Component 'WindAdapter' not found")
end

local radar = component.WindAdapter

local function boolToText(v)
  if v then return "YES" else return "NO" end
end

while true do
  -- Basic readings
  local angle = radar.GetWindAngle()
  local speed = radar.GetWindSpeed() * 9.65

  local humidity = radar.GetHumidity() * 100
  local pressure = radar.GetPressure()
  local dew = radar.GetDewpoint()

  local tempC = radar.GetCelsiusTemperature()
  local tempF = radar.GetFarenheitTemperature()

  local isRaining = radar.IsRaining()
  local isStorm = radar.IsAStorm()

  -- Clear screen before printing
  term.clear()
  term.setCursor(1,1)

  print("=== METEOROLOGICAL RADAR ===\n")

  print("Wind:")
  print("  Angle:      " .. string.format("%.2f", angle))
  print("  Speed:      " .. string.format("%.2f", speed))
  print("")

  print("Atmosphere:")
  print("  Temperature: " .. string.format("%.2f", tempC) .. " °C / " .. string.format("%.2f", tempF) .. " °F")
  print("  Humidity:    " .. string.format("%.2f", humidity) .. " %")
  print("  Pressure:    " .. string.format("%.2f", pressure))
  print("  Dew point:   " .. string.format("%.2f", dew))
  print("")

  print("Conditions:")
  print("  Raining: " .. boolToText(isRaining))
  print("  Storm detected: " .. boolToText(isStorm))
  print("")

  -- Storm processing
  if isStorm then
    local data = { radar.ClosestStorm() }

    local storm = {}
    for i = 1, #data, 2 do
      storm[data[i]] = data[i+1]
    end

    -- Filter: ignore storms named "Cloud"
    if storm.name == "Cloud" or storm.name == "" then
      print("No active storms detected.")
    else
      print(">>> CLOSEST STORM <<<")
      print("  Type:      " .. tostring(storm.type))
      print("  Name:      " .. tostring(storm.name))
      print("  Distance:  " .. string.format("%.2f", storm.dist))
      print("  Angle:     " .. string.format("%.2f", storm.angle))
      print("  Speed:     " .. string.format("%.2f", storm.speed))
      print("  Wind:      " .. string.format("%.2f", storm.Wspeed * 9.65))
      print("  Size:      " .. tostring(storm.size))
      print("  Dangerous: " .. boolToText(storm.danger))
      print("  Dying:     " .. boolToText(storm.isDying))
      print("  Stage:     " .. tostring(storm.stage))
    end
  else
    print("No active storms detected.")
  end

  os.sleep(0.1)
end

UPDATE 1.2 MAY BREAK EXISTING SCRIPTS (API CHANGES) – CHECK CHANGELOG

Not affiliated with the Weather 2 Remastered team.

Any issues related to the base mod must be reported through their official channels, and likewise, issues specific to this mod should be reported through this project's channels.

The Weather, Computers and Broadcast [OC + Weather2 Remastered] Team

profile avatar
  • 1
    Projects
  • 2.7K
    Downloads