diff --git a/src/main/java/ru/betterend/blocks/BlockVentBubbleColumn.java b/src/main/java/ru/betterend/blocks/BlockVentBubbleColumn.java index 7391c96b..f50a6b06 100644 --- a/src/main/java/ru/betterend/blocks/BlockVentBubbleColumn.java +++ b/src/main/java/ru/betterend/blocks/BlockVentBubbleColumn.java @@ -1,5 +1,6 @@ package ru.betterend.blocks; +import java.io.Reader; import java.util.Random; import net.fabricmc.api.EnvType; @@ -21,18 +22,22 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.registry.Registry; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; +import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndBlocks; import ru.betterend.util.BlocksHelper; -public class BlockVentBubbleColumn extends Block implements FluidDrainable, FluidFillable { +public class BlockVentBubbleColumn extends Block implements FluidDrainable, FluidFillable, BlockPatterned { public BlockVentBubbleColumn() { super(FabricBlockSettings.of(Material.BUBBLE_COLUMN).nonOpaque().noCollision().dropsNothing()); } @@ -120,4 +125,20 @@ public class BlockVentBubbleColumn extends Block implements FluidDrainable, Flui public FluidState getFluidState(BlockState state) { return Fluids.WATER.getStill(false); } + + @Override + public String getStatesPattern(Reader data) { + String block = Registry.BLOCK.getId(this).getPath(); + return Patterns.createJson(data, block, block); + } + + @Override + public String getModelPattern(String block) { + return Patterns.createJson(Patterns.BLOCK_EMPTY, "stone", "stone"); + } + + @Override + public Identifier statePatternId() { + return Patterns.STATE_SIMPLE; + } } diff --git a/src/main/java/ru/betterend/registry/EndFeatures.java b/src/main/java/ru/betterend/registry/EndFeatures.java index 6605cd69..78c611b1 100644 --- a/src/main/java/ru/betterend/registry/EndFeatures.java +++ b/src/main/java/ru/betterend/registry/EndFeatures.java @@ -81,7 +81,7 @@ public class EndFeatures { public static final EndFeature LANCELEAF = new EndFeature("lanceleaf", new LanceleafFeature(), 3); public static final EndFeature GLOW_PILLAR = new EndFeature("glow_pillar", new GlowPillarFeature(), 1); public static final EndFeature TWISTED_UMBRELLA_MOSS = new EndFeature("twisted_umbrella_moss", new DoublePlantFeature(EndBlocks.TWISTED_UMBRELLA_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS_TALL, 6), 5); - public static final EndFeature JUNGLE_GRASS = new EndFeature("jungle_grass", new CavePlantFeature(EndBlocks.JUNGLE_GRASS, 7), 8); + public static final EndFeature JUNGLE_GRASS = new EndFeature("jungle_grass", new SinglePlantFeature(EndBlocks.JUNGLE_GRASS, 7, 3), 8); // Vines // public static final EndFeature DENSE_VINE = new EndFeature("dense_vine", new VineFeature(EndBlocks.DENSE_VINE, 24), 3); diff --git a/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java b/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java index 0c931926..9a8cc656 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java +++ b/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java @@ -11,9 +11,15 @@ public class BiomeUmbrellaJungle extends EndBiome { .setFoliageColor(27, 183, 194) .setFogDensity(2.3F) .setSurface(EndBlocks.JUNGLE_MOSS) + .addFeature(EndFeatures.END_LAKE) .addFeature(EndFeatures.UMBRELLA_TREE) .addFeature(EndFeatures.TWISTED_UMBRELLA_MOSS) .addFeature(EndFeatures.JUNGLE_GRASS) - .addFeature(EndFeatures.END_LAKE)); + .addFeature(EndFeatures.CYAN_MOSS) + .addFeature(EndFeatures.CYAN_MOSS_WOOD) + .addFeature(EndFeatures.CHARNIA_CYAN) + .addFeature(EndFeatures.CHARNIA_GREEN) + .addFeature(EndFeatures.CHARNIA_LIGHT_BLUE) + .addFeature(EndFeatures.CHARNIA_RED_RARE)); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java b/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java index d86d9109..37982ad1 100644 --- a/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java @@ -10,6 +10,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.client.util.math.Vector3f; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; import net.minecraft.util.math.BlockPos.Mutable; import net.minecraft.util.math.MathHelper; import net.minecraft.world.StructureWorldAccess; @@ -124,14 +125,14 @@ public class UmbrellaTreeFeature extends DefaultFeature { for (Center c: centers) { if (!world.getBlockState(new BlockPos(c.px, c.py, c.pz)).isAir()) { - count = MHelper.floor(MHelper.randRange(1F, 5F, random) * scale); + count = MHelper.floor(MHelper.randRange(5F, 10F, random) * scale); float startAngle = random.nextFloat() * MHelper.PI2; for (int i = 0; i < count; i++) { float angle = (float) i / count * MHelper.PI2 + startAngle; - float dist = MHelper.randRange(1.8F, 3.4F, random) * scale; + float dist = MHelper.randRange(1.5F, 2.5F, random) * scale; double px = c.px + Math.sin(angle) * dist; double pz = c.pz + Math.cos(angle) * dist; - makeFruits(world, px, c.py - 1, pz, random, fruit, scale); + makeFruits(world, px, c.py - 1, pz, fruit, scale); } } } @@ -175,18 +176,16 @@ public class UmbrellaTreeFeature extends DefaultFeature { return sphere; } - private void makeFruits(StructureWorldAccess world, double px, double py, double pz, Random random, BlockState fruit, float scale) { - Mutable mut = new Mutable(); - int length = MHelper.floor(MHelper.randRange(1F, 5F, random) * scale + 0.5F); - for (int i = 0; i < length; i++) { - mut.setY(MHelper.floor(py - i)); - double radius = (1 - (double) i / length) * 0.5; - for (int j = 0; j < 2; j++) { - mut.setX(MHelper.floor(random.nextGaussian() * radius + px + 0.5)); - mut.setZ(MHelper.floor(random.nextGaussian() * radius + pz + 0.5)); - if (world.isAir(mut)) { + private void makeFruits(StructureWorldAccess world, double px, double py, double pz, BlockState fruit, float scale) { + Mutable mut = new Mutable().set(px, py, pz); + for (int i = 0; i < 8; i++) { + mut.move(Direction.DOWN); + if (world.isAir(mut)) { + BlockState state = world.getBlockState(mut.up()); + if (state.isOf(EndBlocks.UMBRELLA_TREE_MEMBRANE) && state.get(BlockUmbrellaTreeMembrane.COLOR) < 2) { BlocksHelper.setWithoutUpdate(world, mut, fruit); } + break; } } } diff --git a/src/main/resources/assets/betterend/blockstates/jungle_grass.json b/src/main/resources/assets/betterend/blockstates/jungle_grass.json index df61d348..ef0108d7 100644 --- a/src/main/resources/assets/betterend/blockstates/jungle_grass.json +++ b/src/main/resources/assets/betterend/blockstates/jungle_grass.json @@ -4,7 +4,15 @@ { "model": "betterend:block/jungle_grass_01" }, { "model": "betterend:block/jungle_grass_02" }, { "model": "betterend:block/jungle_grass_03" }, - { "model": "betterend:block/jungle_grass_04" } + { "model": "betterend:block/jungle_grass_04" }, + { "model": "betterend:block/jungle_grass_05" }, + { "model": "betterend:block/jungle_grass_06" }, + { "model": "betterend:block/jungle_grass_07" }, + { "model": "betterend:block/jungle_grass_08" }, + { "model": "betterend:block/jungle_grass_09" }, + { "model": "betterend:block/jungle_grass_10" }, + { "model": "betterend:block/jungle_grass_11" }, + { "model": "betterend:block/jungle_grass_12" } ] } } diff --git a/src/main/resources/assets/betterend/models/block/crop_block_inverted.json b/src/main/resources/assets/betterend/models/block/crop_block_inverted.json index b7794ac1..84d0e038 100644 --- a/src/main/resources/assets/betterend/models/block/crop_block_inverted.json +++ b/src/main/resources/assets/betterend/models/block/crop_block_inverted.json @@ -4,32 +4,32 @@ "particle": "#texture" }, "elements": [ - { "from": [ 4, 0, 0 ], - "to": [ 4, 16, 16 ], + { "from": [ 4.1, 0, 0 ], + "to": [ 4.1, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } } }, - { "from": [ 12, 0, 0 ], - "to": [ 12, 16, 16 ], + { "from": [ 11.9, 0, 0 ], + "to": [ 11.9, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } } }, - { "from": [ 0, 0, 4 ], - "to": [ 16, 16, 4 ], + { "from": [ 0, 0, 4.1 ], + "to": [ 16, 16, 4.1 ], "shade": false, "faces": { "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } } }, - { "from": [ 0, 0, 12 ], - "to": [ 16, 16, 12 ], + { "from": [ 0, 0, 11.9 ], + "to": [ 16, 16, 11.9 ], "shade": false, "faces": { "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_05.json b/src/main/resources/assets/betterend/models/block/jungle_grass_05.json new file mode 100644 index 00000000..b1a6657a --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_05.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "betterend:block/jungle_grass_2" + } +} diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_06.json b/src/main/resources/assets/betterend/models/block/jungle_grass_06.json new file mode 100644 index 00000000..26278b2a --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_06.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/crop_block", + "textures": { + "texture": "betterend:block/jungle_grass_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_07.json b/src/main/resources/assets/betterend/models/block/jungle_grass_07.json new file mode 100644 index 00000000..cf71ab85 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_07.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_inverted", + "textures": { + "cross": "betterend:block/jungle_grass_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_08.json b/src/main/resources/assets/betterend/models/block/jungle_grass_08.json new file mode 100644 index 00000000..df08990e --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_08.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/crop_block_inverted", + "textures": { + "texture": "betterend:block/jungle_grass_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_09.json b/src/main/resources/assets/betterend/models/block/jungle_grass_09.json new file mode 100644 index 00000000..e1c9fb41 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_09.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "betterend:block/twisted_umbrella_moss_small" + } +} diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_10.json b/src/main/resources/assets/betterend/models/block/jungle_grass_10.json new file mode 100644 index 00000000..ec90bfa3 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_10.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/crop_block", + "textures": { + "texture": "betterend:block/twisted_umbrella_moss_small" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_11.json b/src/main/resources/assets/betterend/models/block/jungle_grass_11.json new file mode 100644 index 00000000..4e3e45c4 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_11.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_inverted", + "textures": { + "cross": "betterend:block/twisted_umbrella_moss_small" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/jungle_grass_12.json b/src/main/resources/assets/betterend/models/block/jungle_grass_12.json new file mode 100644 index 00000000..4ca93a64 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/jungle_grass_12.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/crop_block_inverted", + "textures": { + "texture": "betterend:block/twisted_umbrella_moss_small" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/block/jungle_grass_2.png b/src/main/resources/assets/betterend/textures/block/jungle_grass_2.png new file mode 100644 index 00000000..8ee375cd Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/jungle_grass_2.png differ