diff --git a/src/main/resources/assets/computercraft/lua/rom/apis/gps b/src/main/resources/assets/computercraft/lua/rom/apis/gps index 9f7cb5fd0..5fabbd0dd 100644 --- a/src/main/resources/assets/computercraft/lua/rom/apis/gps +++ b/src/main/resources/assets/computercraft/lua/rom/apis/gps @@ -103,7 +103,7 @@ function locate( _nTimeout, _bDebug ) local sSide, sChannel, sReplyChannel, tMessage, nDistance = p1, p2, p3, p4, p5 if sSide == sModemSide and sChannel == os.getComputerID() and sReplyChannel == CHANNEL_GPS and nDistance then -- Received the correct message from the correct modem: use it to determine position - if type(tMessage) == "table" and #tMessage == 3 then + if type(tMessage) == "table" and #tMessage == 3 and type(tMessage[1]) == "number" and type(tMessage[2]) == "number" and type(tMessage[3]) == "number" then local tFix = { vPosition = vector.new( tMessage[1], tMessage[2], tMessage[3] ), nDistance = nDistance } if _bDebug then print( tFix.nDistance.." metres from "..tostring( tFix.vPosition ) ) diff --git a/src/main/resources/assets/computercraft/lua/rom/apis/vector b/src/main/resources/assets/computercraft/lua/rom/apis/vector index e5d1a981a..29b10e500 100644 --- a/src/main/resources/assets/computercraft/lua/rom/apis/vector +++ b/src/main/resources/assets/computercraft/lua/rom/apis/vector @@ -76,9 +76,9 @@ local vmetatable = { function new( x, y, z ) local v = { - x = x or 0, - y = y or 0, - z = z or 0 + x = type(x) == "number" and x or 0, + y = type(y) == "number" and y or 0, + z = type(z) == "number" and z or 0 } setmetatable( v, vmetatable ) return v