Jump to content

[1.10.2] Generating common structures in forests


JimiIT92

Recommended Posts

Not actually a problem, i need a help to figure out how to generate common structures in forests that fits with the forest itself. So the structure is actually generated on the solid ground, not in water, not in air. Right now to do this i got this check in the function that loads my structure

flag = true;
			if(check) {
				for (int i = 0; i < 16; i++) {
					for (int j = 0; j < 16; j++) {
						if (!world.getBlockState(pos.add(i, -1, j)).getBlock().equals(Blocks.GRASS)) {
							flag = false;
							break;
						}
					}
				}
			}


			if (flag) {
//place the structure}

 

So here i'm saying that if an area of 16x16 blocks in the forest is made of grass than spawn the structure. But, as you might guess, in the forest is really hard to have flat plains area, and this results in the structure being pretty rare. So how can i do to make the structure generate in a proper way BUT let it not be too rare?

Don't blame me if i always ask for your help. I just want to learn to be better :)

Link to comment
Share on other sites

I'd recommend that you only check the "corners" of this area. If there are blocks inside this area, remove them. If there's a hole between & below these points, fill them in.

Also previously known as eAndPi.

"Pi, is there a station coming up where we can board your train of thought?" -Kronnn

Published Mods: Underworld

Handy links: Vic_'s Forge events Own WIP Tutorials.

Link to comment
Share on other sites

I've actually managed to do this, but i guess i'llchange it to check the corners

boolean flag = true;
			HashMap<BlockPos, Integer> nograss = new HashMap<BlockPos, Integer>();

			for (int i = 0; i < template.getSize().getX(); i++) {
				for (int j = 0; j < template.getSize().getZ(); j++) {
					BlockPos down = pos.add(i, -1, j);
					Block b = world.getBlockState(down).getBlock();
					if (!b.equals(Blocks.GRASS)) {
						nograss.put(down, 0);
					}
				}
			}

			if (!nograss.isEmpty()) {
				for(Entry<BlockPos, Integer> entry : nograss.entrySet()) {
					BlockPos top = world.getTopSolidOrLiquidBlock(entry.getKey());
					if(Math.abs(top.getY() - entry.getKey().getY()) > 3) {
						flag = false;
						break;
					}
					else
						entry.setValue(Math.abs(top.getY() - entry.getKey().getY()));
				}
				if(flag) {
					for(Entry<BlockPos, Integer> entry : nograss.entrySet()) {
							for(int i = 0; i < entry.getValue()+1; i++) {
								world.setBlockState(entry.getKey().down(i), Blocks.COBBLESTONE.getDefaultState());
						}
					}

				}
			}

			if (flag) { //do stuff
}

 

So what i do is: check all the blocks, if there are some blocks that don't have grass under them then add it's position to an HashMap. Then, if this HashMap is not empty check if the location of the structure (the blocks that made the base and are in the HashMap) are at most 3 blocks up from the ground. If there is at least one that is up more than 3 blocks then the structure will not generate. Else, every block that has not grass underneath is at most 3 blocks up from the ground, so place 3 blocks of cobblestone down to the ground, so it will looks like the structure has some layers of cobblestone and then the structure itself (mostly like villages sometimes generates)

Don't blame me if i always ask for your help. I just want to learn to be better :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Ngamenslot adalah pilihan terbaik bagi Anda yang mencari situs terpercaya untuk bermain slot dan taruhan bola. Berikut adalah beberapa alasan mengapa Anda harus memilih Ngamenslot: Kombinasi Slot & Bola Kami menyajikan kombinasi terbaik antara permainan slot yang seru dan taruhan bola yang menegangkan. Dengan pilihan permainan yang beragam, setiap pemain dapat menikmati pengalaman bermain yang unik dan menyenangkan. Transaksi Mudah melalui Bank Ekonomi Kami menyediakan layanan transaksi yang mudah dan aman melalui Bank Ekonomi. Dengan dukungan dari sistem pembayaran yang terpercaya, Anda dapat melakukan deposit dan penarikan dana dengan cepat dan tanpa hambatan. Terpercaya dan Terjamin Ngamenslot telah terbukti sebagai situs terpercaya dengan ribuan pemain yang puas. Kami mengutamakan keamanan dan kenyamanan para pemain, sehingga Anda dapat bermain dengan tenang dan fokus pada permainan.  
    • Tambang88 adalah pilihan terbaik bagi Anda yang mencari pengalaman bermain slot gacor dengan transaksi mudah menggunakan Bank Sinarmas. Berikut adalah beberapa alasan mengapa Anda harus memilih Tambang88: Raja Slot Gacor Kami merupakan raja slot gacor dengan koleksi permainan terbaik yang menawarkan kesenangan bermain dan peluang kemenangan besar. Dengan fitur-fitur unggulan dan tema-tema menarik, setiap putaran permainan akan memberikan Anda pengalaman yang tak terlupakan. Transaksi Mudah dengan Bank Sinarmas Kami menyediakan layanan transaksi mudah melalui Bank Sinarmas untuk kenyamanan dan keamanan Anda. Dengan proses yang cepat dan efisien, Anda dapat melakukan deposit dan penarikan dana dengan lancar dan tanpa hambatan. Profesional dan Menguntungkan Tambang88 mengutamakan profesionalitas dalam memberikan layanan kepada para pemainnya. Kami juga menawarkan kesempatan untuk meraih keuntungan yang besar dengan jackpot dan hadiah-hadiah menarik lainnya.    
    • TRIK POLA SL0T GAC0R MAHJONG WAYS 1 DAN 2 HARI INI Sekarang Anda dapat meningkatkan peluang Bermain dengan langsung menggunakan situs resmi dari permainan Mahjong (PG SOFT). Cukup daftar dan siapkan hanya mulai dari 50K hingga 200K, Anda sudah memiliki peluang untuk memenangkan hadiah besar. Jika tidak memiliki dana sebanyak itu, Anda dapat mencoba dengan dana 50K dan memanfaatkan bonus member baru untuk menambah modal. Berikut adalah Situs Resmi Mahjong yang dapat Anda kunjungi: >> SITUS RESMI MAHJONG YANG TERBUKTI << >> SITUS RESMI MAHJONG YANG TERBUKTI << Setelah mendaftar, Anda dapat menggunakan pola yang sering saya gunakan: 🔥 25 Manual TURBO OFF 🔥 15 Manual TURBO ON 🔥 30 Auto TURBO OFF 🔥 10 Manual TURBO ON Pola ini biasanya memberikan hasil yang konsisten.
    • OLO4D adalah pilihan terbaik bagi Anda yang mencari pengalaman bermain slot gacor dengan transaksi mudah menggunakan Bank Bukopin. Berikut adalah beberapa alasan mengapa Anda harus memilih OLO4D: Slot Gacor Terbaik Kami menyajikan koleksi slot gacor terbaik yang menawarkan kesenangan bermain dan peluang kemenangan besar. Dengan fitur-fitur unggulan dan tema-tema menarik, setiap putaran permainan akan memberikan Anda pengalaman yang tak terlupakan. Transaksi Mudah dengan Bank Bukopin Kami menyediakan layanan transaksi mudah melalui Bank Bukopin untuk kenyamanan dan keamanan Anda. Dengan proses yang cepat dan efisien, Anda dapat melakukan deposit dan penarikan dana dengan lancar dan tanpa hambatan. Pasti Jackpot OLO4D memberikan jaminan bahwa setiap pemain pasti mendapatkan jackpot. Dengan peluang kemenangan yang tinggi, setiap putaran permainan bisa menjadi peluang untuk meraih keberuntungan besar.  
    • Balon168: Gampang Banjir Scatter Hitam Malam Ini Balon168 telah menjadi sorotan dalam dunia perjudian online, dan ada alasan kuat mengapa pemain semakin tertarik. Salah satu permainan unggulannya, yang dikenal dengan tingkat kemenangan yang tinggi, adalah varian "Gampang Banjir Scatter Hitam Malam Ini". Mari kita selami lebih dalam mengenai fenomena ini. Balon168: Destinasi Utama bagi Pecinta Slot     DAFTAR SEKARANG LINK VIP MAXWIN  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.