From 6309c6a97fdbabfde978358f5f9a0f61ab74f91f Mon Sep 17 00:00:00 2001 From: Alexander Harkness Date: Tue, 26 Dec 2017 21:25:57 +0000 Subject: improve rain simulation (#4017) * Uses vanilla logic to decide which blocks rain falls through. * Rain falls infinitely above the world, and stops at y=0. * Entities will now be extinguished if they are under rain-blocking blocks, and fire will now be extinguished by rain similarly. * Create IsWeatherWetAtXYZ to identify wetness at a particular location. * Use new code for enderman rain detection. * Fixes issue #916 * Disable warnings for global constructors in the fire simulator. --- Server/Plugins/APIDump/APIDesc.lua | 34 ++++++++++++++++++++++++-------- Server/Plugins/APIDump/Classes/World.lua | 32 ++++++++++++++++++++++-------- 2 files changed, 50 insertions(+), 16 deletions(-) (limited to 'Server/Plugins') diff --git a/Server/Plugins/APIDump/APIDesc.lua b/Server/Plugins/APIDump/APIDesc.lua index 3b37f2fdf..aeb217b7a 100644 --- a/Server/Plugins/APIDump/APIDesc.lua +++ b/Server/Plugins/APIDump/APIDesc.lua @@ -238,7 +238,7 @@ return Type = "boolean", }, }, - Notes = "Returns whether the specified block type will be destroyed after a single hit.", + Notes = "Returns true if the specified block type will be destroyed after a single hit.", }, IsPistonBreakable = { @@ -256,9 +256,9 @@ return Type = "boolean", }, }, - Notes = "Returns whether a piston can break the specified block type.", + Notes = "Returns true if a piston can break the specified block type.", }, - IsSnowable = + IsRainBlocker = { IsStatic = true, Params = @@ -274,9 +274,9 @@ return Type = "boolean", }, }, - Notes = "Returns whether the specified block type can hold snow atop.", + Notes = "Returns true if the specified block type blocks rain from passing through.", }, - IsSolid = + IsSkylightDispersant = { IsStatic = true, Params = @@ -292,9 +292,9 @@ return Type = "boolean", }, }, - Notes = "Returns whether the specified block type is solid.", + Notes = "Returns true if skylight is impeded by passage through a block of the specified type.", }, - IsSkylightDispersant = + IsSnowable = { IsStatic = true, Params = @@ -310,7 +310,25 @@ return Type = "boolean", }, }, - Notes = "Returns true if skylight is impeded by passage through a block of the specified type.", + Notes = "Returns whether the specified block type can hold snow atop.", + }, + IsSolid = + { + IsStatic = true, + Params = + { + { + Name = "BlockType", + Type = "number", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns whether the specified block type is solid.", }, IsTransparent = { diff --git a/Server/Plugins/APIDump/Classes/World.lua b/Server/Plugins/APIDump/Classes/World.lua index 648bf5aa4..8f1b29012 100644 --- a/Server/Plugins/APIDump/Classes/World.lua +++ b/Server/Plugins/APIDump/Classes/World.lua @@ -2237,7 +2237,7 @@ function OnAllChunksAvailable() All return values from the callbacks are i Type = "boolean", }, }, - Notes = "Returns true if the current world is raining (no thunderstorm).", + Notes = "Returns true if the current weather is rainy.", }, IsWeatherRainAt = { @@ -2258,7 +2258,7 @@ function OnAllChunksAvailable() All return values from the callbacks are i Type = "boolean", }, }, - Notes = "Returns true if the specified location is raining (takes biomes into account - it never rains in a desert).", + Notes = "Returns true if it is rainy at the specified location. This takes into account biomes.", }, IsWeatherStorm = { @@ -2268,7 +2268,7 @@ function OnAllChunksAvailable() All return values from the callbacks are i Type = "boolean", }, }, - Notes = "Returns true if the current world is stormy.", + Notes = "Returns true if the current weather is stormy.", }, IsWeatherStormAt = { @@ -2289,7 +2289,7 @@ function OnAllChunksAvailable() All return values from the callbacks are i Type = "boolean", }, }, - Notes = "Returns true if the specified location is stormy (takes biomes into account - no storm in a desert).", + Notes = "Returns true if it is stormy at the specified location. This takes into account biomes.", }, IsWeatherSunny = { @@ -2320,7 +2320,7 @@ function OnAllChunksAvailable() All return values from the callbacks are i Type = "boolean", }, }, - Notes = "Returns true if the current weather is sunny at the specified location (takes into account biomes).", + Notes = "Returns true if it is sunny at the specified location. This takes into account biomes.", }, IsWeatherWet = { @@ -2330,7 +2330,7 @@ function OnAllChunksAvailable() All return values from the callbacks are i Type = "boolean", }, }, - Notes = "Returns true if the current world has any precipitation (rain or storm).", + Notes = "Returns true if the world currently has any precipitation - rain, storm or snow.", }, IsWeatherWetAt = { @@ -2351,7 +2351,24 @@ function OnAllChunksAvailable() All return values from the callbacks are i Type = "boolean", }, }, - Notes = "Returns true if the specified location has any precipitation (rain or storm) (takes biomes into account, deserts are never wet).", + Notes = "Returns true if it is raining or storming at the specified location. This takes into account biomes.", + }, + IsWeatherWetAtXYZ = + { + Params = + { + { + Name = "Pos", + Type = "Vector3i", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the specified location has wet weather (rain or storm), using the same logic as IsWeatherWetAt, except that any rain-blocking blocks above the specified position will block the precipitation and this function will return false.", }, PrepareChunk = { @@ -3637,4 +3654,3 @@ World:ForEachEntity( }, }, } - -- cgit v1.2.3