(float)(ps->next() % ar.Z) + 0.5
);
+ int notifytype = large_cave ? GENNOTIFY_LARGECAVE_BEGIN : GENNOTIFY_CAVE_BEGIN;
+ if (mg->gennotify & (1 << notifytype)) {
+ std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
+ nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
+ }
+
// Generate some tunnel starting from orp
for (u16 j = 0; j < tunnel_routepoints; j++)
makeTunnel(j % dswitchint == 0);
+
+ notifytype = large_cave ? GENNOTIFY_LARGECAVE_END : GENNOTIFY_CAVE_END;
+ if (mg->gennotify & (1 << notifytype)) {
+ std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
+ nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
+ }
}
(float)(ps->next() % ar.Z) + 0.5
);
+ int notifytype = large_cave ? GENNOTIFY_LARGECAVE_BEGIN : GENNOTIFY_CAVE_BEGIN;
+ if (mg->gennotify & (1 << notifytype)) {
+ std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
+ nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
+ }
+
// Generate some tunnel starting from orp
for (u16 j = 0; j < tunnel_routepoints; j++)
makeTunnel(j % dswitchint == 0);
+
+ notifytype = large_cave ? GENNOTIFY_LARGECAVE_END : GENNOTIFY_CAVE_END;
+ if (mg->gennotify & (1 << notifytype)) {
+ std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
+ nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
+ }
}
v3s16 p(cp.X + x0, cp.Y + y0, cp.Z + z0);
p += of;
- if (!is_ravine && mg->heightmap && should_make_cave_hole) {
+ if (!is_ravine && mg->heightmap && should_make_cave_hole &&
+ p.X <= node_max.X && p.Z <= node_max.Z) {
int maplen = node_max.X - node_min.X + 1;
int idx = (p.Z - node_min.Z) * maplen + (p.X - node_min.X);
if (p.Y >= mg->heightmap[idx] - 2)