Water disabling structures from spawning?

Published by AOCAWOL on
Status
Resolved
Issue description

Hi so similar to my problem with Snow disabling structures from spawning in my biomes in 1.9.0, now when I loaded up mcreator 1.9.1 any biomes where the tree structures are restricted to water blocks (still or flowing) they don't spawn? 

Issue comments

I will check this out. Most likely this is happening because replaceable blocks are ignored when detecting ground blocks.

Anyway this could be added in a patch fix or something? It's just, I'm sapose to launch my update.by the end of October and it's gonna take you guys a long time to do the next update. Or if not could u show me a way to fix this in the code possibly or something? It's really messed up like 10 of my biomes and I really wanna get working on this update.

If there are any other bugs, I might release another patch.

In the code, find lines containing this code in structure element:

world.getBlockState(new BlockPos(i, height, k)).getBlock().isReplaceable(world, new BlockPos(i, height, k)

and rewrite if statement to not include this statement, for example, change

if (!world.isAirBlock(new BlockPos(i, height, k)) && !world.getBlockState(new BlockPos(i, height, k)).getBlock().isReplaceable(world, new BlockPos(i, height, k)))

to

if (!world.isAirBlock(new BlockPos(i, height, k)))

this should do it.

So I got this error

C:\Users\Username\MCreatorWorkspaces\biomesyougo\build\sources\main\java\net\mcreator\byg\MCreatorMangroveTree1.java:42: error: ')' expected
                            && (world.isAirBlock(new BlockPos(i, height, k))) 
                                                                             ^
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 19s

Why is there &&?

I meant to only place:

if (!world.isAirBlock(new BlockPos(i, height, k)))

You may paste code around line 42 too.

Here is the default code:

                boolean notpassed = true;
                while (height > 0) {
                    if (notpassed
                            && (world.isAirBlock(new BlockPos(i, height, k)) || world.getBlockState(new BlockPos(i, height, k)).getBlock()
                                    .isReplaceable(world, new BlockPos(i, height, k))))
                        notpassed = false;
                    else if (!notpassed && !world.isAirBlock(new BlockPos(i, height, k))
                            && !world.getBlockState(new BlockPos(i, height, k)).getBlock().isReplaceable(world, new BlockPos(i, height, k)))
                        break;
                    height--;
                }
            } else {
                while (height > 0) {
                    if (!world.isAirBlock(new BlockPos(i, height, k))
                            && !world.getBlockState(new BlockPos(i, height, k)).getBlock().isReplaceable(world, new BlockPos(i, height, k)))
                        break;
                    height--;
                }
            }

 

the && is part of the default code, I simply removed || world.getBlockState(new BlockPos(i, height, k)).getBlock()
                                    .isReplaceable(world, new BlockPos(i, height, k)))) leaving just && (world.isAirBlock(new BlockPos(i, height, k))) but then it gave me an error

Try this:


            } else {
                while (height > 0) {
                    if (!world.isAirBlock(new BlockPos(i, height, k)))
                        break;
                    height--;
                }
            }