Procedural

ToyBox Procedural Plugin – v1.1 (POTATO PC & MOBILE OPTIMIZED)

/**
 * ToyBox Procedural Plugin - v1.1 (POTATO PC & MOBILE OPTIMIZED)
 * Extension for ToyBox Core.
 * Style: Randomized themes on every click.
 */
const TB_GEN = (function() {

	// Internal Helper: Uses Core TB.spawnVoxel
	const spawn = (x, y, z, c, s, h) => {
		if (typeof TB !== 'undefined') {
			// We set saveHistory to false during loops to save RAM/CPU
			TB.spawnVoxel(x, y, z, c, s, false, "gen_group", h);
		}
	};

	return {
		terrain: function(size = 15) { // Reduced default size for mobile safety (30x30 grid)
			console.log("Generating Lite Terrain...");

			// STYLE RANDOMIZER
			const styles = [
				{ c: 3, freq: 0.2, amp: 2 },  // Grasslands (Green)
				{ c: 1, freq: 0.4, amp: 3 },  // Desert Peaks (Orange)
				{ c: 10, freq: 0.1, amp: 1 }, // Snow Plains (White)
				{ c: 13, freq: 0.3, amp: 4 }, // Dark Mountains (Slate)
				{ c: 5, freq: 0.5, amp: 2 }   // Crystal Reef (Cyan/Transparent)
			];
			const theme = styles[Math.floor(Math.random() * styles.length)];
			const seed = Math.random() * 50;
			const grid = 1.0;

			for (let x = -size; x < size; x++) {
				for (let z = -size; z < size; z++) {
					// Optimized Math: Lower frequency noise
					const y = Math.round(
						Math.sin(x * theme.freq + seed) *
						Math.cos(z * theme.freq + seed) * theme.amp
					);

					// Skip blocks below ground to save memory
					if (y < -1) continue;

					spawn(x * grid, y, z * grid, theme.c, grid, grid);
				}
			}
			TB.saveGame(); // Final save
		},

		maze: function(size = 12) { // Small size is much faster for pathfinding/mobile
			console.log("Generating Lite Maze...");

			// STYLE RANDOMIZER
			const wallColors = [13, 12, 0, 7]; // Slate, Blue, Red, Purple
			const color = wallColors[Math.floor(Math.random() * wallColors.length)];
			const wallHeight = Math.random() > 0.5 ? 2 : 1;
			const density = 0.6 + (Math.random() * 0.2); // Random wall frequency

			for (let x = -size; x < size; x++) {
				for (let z = -size; z < size; z++) {
					// Logic: Create paths by checking grid modulo
					if (x % 2 === 0 || z % 2 === 0) {
						if (Math.random() > density) {
							spawn(x, wallHeight / 2, z, color, 1, wallHeight);
						}
					}
				}
			}
			TB.saveGame();
		}
	};
})();