From 1195ca4cd3c8283f11b494609943e4b0f2f1dd4d Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 6 Dec 2020 13:41:24 +0300 Subject: [PATCH] Menger sponge, translation, fixes --- .../betterend/blocks/BlockMengerSponge.java | 96 ++++++++++++++++++ .../blocks/BlockMengerSpongeWet.java | 76 ++++++++++++++ .../java/ru/betterend/registry/EndBiomes.java | 4 +- .../java/ru/betterend/registry/EndBlocks.java | 5 + ...rSprings.java => BiomeSulphurSprings.java} | 4 +- .../assets/betterend/lang/en_gb.json | 3 +- .../assets/betterend/lang/en_us.json | 8 +- .../assets/betterend/lang/ru_ru.json | 8 +- .../textures/block/menger_sponge.png | Bin 0 -> 2173 bytes .../textures/block/menger_sponge_wet.png | Bin 0 -> 1984 bytes 10 files changed, 195 insertions(+), 9 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/BlockMengerSponge.java create mode 100644 src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java rename src/main/java/ru/betterend/world/biome/{BiomeSulfurSprings.java => BiomeSulphurSprings.java} (87%) create mode 100644 src/main/resources/assets/betterend/textures/block/menger_sponge.png create mode 100644 src/main/resources/assets/betterend/textures/block/menger_sponge_wet.png diff --git a/src/main/java/ru/betterend/blocks/BlockMengerSponge.java b/src/main/java/ru/betterend/blocks/BlockMengerSponge.java new file mode 100644 index 00000000..9acd5ea0 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockMengerSponge.java @@ -0,0 +1,96 @@ +package ru.betterend.blocks; + +import java.util.Queue; + +import com.google.common.collect.Lists; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.FluidBlock; +import net.minecraft.block.FluidDrainable; +import net.minecraft.block.Material; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.tag.FluidTags; +import net.minecraft.util.Pair; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import ru.betterend.blocks.basis.BlockBase; +import ru.betterend.registry.EndBlocks; + +public class BlockMengerSponge extends BlockBase { + public BlockMengerSponge() { + super(FabricBlockSettings.copyOf(Blocks.SPONGE)); + } + + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean notify) { + if (absorbWater(world, pos)) { + world.setBlockState(pos, EndBlocks.MENGER_SPONGE_WET.getDefaultState()); + } + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (absorbWater(world, pos)) { + return EndBlocks.MENGER_SPONGE_WET.getDefaultState(); + } + return state; + } + + private boolean absorbWater(WorldAccess world, BlockPos pos) { + Queue> queue = Lists.newLinkedList(); + queue.add(new Pair(pos, 0)); + int i = 0; + + while (!queue.isEmpty()) { + Pair pair = queue.poll(); + BlockPos blockPos = (BlockPos) pair.getLeft(); + int j = (Integer) pair.getRight(); + Direction[] var8 = Direction.values(); + int var9 = var8.length; + + for (int var10 = 0; var10 < var9; ++var10) { + Direction direction = var8[var10]; + BlockPos blockPos2 = blockPos.offset(direction); + BlockState blockState = world.getBlockState(blockPos2); + FluidState fluidState = world.getFluidState(blockPos2); + Material material = blockState.getMaterial(); + if (fluidState.isIn(FluidTags.WATER)) { + if (blockState.getBlock() instanceof FluidDrainable && ((FluidDrainable) blockState.getBlock()).tryDrainFluid(world, blockPos2, blockState) != Fluids.EMPTY) { + ++i; + if (j < 6) { + queue.add(new Pair(blockPos2, j + 1)); + } + } + else if (blockState.getBlock() instanceof FluidBlock) { + world.setBlockState(blockPos2, Blocks.AIR.getDefaultState(), 3); + ++i; + if (j < 6) { + queue.add(new Pair(blockPos2, j + 1)); + } + } + else if (material == Material.UNDERWATER_PLANT || material == Material.REPLACEABLE_UNDERWATER_PLANT) { + BlockEntity blockEntity = blockState.getBlock().hasBlockEntity() ? world.getBlockEntity(blockPos2) : null; + dropStacks(blockState, world, blockPos2, blockEntity); + world.setBlockState(blockPos2, Blocks.AIR.getDefaultState(), 3); + ++i; + if (j < 6) { + queue.add(new Pair(blockPos2, j + 1)); + } + } + } + } + + if (i > 64) { + break; + } + } + + return i > 0; + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java b/src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java new file mode 100644 index 00000000..e0abcdba --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java @@ -0,0 +1,76 @@ +package ru.betterend.blocks; + +import java.util.Random; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; +import ru.betterend.blocks.basis.BlockBase; +import ru.betterend.registry.EndBlocks; + +public class BlockMengerSpongeWet extends BlockBase { + public BlockMengerSpongeWet() { + super(FabricBlockSettings.copyOf(Blocks.WET_SPONGE)); + } + + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean notify) { + if (world.getDimension().isUltrawarm()) { + world.setBlockState(pos, EndBlocks.MENGER_SPONGE.getDefaultState(), 3); + world.syncWorldEvent(2009, pos, 0); + world.playSound((PlayerEntity) null, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 1.0F, (1.0F + world.getRandom().nextFloat() * 0.2F) * 0.7F); + } + } + + @Override + @Environment(EnvType.CLIENT) + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + Direction direction = Direction.random(random); + if (direction != Direction.UP) { + BlockPos blockPos = pos.offset(direction); + BlockState blockState = world.getBlockState(blockPos); + if (!state.isOpaque() || !blockState.isSideSolidFullSquare(world, blockPos, direction.getOpposite())) { + double x = (double) pos.getX(); + double y = (double) pos.getY(); + double z = (double) pos.getZ(); + if (direction == Direction.DOWN) { + y -= 0.05; + x += random.nextDouble(); + z += random.nextDouble(); + } + else { + y += random.nextDouble() * 0.8; + if (direction.getAxis() == Direction.Axis.X) { + z += random.nextDouble(); + if (direction == Direction.EAST) { + ++x; + } + else { + x += 0.05; + } + } + else { + x += random.nextDouble(); + if (direction == Direction.SOUTH) { + ++z; + } + else { + z += 0.05; + } + } + } + + world.addParticle(ParticleTypes.DRIPPING_WATER, x, y, z, 0, 0, 0); + } + } + } +} diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index 7ecc0847..f1db8621 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -35,7 +35,7 @@ import ru.betterend.world.biome.BiomeMegalake; import ru.betterend.world.biome.BiomeMegalakeGrove; import ru.betterend.world.biome.BiomePaintedMountains; import ru.betterend.world.biome.BiomeShadowForest; -import ru.betterend.world.biome.BiomeSulfurSprings; +import ru.betterend.world.biome.BiomeSulphurSprings; import ru.betterend.world.biome.EndBiome; import ru.betterend.world.generator.BiomePicker; import ru.betterend.world.generator.BiomeType; @@ -73,7 +73,7 @@ public class EndBiomes { public static final EndBiome SHADOW_FOREST = registerBiome(new BiomeShadowForest(), BiomeType.LAND); public static final EndBiome AMBER_LAND = registerBiome(new BiomeAmberLand(), BiomeType.LAND); public static final EndBiome BLOSSOMING_SPIRES = registerBiome(new BiomeBlossomingSpires(), BiomeType.LAND); - public static final EndBiome SULFUR_SPRINGS = registerBiome(new BiomeSulfurSprings(), BiomeType.LAND); + public static final EndBiome SULPHUR_SPRINGS = registerBiome(new BiomeSulphurSprings(), BiomeType.LAND); public static void register() {} diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index aadb758b..45628c96 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -33,6 +33,8 @@ import ru.betterend.blocks.BlockHydraluxPetalColored; import ru.betterend.blocks.BlockHydraluxSapling; import ru.betterend.blocks.BlockHydrothermalVent; import ru.betterend.blocks.BlockLacugroveSapling; +import ru.betterend.blocks.BlockMengerSponge; +import ru.betterend.blocks.BlockMengerSpongeWet; import ru.betterend.blocks.BlockMossyGlowshroomCap; import ru.betterend.blocks.BlockMossyGlowshroomHymenophore; import ru.betterend.blocks.BlockMossyGlowshroomSapling; @@ -164,6 +166,9 @@ public class EndBlocks { public static final Block BLUE_VINE_FUR = registerBlock("blue_vine_fur", new BlockFur(BLUE_VINE_SEED, 15, 3)); public static final Block BUBBLE_CORAL = registerBlock("bubble_coral", new BlockBubbleCoral()); + public static final Block MENGER_SPONGE = registerBlock("menger_sponge", new BlockMengerSponge()); + public static final Block MENGER_SPONGE_WET = registerBlock("menger_sponge_wet", new BlockMengerSpongeWet()); + public static final Block END_LILY = registerBlockNI("end_lily", new BlockEndLily()); public static final Block END_LILY_SEED = registerBlock("end_lily_seed", new BlockEndLilySeed()); diff --git a/src/main/java/ru/betterend/world/biome/BiomeSulfurSprings.java b/src/main/java/ru/betterend/world/biome/BiomeSulphurSprings.java similarity index 87% rename from src/main/java/ru/betterend/world/biome/BiomeSulfurSprings.java rename to src/main/java/ru/betterend/world/biome/BiomeSulphurSprings.java index 776409df..f483282d 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeSulfurSprings.java +++ b/src/main/java/ru/betterend/world/biome/BiomeSulphurSprings.java @@ -5,8 +5,8 @@ import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; import ru.betterend.world.surface.SurfaceBuilders; -public class BiomeSulfurSprings extends EndBiome { - public BiomeSulfurSprings() { +public class BiomeSulphurSprings extends EndBiome { + public BiomeSulphurSprings() { super(new BiomeDefinition("sulfur_springs") .setSurface(SurfaceBuilders.SULPHURIC_SURFACE) .setWaterColor(25, 90, 157) diff --git a/src/main/resources/assets/betterend/lang/en_gb.json b/src/main/resources/assets/betterend/lang/en_gb.json index dfe06148..b52aab43 100644 --- a/src/main/resources/assets/betterend/lang/en_gb.json +++ b/src/main/resources/assets/betterend/lang/en_gb.json @@ -15,5 +15,6 @@ "block.betterend.sulphuric_rock_tiles": "Sulphuric Rock Tiles", "block.betterend.sulphuric_rock_wall": "Sulphuric Rock Wall", "block.betterend.sulphur_crystal": "Sulphur Crystal", - "item.betterend.crystalline_sulphur": "Sulphur" + "item.betterend.crystalline_sulphur": "Sulphur", + "biome.betterend.sulphur_springs": "Sulphur Springs", } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index f57c2432..4856ca98 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -391,7 +391,7 @@ "block.betterend.sulphur_crystal": "Sulfur Crystal", "item.betterend.crystalline_sulphur": "Sulfur", - "biome.betterend.sulfur_springs": "Sulfur Springs", + "biome.betterend.sulphur_springs": "Sulfur Springs", "block.betterend.hydralux_petal_block": "Hydralux Petal Block", "block.betterend.hydralux_petal_block_black": "Black Petal Block", "block.betterend.hydralux_petal_block_blue": "Blue Petal Block", @@ -411,5 +411,9 @@ "block.betterend.hydralux_petal_block_yellow": "Yellow Petal Block", "block.betterend.hydralux_sapling": "Hydralux Sapling", "block.betterend.hydrothermal_vent": "Hydrothermal Vent", - "item.betterend.hydralux_petal": "Hydralux Petal" + "item.betterend.hydralux_petal": "Hydralux Petal", + + "block.betterend.menger_sponge": "Menger Sponge", + "block.betterend.menger_sponge_wet": "Wet Menger Sponge", + "block.betterend.tube_worm": "Tube Worm" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index 26ab6d19..e4d6755d 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -393,7 +393,7 @@ "block.betterend.sulphur_crystal": "Кристалл серы", "item.betterend.crystalline_sulphur": "Кристаллическая сера", - "biome.betterend.sulfur_springs": "Серные источники", + "biome.betterend.sulphur_springs": "Серные источники", "block.betterend.hydralux_petal_block": "Блок лепестков гидралюкса", "block.betterend.hydralux_petal_block_black": "Чёрный блок лепестков", "block.betterend.hydralux_petal_block_blue": "Синий блок лепестков", @@ -413,5 +413,9 @@ "block.betterend.hydralux_petal_block_yellow": "Жёлтый блок лепестков", "block.betterend.hydralux_sapling": "Саженец гидралюкса", "block.betterend.hydrothermal_vent": "Гидротермальный источник", - "item.betterend.hydralux_petal": "Лепесток гидралюкса" + "item.betterend.hydralux_petal": "Лепесток гидралюкса", + + "block.betterend.menger_sponge": "Губка Менгера", + "block.betterend.menger_sponge_wet": "Мокрая губка Менгера", + "block.betterend.tube_worm": "Трубчатый червь" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/block/menger_sponge.png b/src/main/resources/assets/betterend/textures/block/menger_sponge.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcdcb25c614002eee63ac4426a7cfce5678adf3 GIT binary patch literal 2173 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 literal 0 HcmV?d00001