diff --git a/src/main/java/com/minelittlepony/unicopia/block/SlimeDropBlock.java b/src/main/java/com/minelittlepony/unicopia/block/SlimeDropBlock.java index 09784e86..9de60ddd 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/SlimeDropBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/SlimeDropBlock.java @@ -8,8 +8,6 @@ import com.minelittlepony.unicopia.ducks.Climbable; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; -import net.fabricmc.fabric.api.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tools.FabricToolTags; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; @@ -22,7 +20,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtHelper; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundCategory; import net.minecraft.state.StateManager; import net.minecraft.state.property.EnumProperty; @@ -55,27 +52,13 @@ public class SlimeDropBlock extends Block implements Climbable { Block.createCuboidShape(2, 0, 2, 14, 12, 14), }; - public SlimeDropBlock() { - super(FabricBlockSettings.of(UMaterials.HIVE) - .ticksRandomly() - .breakInstantly() - .lightLevel(9) - .slipperiness(0.5F) - .sounds(BlockSoundGroup.SLIME) - .breakByTool(FabricToolTags.SHOVELS, 2) - .build() - ); - + public SlimeDropBlock(Settings settings) { + super(settings); setDefaultState(stateManager.getDefaultState() .with(AGE, 0) .with(SHAPE, Shape.BULB)); } - @Override - public boolean isTranslucent(BlockState state, BlockView view, BlockPos pos) { - return true; - } - @Override public Block.OffsetType getOffsetType() { return Block.OffsetType.XZ; diff --git a/src/main/java/com/minelittlepony/unicopia/block/SlimeLayerBlock.java b/src/main/java/com/minelittlepony/unicopia/block/SlimeLayerBlock.java index 347a1a7e..c2a3ad0a 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/SlimeLayerBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/SlimeLayerBlock.java @@ -1,33 +1,36 @@ package com.minelittlepony.unicopia.block; -import net.fabricmc.fabric.api.block.FabricBlockSettings; -import net.minecraft.block.BlockState; -import net.minecraft.block.Material; -import net.minecraft.block.MaterialColor; +import net.minecraft.block.Blocks; import net.minecraft.block.SnowBlock; import net.minecraft.entity.Entity; -import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; import net.minecraft.world.World; public class SlimeLayerBlock extends SnowBlock { - public SlimeLayerBlock() { - super(FabricBlockSettings.of(Material.CLAY) - .sounds(BlockSoundGroup.SLIME) - .materialColor(MaterialColor.GRASS) - .build() - ); + public SlimeLayerBlock(Settings settings) { + super(settings); + } + + @Override + public void onLandedUpon(World world, BlockPos pos, Entity entity, float distance) { + Blocks.SLIME_BLOCK.onLandedUpon(world, pos, entity, distance); + } + + @Override + public void onEntityLand(BlockView world, Entity entity) { + Blocks.SLIME_BLOCK.onEntityLand(world, entity); } @Override public void onSteppedOn(World world, BlockPos pos, Entity entity) { - float factor = getMotionFactor(world.getBlockState(pos)); + double velocity = Math.abs(entity.getVelocity().y); - entity.setVelocity(entity.getVelocity().multiply(factor)); - } + if (velocity < 0.1 && !entity.bypassesSteppingEffects()) { + double factor = 0.4D + velocity * (0.2D * 8/world.getBlockState(pos).get(LAYERS)); - protected float getMotionFactor(BlockState state) { - return 1/state.get(LAYERS); + entity.setVelocity(entity.getVelocity().multiply(factor, 1, factor)); + } } } diff --git a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java index 874ca759..053d7b55 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java +++ b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java @@ -13,9 +13,11 @@ import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.structure.CustomSaplingGenerator; import net.fabricmc.fabric.api.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tools.FabricToolTags; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; import net.minecraft.block.SaplingBlock; import net.minecraft.item.ItemStack; import net.minecraft.sound.BlockSoundGroup; @@ -63,8 +65,19 @@ public interface UBlocks { ChitinBlock CHITIN_SHELL_BLOCK = register(new ChitinBlock(), "chitin_shell_block"); Block CHISELED_CHITIN_SHELL_BLOCK = register(new ChiselledChitinBlock(), "chiseled_chitin_shell_block"); - SlimeDropBlock SLIME_DROP = register(new SlimeDropBlock(), "slime_drop"); - SlimeLayerBlock SLIME_LAYER = register(new SlimeLayerBlock(), "slime_layer"); + SlimeDropBlock SLIME_DROP = register(new SlimeDropBlock(FabricBlockSettings.of(UMaterials.HIVE) + .ticksRandomly() + .breakInstantly() + .lightLevel(9) + .slipperiness(0.5F) + .sounds(BlockSoundGroup.SLIME) + .breakByTool(FabricToolTags.SHOVELS, 2) + .build()), "slime_drop"); + SlimeLayerBlock SLIME_LAYER = register(new SlimeLayerBlock(FabricBlockSettings.of(Material.CLAY, MaterialColor.GRASS) + .sounds(BlockSoundGroup.SLIME) + .slipperiness(0.8F) + .nonOpaque() + .build()), "slime_layer"); Block SUGAR_BLOCK = register(new SugarBlock(), "sugar_block"); Block APPLE_LEAVES = register(new FruitLeavesBlock() diff --git a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java index 97fb948d..2b247a26 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java +++ b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java @@ -47,7 +47,9 @@ public interface URenderers { UBlocks.CLOUD_ANVIL, UBlocks.CLOUD_FARMLAND, UBlocks.CLOUD_BLOCK, UBlocks.CLOUD_SLAB, UBlocks.CLOUD_STAIRS, UBlocks.CLOUD_FENCE, UBlocks.DENSE_CLOUD_BLOCK, UBlocks.DENSE_CLOUD_SLAB, - UBlocks.ENCHANTED_CLOUD_BLOCK, UBlocks.ENCHANTED_CLOUD_SLAB + UBlocks.ENCHANTED_CLOUD_BLOCK, UBlocks.ENCHANTED_CLOUD_SLAB, + + UBlocks.SLIME_DROP, UBlocks.SLIME_LAYER ); } }