Snow & ice
This commit is contained in:
parent
929d758788
commit
0ddc5e44eb
11 changed files with 194 additions and 2 deletions
|
@ -0,0 +1,46 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.particle.ParticleEffect;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
import ru.betterend.registry.EndParticles;
|
||||
import ru.betterend.util.BlocksHelper;
|
||||
|
||||
public class BlockAncientEmeraldIce extends BlockBase {
|
||||
public BlockAncientEmeraldIce() {
|
||||
super(FabricBlockSettings.copyOf(Blocks.BLUE_ICE).ticksRandomly());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
|
||||
Direction dir = BlocksHelper.randomDirection(random);
|
||||
pos = pos.offset(dir);
|
||||
state = world.getBlockState(pos);
|
||||
if (state.isOf(Blocks.WATER)) {
|
||||
world.setBlockState(pos, EndBlocks.EMERALD_ICE.getDefaultState());
|
||||
makeParticles(world, pos, random);
|
||||
}
|
||||
else if (state.isOf(EndBlocks.EMERALD_ICE)) {
|
||||
world.setBlockState(pos, EndBlocks.DENSE_EMERALD_ICE.getDefaultState());
|
||||
makeParticles(world, pos, random);
|
||||
}
|
||||
}
|
||||
|
||||
private void makeParticles(ServerWorld world, BlockPos pos, Random random) {
|
||||
for (int i = 0; i < 20; i++) {
|
||||
int side = random.nextInt(3);
|
||||
double x = (side == 0 ? random.nextDouble() : random.nextBoolean() ? 0 : 1) + pos.getX();
|
||||
double y = (side == 1 ? random.nextDouble() : random.nextBoolean() ? 0 : 1) + pos.getY();
|
||||
double z = (side == 2 ? random.nextDouble() : random.nextBoolean() ? 0 : 1) + pos.getZ();
|
||||
world.addParticle(EndParticles.SNOWFLAKE, x, y, z, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
18
src/main/java/ru/betterend/blocks/BlockDenseEmeraldIce.java
Normal file
18
src/main/java/ru/betterend/blocks/BlockDenseEmeraldIce.java
Normal file
|
@ -0,0 +1,18 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Blocks;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
||||
public class BlockDenseEmeraldIce extends BlockBase implements IRenderTypeable {
|
||||
public BlockDenseEmeraldIce() {
|
||||
super(FabricBlockSettings.copyOf(Blocks.PACKED_ICE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ERenderLayer getRenderLayer() {
|
||||
return ERenderLayer.TRANSLUCENT;
|
||||
}
|
||||
}
|
11
src/main/java/ru/betterend/blocks/BlockDenseSnow.java
Normal file
11
src/main/java/ru/betterend/blocks/BlockDenseSnow.java
Normal file
|
@ -0,0 +1,11 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Blocks;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
|
||||
public class BlockDenseSnow extends BlockBase {
|
||||
public BlockDenseSnow() {
|
||||
super(FabricBlockSettings.copyOf(Blocks.SNOW));
|
||||
}
|
||||
}
|
98
src/main/java/ru/betterend/blocks/BlockEmeraldIce.java
Normal file
98
src/main/java/ru/betterend/blocks/BlockEmeraldIce.java
Normal file
|
@ -0,0 +1,98 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.Material;
|
||||
import net.minecraft.block.TransparentBlock;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.enchantment.Enchantments;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.LightType;
|
||||
import net.minecraft.world.World;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
import ru.betterend.patterns.BlockPatterned;
|
||||
import ru.betterend.patterns.Patterns;
|
||||
|
||||
public class BlockEmeraldIce extends TransparentBlock implements IRenderTypeable, BlockPatterned {
|
||||
public BlockEmeraldIce() {
|
||||
super(FabricBlockSettings.copyOf(Blocks.ICE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ERenderLayer getRenderLayer() {
|
||||
return ERenderLayer.TRANSLUCENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack) {
|
||||
super.afterBreak(world, player, pos, state, blockEntity, stack);
|
||||
if (EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, stack) == 0) {
|
||||
if (world.getDimension().isUltrawarm()) {
|
||||
world.removeBlock(pos, false);
|
||||
return;
|
||||
}
|
||||
|
||||
Material material = world.getBlockState(pos.down()).getMaterial();
|
||||
if (material.blocksMovement() || material.isLiquid()) {
|
||||
world.setBlockState(pos, Blocks.WATER.getDefaultState());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
|
||||
if (world.getLightLevel(LightType.BLOCK, pos) > 11 - state.getOpacity(world, pos)) {
|
||||
this.melt(state, world, pos);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void melt(BlockState state, World world, BlockPos pos) {
|
||||
if (world.getDimension().isUltrawarm()) {
|
||||
world.removeBlock(pos, false);
|
||||
}
|
||||
else {
|
||||
world.setBlockState(pos, Blocks.WATER.getDefaultState());
|
||||
world.updateNeighbor(pos, Blocks.WATER, pos);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
|
||||
@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) {
|
||||
Identifier blockId = Registry.BLOCK.getId(this);
|
||||
return Patterns.createJson(Patterns.BLOCK_BASE, blockId.getPath(), block);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier statePatternId() {
|
||||
return Patterns.STATE_SIMPLE;
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import ru.betterend.BetterEnd;
|
|||
import ru.betterend.blocks.AeterniumBlock;
|
||||
import ru.betterend.blocks.AuroraCrystalBlock;
|
||||
import ru.betterend.blocks.BlockAmber;
|
||||
import ru.betterend.blocks.BlockAncientEmeraldIce;
|
||||
import ru.betterend.blocks.BlockBlueVine;
|
||||
import ru.betterend.blocks.BlockBlueVineLantern;
|
||||
import ru.betterend.blocks.BlockBlueVineSeed;
|
||||
|
@ -19,7 +20,10 @@ import ru.betterend.blocks.BlockBulbVine;
|
|||
import ru.betterend.blocks.BlockBulbVineSeed;
|
||||
import ru.betterend.blocks.BlockCharnia;
|
||||
import ru.betterend.blocks.BlockChorusGrass;
|
||||
import ru.betterend.blocks.BlockDenseEmeraldIce;
|
||||
import ru.betterend.blocks.BlockDenseSnow;
|
||||
import ru.betterend.blocks.BlockDragonTreeSapling;
|
||||
import ru.betterend.blocks.BlockEmeraldIce;
|
||||
import ru.betterend.blocks.BlockEndLily;
|
||||
import ru.betterend.blocks.BlockEndLilySeed;
|
||||
import ru.betterend.blocks.BlockEndLotusFlower;
|
||||
|
@ -127,6 +131,11 @@ public class EndBlocks {
|
|||
|
||||
public static final Block HYDROTHERMAL_VENT = registerBlock("hydrothermal_vent", new BlockHydrothermalVent());
|
||||
|
||||
public static final Block DENSE_SNOW = registerBlock("dense_snow", new BlockDenseSnow());
|
||||
public static final Block EMERALD_ICE = registerBlock("emerald_ice", new BlockEmeraldIce());
|
||||
public static final Block DENSE_EMERALD_ICE = registerBlock("dense_emerald_ice", new BlockDenseEmeraldIce());
|
||||
public static final Block ANCIENT_EMERALD_ICE = registerBlock("ancient_emerald_ice", new BlockAncientEmeraldIce());
|
||||
|
||||
// Wooden Materials And Trees //
|
||||
public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling());
|
||||
public static final Block MOSSY_GLOWSHROOM_CAP = registerBlock("mossy_glowshroom_cap", new BlockMossyGlowshroomCap());
|
||||
|
|
|
@ -463,5 +463,10 @@
|
|||
"block.betterend.glowing_pillar_roots": "Glowing Pillar Roots",
|
||||
"block.betterend.glowing_pillar_seed": "Glowing Pillar Seed",
|
||||
|
||||
"biome.betterend.ice_starfield": "Ice Starfield"
|
||||
"biome.betterend.ice_starfield": "Ice Starfield",
|
||||
|
||||
"block.betterend.ancient_emerald_ice": "Ancient Emerald Ice",
|
||||
"block.betterend.dense_emerald_ice": "Dense Emerald Ice",
|
||||
"block.betterend.dense_snow": "Dense Snow",
|
||||
"block.betterend.emerald_ice": "Emerald Ice"
|
||||
}
|
|
@ -465,5 +465,10 @@
|
|||
"block.betterend.glowing_pillar_roots": "Корни светящейся колонны",
|
||||
"block.betterend.glowing_pillar_seed": "Семя светящейся колонны",
|
||||
|
||||
"biome.betterend.ice_starfield": "Поле ледяных звёзд"
|
||||
"biome.betterend.ice_starfield": "Поле ледяных звёзд",
|
||||
|
||||
"block.betterend.ancient_emerald_ice": "Древний изумрудный лёд",
|
||||
"block.betterend.dense_emerald_ice": "Плотный изумрудный лёд",
|
||||
"block.betterend.dense_snow": "Плотный снег",
|
||||
"block.betterend.emerald_ice": "Изумрудный лёд"
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 270 B |
Binary file not shown.
After Width: | Height: | Size: 271 B |
Binary file not shown.
After Width: | Height: | Size: 256 B |
Binary file not shown.
After Width: | Height: | Size: 432 B |
Loading…
Add table
Add a link
Reference in a new issue