diff --git a/assets/cubyz/blocks/amber_ore.zig.zon b/assets/cubyz/blocks/amber_ore.zig.zon index 253565f57f..334ec35a5e 100644 --- a/assets/cubyz/blocks/amber_ore.zig.zon +++ b/assets/cubyz/blocks/amber_ore.zig.zon @@ -30,6 +30,7 @@ .maxHeight = -1250, .minHeight = -8000, .density = 0.15, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/basalt/rough.zig.zon b/assets/cubyz/blocks/basalt/rough.zig.zon index 6cb95299a0..53d87d935d 100644 --- a/assets/cubyz/blocks/basalt/rough.zig.zon +++ b/assets/cubyz/blocks/basalt/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:basalt/rough", diff --git a/assets/cubyz/blocks/basalt/smooth.zig.zon b/assets/cubyz/blocks/basalt/smooth.zig.zon index b51c85d771..0c81796fd4 100644 --- a/assets/cubyz/blocks/basalt/smooth.zig.zon +++ b/assets/cubyz/blocks/basalt/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:basalt/smooth", diff --git a/assets/cubyz/blocks/coal_ore.zig.zon b/assets/cubyz/blocks/coal_ore.zig.zon index 272152d6a7..ad662a839c 100644 --- a/assets/cubyz/blocks/coal_ore.zig.zon +++ b/assets/cubyz/blocks/coal_ore.zig.zon @@ -7,6 +7,7 @@ .size = 100, .maxHeight = 500, .density = 0.5, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/copper_ore.zig.zon b/assets/cubyz/blocks/copper_ore.zig.zon index 13c756052d..ba66a9256e 100644 --- a/assets/cubyz/blocks/copper_ore.zig.zon +++ b/assets/cubyz/blocks/copper_ore.zig.zon @@ -8,6 +8,7 @@ .maxHeight = 20, .minHeight = -400, .density = 0.25, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/diamond_ore.zig.zon b/assets/cubyz/blocks/diamond_ore.zig.zon index 212f2570ed..756a7537de 100644 --- a/assets/cubyz/blocks/diamond_ore.zig.zon +++ b/assets/cubyz/blocks/diamond_ore.zig.zon @@ -7,6 +7,7 @@ .size = 6, .maxHeight = -1000, .density = 0.1, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/ferrock/rough.zig.zon b/assets/cubyz/blocks/ferrock/rough.zig.zon index 1a246344ac..8bd8547980 100644 --- a/assets/cubyz/blocks/ferrock/rough.zig.zon +++ b/assets/cubyz/blocks/ferrock/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .model = "cubyz:cube", .rotation = "cubyz:stairs", .texture = "cubyz:ferrock/rough", diff --git a/assets/cubyz/blocks/ferrock/smooth.zig.zon b/assets/cubyz/blocks/ferrock/smooth.zig.zon index e2680d7fe4..498315c971 100644 --- a/assets/cubyz/blocks/ferrock/smooth.zig.zon +++ b/assets/cubyz/blocks/ferrock/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .model = "cubyz:cube", .rotation = "cubyz:stairs", .texture = "cubyz:ferrock/smooth", diff --git a/assets/cubyz/blocks/glacite/rough.zig.zon b/assets/cubyz/blocks/glacite/rough.zig.zon index 7f0acb3350..cd4ecb9a54 100644 --- a/assets/cubyz/blocks/glacite/rough.zig.zon +++ b/assets/cubyz/blocks/glacite/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:glacite/rough", diff --git a/assets/cubyz/blocks/glacite/smooth.zig.zon b/assets/cubyz/blocks/glacite/smooth.zig.zon index 4839b95b59..3e2554e0d4 100644 --- a/assets/cubyz/blocks/glacite/smooth.zig.zon +++ b/assets/cubyz/blocks/glacite/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:glacite/smooth", diff --git a/assets/cubyz/blocks/gold_ore.zig.zon b/assets/cubyz/blocks/gold_ore.zig.zon index a36a262a33..02947af4b3 100644 --- a/assets/cubyz/blocks/gold_ore.zig.zon +++ b/assets/cubyz/blocks/gold_ore.zig.zon @@ -7,6 +7,7 @@ .size = 12, .maxHeight = -2000, .density = 0.25, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/iron_ore.zig.zon b/assets/cubyz/blocks/iron_ore.zig.zon index dabb73b56e..5598885248 100644 --- a/assets/cubyz/blocks/iron_ore.zig.zon +++ b/assets/cubyz/blocks/iron_ore.zig.zon @@ -7,6 +7,7 @@ .size = 20, .maxHeight = -600, .density = 0.25, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/jade_ore.zig.zon b/assets/cubyz/blocks/jade_ore.zig.zon index cd1738c504..df83ea0a56 100644 --- a/assets/cubyz/blocks/jade_ore.zig.zon +++ b/assets/cubyz/blocks/jade_ore.zig.zon @@ -29,6 +29,7 @@ .size = 4, .minHeight = 350, .density = 0.3, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/kamacite.zig.zon b/assets/cubyz/blocks/kamacite.zig.zon index b1b049602b..c3abd5d7a4 100644 --- a/assets/cubyz/blocks/kamacite.zig.zon +++ b/assets/cubyz/blocks/kamacite.zig.zon @@ -1,11 +1,10 @@ .{ - .tags = .{.stone, .mineable}, + .tags = .{.stone, .mineable, .allowOres}, .blockHealth = 25, .blockResistance = 7, .drops = .{ .{.items = .{.auto}}, }, - .allowOres = true, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:kamacite", diff --git a/assets/cubyz/blocks/limestone/rough.zig.zon b/assets/cubyz/blocks/limestone/rough.zig.zon index 78c664f17f..56017d03bd 100644 --- a/assets/cubyz/blocks/limestone/rough.zig.zon +++ b/assets/cubyz/blocks/limestone/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:limestone/rough", diff --git a/assets/cubyz/blocks/limestone/smooth.zig.zon b/assets/cubyz/blocks/limestone/smooth.zig.zon index c0c36229ee..6cc7d82378 100644 --- a/assets/cubyz/blocks/limestone/smooth.zig.zon +++ b/assets/cubyz/blocks/limestone/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:limestone/smooth", diff --git a/assets/cubyz/blocks/marble/rough.zig.zon b/assets/cubyz/blocks/marble/rough.zig.zon index 9b9a6d785c..7ce66f2912 100644 --- a/assets/cubyz/blocks/marble/rough.zig.zon +++ b/assets/cubyz/blocks/marble/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:marble/rough", diff --git a/assets/cubyz/blocks/marble/smooth.zig.zon b/assets/cubyz/blocks/marble/smooth.zig.zon index f781f096b9..69231bc8b5 100644 --- a/assets/cubyz/blocks/marble/smooth.zig.zon +++ b/assets/cubyz/blocks/marble/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:marble/smooth", diff --git a/assets/cubyz/blocks/nimbusite/rough.zig.zon b/assets/cubyz/blocks/nimbusite/rough.zig.zon index aca412fd62..7a2a05b1ab 100644 --- a/assets/cubyz/blocks/nimbusite/rough.zig.zon +++ b/assets/cubyz/blocks/nimbusite/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:nimbusite/rough", diff --git a/assets/cubyz/blocks/nimbusite/smooth.zig.zon b/assets/cubyz/blocks/nimbusite/smooth.zig.zon index f7ecb05697..26d5878479 100644 --- a/assets/cubyz/blocks/nimbusite/smooth.zig.zon +++ b/assets/cubyz/blocks/nimbusite/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:nimbusite/smooth", diff --git a/assets/cubyz/blocks/obsidian.zig.zon b/assets/cubyz/blocks/obsidian.zig.zon index 4ece98fa0a..d077681641 100644 --- a/assets/cubyz/blocks/obsidian.zig.zon +++ b/assets/cubyz/blocks/obsidian.zig.zon @@ -1,5 +1,5 @@ .{ - .tags = .{.mineable}, + .tags = .{.mineable, .allowOres}, .blockHealth = 16, .blockResistance = 2, .drops = .{ @@ -21,7 +21,6 @@ }, }, }, - .allowOres = true, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:obsidian", diff --git a/assets/cubyz/blocks/pyrolite/rough.zig.zon b/assets/cubyz/blocks/pyrolite/rough.zig.zon index 99d319d3a8..28db25b6dc 100644 --- a/assets/cubyz/blocks/pyrolite/rough.zig.zon +++ b/assets/cubyz/blocks/pyrolite/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:pyrolite/rough", diff --git a/assets/cubyz/blocks/pyrolite/smooth.zig.zon b/assets/cubyz/blocks/pyrolite/smooth.zig.zon index 099fd04b1e..4ed8972e7c 100644 --- a/assets/cubyz/blocks/pyrolite/smooth.zig.zon +++ b/assets/cubyz/blocks/pyrolite/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:pyrolite/smooth", diff --git a/assets/cubyz/blocks/ruby_ore.zig.zon b/assets/cubyz/blocks/ruby_ore.zig.zon index 6f87fa442a..f2597323d5 100644 --- a/assets/cubyz/blocks/ruby_ore.zig.zon +++ b/assets/cubyz/blocks/ruby_ore.zig.zon @@ -33,6 +33,7 @@ .maxHeight = -5000, .minHeight = -15000, .density = 0.05, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/sandstone/rough.zig.zon b/assets/cubyz/blocks/sandstone/rough.zig.zon index ec17fa9acc..80eff996c2 100644 --- a/assets/cubyz/blocks/sandstone/rough.zig.zon +++ b/assets/cubyz/blocks/sandstone/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:sandstone/rough", diff --git a/assets/cubyz/blocks/sandstone/smooth.zig.zon b/assets/cubyz/blocks/sandstone/smooth.zig.zon index 19ba5d886a..c44666f6fd 100644 --- a/assets/cubyz/blocks/sandstone/smooth.zig.zon +++ b/assets/cubyz/blocks/sandstone/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:sandstone/smooth", diff --git a/assets/cubyz/blocks/silver_ore.zig.zon b/assets/cubyz/blocks/silver_ore.zig.zon index dd55878353..0abf9454b2 100644 --- a/assets/cubyz/blocks/silver_ore.zig.zon +++ b/assets/cubyz/blocks/silver_ore.zig.zon @@ -7,6 +7,7 @@ .size = 15, .maxHeight = -250, .density = 0.25, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/slate/smooth.zig.zon b/assets/cubyz/blocks/slate/smooth.zig.zon index 6bab30ea3d..6c3654c6f6 100644 --- a/assets/cubyz/blocks/slate/smooth.zig.zon +++ b/assets/cubyz/blocks/slate/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:slate/smooth", diff --git a/assets/cubyz/blocks/sulfur_ore.zig.zon b/assets/cubyz/blocks/sulfur_ore.zig.zon index ec50102cc2..723ecb9230 100644 --- a/assets/cubyz/blocks/sulfur_ore.zig.zon +++ b/assets/cubyz/blocks/sulfur_ore.zig.zon @@ -18,6 +18,7 @@ .size = 50, .maxHeight = -800, .density = 0.8, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/terracotta/rough.zig.zon b/assets/cubyz/blocks/terracotta/rough.zig.zon index ae464ec7de..cb5594ffdb 100644 --- a/assets/cubyz/blocks/terracotta/rough.zig.zon +++ b/assets/cubyz/blocks/terracotta/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:terracotta/rough", diff --git a/assets/cubyz/blocks/terracotta/smooth.zig.zon b/assets/cubyz/blocks/terracotta/smooth.zig.zon index fe5c0623a1..3fab7bd14d 100644 --- a/assets/cubyz/blocks/terracotta/smooth.zig.zon +++ b/assets/cubyz/blocks/terracotta/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:terracotta/smooth", diff --git a/assets/cubyz/blocks/uranium_ore.zig.zon b/assets/cubyz/blocks/uranium_ore.zig.zon index e8a2d6b3f1..2b208f6bcd 100644 --- a/assets/cubyz/blocks/uranium_ore.zig.zon +++ b/assets/cubyz/blocks/uranium_ore.zig.zon @@ -7,6 +7,7 @@ .size = 15, .maxHeight = -1500, .density = 0.4, + .targetTags = .{.allowOres}, }, .drops = .{ .{.items = .{.auto}}, diff --git a/assets/cubyz/blocks/voidstone/rough.zig.zon b/assets/cubyz/blocks/voidstone/rough.zig.zon index 2a4c761c3c..ed05ef250e 100644 --- a/assets/cubyz/blocks/voidstone/rough.zig.zon +++ b/assets/cubyz/blocks/voidstone/rough.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:voidstone/rough", diff --git a/assets/cubyz/blocks/voidstone/smooth.zig.zon b/assets/cubyz/blocks/voidstone/smooth.zig.zon index a8315ea94c..c3c4a0a373 100644 --- a/assets/cubyz/blocks/voidstone/smooth.zig.zon +++ b/assets/cubyz/blocks/voidstone/smooth.zig.zon @@ -1,5 +1,5 @@ .{ - .allowOres = true, + .tags = .{.allowOres}, .rotation = "cubyz:stairs", .model = "cubyz:cube", .texture = "cubyz:voidstone/smooth", diff --git a/src/blocks.zig b/src/blocks.zig index 97fd5751e1..66be6f7c46 100644 --- a/src/blocks.zig +++ b/src/blocks.zig @@ -136,7 +136,6 @@ var _density: [maxBlockCount]f32 = undefined; var _terminalVelocity: [maxBlockCount]f32 = undefined; var _mobility: [maxBlockCount]f32 = undefined; -var _allowOres: [maxBlockCount]bool = undefined; var _onTick: [maxBlockCount]ServerBlockCallback = undefined; var _onTouch: [maxBlockCount]BlockTouchCallback = undefined; var _blockEntity: [maxBlockCount]?*const BlockEntityType = undefined; @@ -190,7 +189,6 @@ pub fn register(_: []const u8, id: []const u8, zon: ZonElement) u16 { _density[size] = zon.get(f32, "density") orelse main.physics.airDensity; _terminalVelocity[size] = zon.get(f32, "terminalVelocity") orelse 90; _mobility[size] = zon.get(f32, "mobility") orelse 1.0; - _allowOres[size] = zon.get(bool, "allowOres") orelse false; _blockEntity[size] = block_entity.getByID(zon.get([]const u8, "blockEntity")); @@ -200,8 +198,6 @@ pub fn register(_: []const u8, id: []const u8, zon: ZonElement) u16 { std.log.err("Ore must have rotation mode \"cubyz:ore\"!", .{}); break :blk; } - const targetBlockTags = Tag.loadTagsFromZon(main.stackAllocator, oreProperties.getChild("targetTags")); - defer main.stackAllocator.free(targetBlockTags); ores.append(main.worldArena, .{ .veins = oreProperties.get(f32, "veins") orelse 0, .size = oreProperties.get(f32, "size") orelse 0, @@ -209,7 +205,19 @@ pub fn register(_: []const u8, id: []const u8, zon: ZonElement) u16 { .minHeight = oreProperties.get(i32, "minHeight") orelse std.math.minInt(i32), .density = oreProperties.get(f32, "density") orelse 0.5, .blockType = @intCast(size), - .targetTags = targetBlockTags, + .targetTags = switch (oreProperties.getChild("targetTags")) { + .array => |targetTags| Tag.loadTagsFromZon( + main.worldArena, + .{.array = targetTags}, + ), + else => |tag| { + std.log.err( + "Ore {s}: ore.targetTags must be an array, got {s}", + .{id, @tagName(tag)}, + ); + break :blk; + }, + }, .seed = std.hash.Wyhash.hash(0, id), }); } @@ -546,10 +554,6 @@ pub const Block = packed struct(u32) { // MARK: Block return _mobility[self.typ]; } - pub inline fn allowOres(self: Block) bool { - return _allowOres[self.typ]; - } - pub inline fn onTick(self: Block) ServerBlockCallback { return _onTick[self.typ]; } diff --git a/src/server/terrain/chunkgen/OreGenerator.zig b/src/server/terrain/chunkgen/OreGenerator.zig index 32ee278e73..a442b75ab1 100644 --- a/src/server/terrain/chunkgen/OreGenerator.zig +++ b/src/server/terrain/chunkgen/OreGenerator.zig @@ -103,7 +103,6 @@ fn considerCoordinates(ore: *const main.blocks.Ore, relX: f32, relY: f32, relZ: // Add some roughness. The ore density gets smaller at the edges: if ((1 - distSqr)*ore.density < random.nextFloat(&veinSeed)) continue; const stoneBlock = chunk.getBlock(curX, curY, curZ); - if (!stoneBlock.allowOres()) continue; for (ore.targetTags) |tag| { if (!stoneBlock.hasTag(tag)) { continue :outer;