Fixes, structures, removed glow

This commit is contained in:
paulevsGitch 2020-11-09 00:03:48 +03:00
parent beab6ce10a
commit 687def43d1
15 changed files with 140 additions and 103 deletions

View file

@ -139,7 +139,7 @@ public class EndBlocks {
// Wall Plants //
public static final Block PURPLE_POLYPORE = registerBlock("purple_polypore", new BlockWallMushroom(13));
public static final Block TAIL_MOSS = registerBlock("tail_moss", new BlockWallPlant());
public static final Block CYAN_MOSS = registerBlock("cyan_moss", new BlockWallPlant(13));
public static final Block CYAN_MOSS = registerBlock("cyan_moss", new BlockWallPlant());
// Crops //
public static final Block SHADOW_BERRY = registerBlock("shadow_berry", new BlockShadowBerry());

View file

@ -24,6 +24,7 @@ import net.minecraft.world.WorldAccess;
import ru.betterend.blocks.BlockBlueVine;
import ru.betterend.blocks.basis.BlockDoublePlant;
import ru.betterend.blocks.basis.BlockGlowingFur;
import ru.betterend.blocks.basis.BlockVine;
import ru.betterend.registry.EndBlocks;
import ru.betterend.registry.EndTags;
@ -147,6 +148,8 @@ public class BlocksHelper {
doubleCheck.add(POS.toImmutable());
}
if (!state.canPlaceAt(world, POS)) {
// Chorus
if (state.isOf(Blocks.CHORUS_PLANT)) {
Set<BlockPos> ends = Sets.newHashSet();
@ -174,6 +177,13 @@ public class BlocksHelper {
add.clear();
}
}
// Vines
else if (state.getBlock() instanceof BlockVine) {
while (world.getBlockState(POS).getBlock() instanceof BlockVine) {
setWithoutUpdate(world, POS, AIR);
POS.setY(POS.getY() - 1);
}
}
// Liquids
else if (!state.getFluidState().isEmpty()) {
POS.setY(y - 1);
@ -232,7 +242,7 @@ public class BlocksHelper {
}
}
// Blocks without support
else if (!state.canPlaceAt(world, POS)) {
else {
// Blue Vine
if (state.getBlock() instanceof BlockBlueVine) {
while (state.isOf(EndBlocks.BLUE_VINE) || state.isOf(EndBlocks.BLUE_VINE_LANTERN) || state.isOf(EndBlocks.BLUE_VINE_FUR)) {
@ -263,6 +273,7 @@ public class BlocksHelper {
}
}
}
}
doubleCheck.forEach((pos) -> {
if (!world.getBlockState(pos).canPlaceAt(world, pos)) {

View file

@ -95,12 +95,12 @@ public abstract class NBTStructureFeature extends DefaultFeature {
structure.place(world, center, placementData, random);
TerrainMerge merge = getTerrainMerge(world, center, random);
if (merge != TerrainMerge.NONE) {
Mutable mut = new Mutable();
int x1 = center.getX();
int z1 = center.getZ();
int x2 = x1 + offset.getX();
int z2 = z1 + offset.getZ();
if (merge != TerrainMerge.NONE) {
Mutable mut = new Mutable();
if (x2 < x1) {
int a = x1;
@ -119,10 +119,10 @@ public abstract class NBTStructureFeature extends DefaultFeature {
mut.setX(x);
for (int z = z1; z <= z2; z++) {
mut.setZ(z);
mut.setY(posY);
mut.setY(surfMax);
BlockState state = world.getBlockState(mut);
if (!state.isIn(EndTags.GEN_TERRAIN) && state.isSideSolidFullSquare(world, mut, Direction.DOWN)) {
for (int i = 0; i < 10; i--) {
for (int i = 0; i < 10; i++) {
mut.setY(mut.getY() - 1);
BlockState stateSt = world.getBlockState(mut);
if (!stateSt.isIn(EndTags.GEN_TERRAIN)) {
@ -153,6 +153,7 @@ public abstract class NBTStructureFeature extends DefaultFeature {
}
}
}
BlocksHelper.fixBlocks(world, new BlockPos(x1, center.getY(), z1), new BlockPos(x2, center.getY() + offset.getY(), z2));
return true;
}

View file

@ -31,14 +31,26 @@ public class DragonTreeBushFeature extends DefaultFeature {
if (world.getBlockState(pos.down()).getBlock() != EndBlocks.SHADOW_GRASS) return false;
BlockState leaves = EndBlocks.DRAGON_TREE_LEAVES.getDefaultState().with(LeavesBlock.DISTANCE, 1);
float radius = MHelper.randRange(1.8F, 4.5F, random);
float radius = MHelper.randRange(1.8F, 3.5F, random);
OpenSimplexNoise noise = new OpenSimplexNoise(random.nextInt());
SDF sphere = new SDFSphere().setRadius(radius).setBlock(EndBlocks.DRAGON_TREE_LEAVES.getDefaultState().with(LeavesBlock.DISTANCE, 1));
sphere = new SDFScale3D().setScale(1, 0.5F, 1).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> { return (float) noise.eval(vec.getX() * 0.2, vec.getY() * 0.2, vec.getZ() * 0.2) * 3; }).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> { return random.nextFloat() * 3F - 1.5F; }).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> { return MHelper.randRange(-2F, 2F, random); }).setSource(sphere);
sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(new SDFTranslate().setTranslate(0, -radius, 0).setSource(sphere));
sphere.setReplaceFunction(REPLACE);
sphere.setPostProcess((info) -> {
if (info.getState().getBlock() instanceof LeavesBlock) {
int distance = info.getPos().getManhattanDistance(pos);
if (distance < 7) {
return info.getState().with(LeavesBlock.DISTANCE, distance);
}
else {
return AIR;
}
}
return info.getState();
});
sphere.fillRecursive(world, pos);
BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.DRAGON_TREE.bark);
for (Direction d: Direction.values()) {

View file

@ -1,3 +1,3 @@
{
"defaultMaterial": "betterend:waving_wall_glow_inc"
"defaultMaterial": "betterend:waving_wall"
}

View file

@ -0,0 +1,13 @@
{
"structures": [
{ "nbt": "fallen_tree_1", "offsetY": 0, "terrainMerge": "object" },
{ "nbt": "fallen_tree_2", "offsetY": 0, "terrainMerge": "object" },
{ "nbt": "stump_1", "offsetY": 0, "terrainMerge": "object" },
{ "nbt": "stump_2", "offsetY": 0, "terrainMerge": "object" },
{ "nbt": "library", "offsetY": 0, "terrainMerge": "surface" },
{ "nbt": "ruins_1", "offsetY": 0, "terrainMerge": "surface" },
{ "nbt": "ruins_2", "offsetY": 0, "terrainMerge": "surface" },
{ "nbt": "ruins_3", "offsetY": 0, "terrainMerge": "surface" },
{ "nbt": "tree_house", "offsetY": 0, "terrainMerge": "surface" }
]
}