	public void run() {
		final TInt21TripleObjectHashMap worldRegistry = this.worldRegistry.get(world);
		if (worldRegistry == null) {
			return;
		}
		if (pastTime == 0) {
			pastTime = System.currentTimeMillis() / 1000;
		}
		final long localTime = System.currentTimeMillis() / 1000;
		final long delta = localTime - pastTime;
		pastTime = localTime;
		worldRegistry.getInternalMap().forEachEntry(new TLongObjectProcedure() {
			@Override
			public boolean execute(long l, Object o) {
				final Sprout sprout = (Sprout) o;
				if (sprout.isFullyGrown()) {
					return true;
				}
				final Stage current = sprout.getCurrentStage();
				if (current == null) {
					((SimpleSprout) sprout).grow((int) delta);
					return true;
				}
				if (RANDOM.nextInt(current.getGrowthChance() - 1 + 1) + 1 != current.getGrowthChance()) {
					return true;
				}
				((SimpleSprout) sprout).grow((int) delta);
				final int x = Int21TripleHashed.key1(l);
				final int y = Int21TripleHashed.key2(l);
				final int z = Int21TripleHashed.key3(l);
				final Block block = Bukkit.getWorld(world).getBlockAt(x, y, z);
				if (!block.getChunk().isLoaded()) {
					return true;
				}
				final CustomBlock customBlock = MaterialData.getCustomBlock(current.getName());
				if (customBlock == null) {
					return true;
				}
				((SpoutBlock) block).setCustomBlock(customBlock);
				return true;
			}
		});
	}

	public void run() {
		final TInt21TripleObjectHashMap worldRegistry = this.worldRegistry.get(world);
		if (worldRegistry == null) {
			return;
		}
		if (pastTime == 0) {
			pastTime = System.currentTimeMillis() / 1000;
		}
		final long localTime = System.currentTimeMillis() / 1000;
		final long delta = localTime - pastTime;
		pastTime = localTime;
		worldRegistry.getInternalMap().forEachEntry(new TLongObjectProcedure() {
			@Override
			public boolean execute(long l, Object o) {
				final Sprout sprout = (Sprout) o;
				final Stage current = sprout.getCurrentStage();
				if (current == null) {
					((SimpleSprout) sprout).grow((int) delta);
					return true;
				}
				if (RANDOM.nextInt(current.getGrowthChance() - 1 + 1) + 1 != current.getGrowthChance()) {
					return true;
				}
				((SimpleSprout) sprout).grow((int) delta);
				final int x = Int21TripleHashed.key1(l);
				final int y = Int21TripleHashed.key2(l);
				final int z = Int21TripleHashed.key3(l);
				final Block block = Bukkit.getWorld(world).getBlockAt(x, y, z);
				if (!block.getChunk().isLoaded()) {
					return true;
				}
				final CustomBlock customBlock = MaterialData.getCustomBlock(current.getName());
				if (customBlock == null) {
					return true;
				}
				((SpoutBlock) block).setCustomBlock(customBlock);
				return true;
			}
		});
	}
