diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index 5fe39b1b..8daf1dcb 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -241,17 +241,22 @@ void ContentLoader::loadBlock( // block light emission [r, g, b] where r,g,b in range [0..15] if (auto found = root.at("emission")) { const auto& emissionarr = *found; - def.emission[0] = emissionarr[0].asNumber(); - def.emission[1] = emissionarr[1].asNumber(); - def.emission[2] = emissionarr[2].asNumber(); + def.emission[0] = emissionarr[0].asInteger(); + def.emission[1] = emissionarr[1].asInteger(); + def.emission[2] = emissionarr[2].asInteger(); } // block size if (auto found = root.at("size")) { const auto& sizearr = *found; - def.size.x = sizearr[0].asNumber(); - def.size.y = sizearr[1].asNumber(); - def.size.z = sizearr[2].asNumber(); + def.size.x = sizearr[0].asInteger(); + def.size.y = sizearr[1].asInteger(); + def.size.z = sizearr[2].asInteger(); + if (def.size.x < 1 || def.size.y < 1 || def.size.z < 1) { + throw std::runtime_error( + "block " + util::quote(def.name) + ": invalid block size" + ); + } if (def.model == BlockModel::block && (def.size.x != 1 || def.size.y != 1 || def.size.z != 1)) { def.model = BlockModel::aabb;