@@ -1362,7 +1362,7 @@ Local<Value> EntityClass::getEntityFromViewVector(const Arguments& args) {
13621362 }
13631363 HitResult result = actor->traceRay (maxDistance, true , false );
13641364 Actor* entity = result.getEntity ();
1365- if (entity) {
1365+ if (result. mType != HitResultType::NoHit && entity) {
13661366 return EntityClass::newEntity (entity);
13671367 }
13681368 return Local<Value>();
@@ -1411,15 +1411,17 @@ Local<Value> EntityClass::getBlockFromViewVector(const Arguments& args) {
14111411 return true ;
14121412 }
14131413 );
1414-
1414+ if (res.mType == HitResultType::NoHit) {
1415+ return Local<Value>();
1416+ }
14151417 BlockPos bp;
14161418 if (includeLiquid && res.mIsHitLiquid ) {
14171419 bp = res.mLiquidPos ;
14181420 } else {
14191421 bp = res.mBlock ;
14201422 }
14211423 Block const & bl = actor->getDimensionBlockSource ().getBlock (bp);
1422- if (bl.isEmpty ()) {
1424+ if (bl.isAir () || bl. isEmpty ()) {
14231425 return Local<Value>();
14241426 }
14251427 return BlockClass::newBlock (bl, bp, actor->getDimensionId ());
@@ -1804,16 +1806,18 @@ Local<Value> McClass::explode(const Arguments& args) {
18041806 bool isDestroy = args[beginIndex + 2 ].asBoolean ().value ();
18051807 bool isFire = args[beginIndex + 3 ].asBoolean ().value ();
18061808
1807- return Boolean::newBoolean (ll::service::getLevel ()->explode (
1808- ll::service::getLevel ()->getDimension (pos.dim )->getBlockSourceFromMainChunkSource (),
1809- source.value_or (nullptr ),
1810- pos.getVec3 (),
1811- radius,
1812- isFire,
1813- isDestroy,
1814- FLT_MAX,
1815- false
1816- ));
1809+ return Boolean::newBoolean (
1810+ ll::service::getLevel ()->explode (
1811+ ll::service::getLevel ()->getDimension (pos.dim )->getBlockSourceFromMainChunkSource (),
1812+ source.value_or (nullptr ),
1813+ pos.getVec3 (),
1814+ radius,
1815+ isFire,
1816+ isDestroy,
1817+ FLT_MAX,
1818+ false
1819+ )
1820+ );
18171821 } else {
18181822 CHECK_ARG_TYPE (args[beginIndex + 1 ], ValueKind::kNumber );
18191823 CHECK_ARG_TYPE (args[beginIndex + 2 ], ValueKind::kNumber );
@@ -1825,16 +1829,18 @@ Local<Value> McClass::explode(const Arguments& args) {
18251829 bool isDestroy = args[beginIndex + 3 ].asBoolean ().value ();
18261830 bool isFire = args[beginIndex + 4 ].asBoolean ().value ();
18271831
1828- return Boolean::newBoolean (ll::service::getLevel ()->explode (
1829- ll::service::getLevel ()->getDimension (pos.dim )->getBlockSourceFromMainChunkSource (),
1830- source.value_or (nullptr ),
1831- pos.getVec3 (),
1832- radius,
1833- isFire,
1834- isDestroy,
1835- maxResistance,
1836- false
1837- ));
1832+ return Boolean::newBoolean (
1833+ ll::service::getLevel ()->explode (
1834+ ll::service::getLevel ()->getDimension (pos.dim )->getBlockSourceFromMainChunkSource (),
1835+ source.value_or (nullptr ),
1836+ pos.getVec3 (),
1837+ radius,
1838+ isFire,
1839+ isDestroy,
1840+ maxResistance,
1841+ false
1842+ )
1843+ );
18381844 }
18391845 }
18401846 CATCH (" Fail in Explode!" );
0 commit comments