From 5b0d3bb77081851fabd4950f56d01b89e36a8ee6 Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 29 Aug 2022 14:48:07 +0200 Subject: [PATCH] Fixed snow being placed in illegal positions --- .../ability/magic/spell/effect/IceSpell.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/IceSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/IceSpell.java index a30b9d4c..63092859 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/IceSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/IceSpell.java @@ -5,6 +5,7 @@ import com.minelittlepony.unicopia.ability.magic.spell.Situation; import com.minelittlepony.unicopia.ability.magic.spell.trait.SpellTraits; import com.minelittlepony.unicopia.ability.magic.spell.trait.Trait; import com.minelittlepony.unicopia.block.state.StateMaps; +import com.minelittlepony.unicopia.block.state.StatePredicate; import com.minelittlepony.unicopia.particle.ParticleUtils; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; @@ -12,11 +13,7 @@ import com.minelittlepony.unicopia.util.VecHelper; import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.Material; -import net.minecraft.block.PlantBlock; +import net.minecraft.block.*; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.TntEntity; @@ -93,14 +90,13 @@ public class IceSpell extends AbstractSpell { private boolean applyBlockSingle(Entity owner, World world, BlockPos pos, Situation situation) { BlockState state = world.getBlockState(pos); - if ((situation == Situation.PROJECTILE - && StateMaps.SNOW_PILED.convert(world, pos)) - || StateMaps.ICE_AFFECTED.convert(world, pos)) { + if ((situation == Situation.PROJECTILE && StateMaps.SNOW_PILED.convert(world, pos)) + || StateMaps.ICE_AFFECTED.convert(world, pos)) { return true; } if (world.isTopSolid(pos, owner) - || state.isOf(Blocks.SNOW) + || (state.isOf(Blocks.SNOW) && state.get(SnowBlock.LAYERS) == SnowBlock.MAX_LAYERS) || state.isIn(BlockTags.LEAVES)) { addSnowLayer(world, pos.up()); return true; @@ -117,16 +113,15 @@ public class IceSpell extends AbstractSpell { } private static boolean isSurroundedByIce(World w, BlockPos pos) { - return !PosHelper.adjacentNeighbours(pos).anyMatch(i -> + return PosHelper.adjacentNeighbours(pos).allMatch(i -> w.getBlockState(i).getMaterial() == Material.ICE ); } private static void addSnowLayer(World world, BlockPos pos) { BlockState state = world.getBlockState(pos); - Block id = state.getBlock(); - if (id == Blocks.AIR || (id instanceof PlantBlock)) { + if (state.isAir() || StatePredicate.isPlant(state)) { world.setBlockState(pos, Blocks.SNOW.getDefaultState(), 3); } }