From 907c6da775a368039d3802e942ef3e95eeef55f9 Mon Sep 17 00:00:00 2001 From: Adubbz Date: Sun, 30 Jun 2013 20:06:31 +1000 Subject: [PATCH] Added particles and sounds for walking in puddles --- .../biomesoplenty/BiomesOPlenty.java | 2 + .../handlers/MovementHandler.java | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/minecraft/biomesoplenty/handlers/MovementHandler.java diff --git a/src/minecraft/biomesoplenty/BiomesOPlenty.java b/src/minecraft/biomesoplenty/BiomesOPlenty.java index faf3eda69..73d0123e9 100644 --- a/src/minecraft/biomesoplenty/BiomesOPlenty.java +++ b/src/minecraft/biomesoplenty/BiomesOPlenty.java @@ -16,6 +16,7 @@ import biomesoplenty.handlers.BOPCraftHandler; import biomesoplenty.handlers.BonemealHandler; import biomesoplenty.handlers.BreakSpeedHandler; import biomesoplenty.handlers.EntityEventHandler; +import biomesoplenty.handlers.MovementHandler; import biomesoplenty.handlers.SoundHandler; import biomesoplenty.handlers.TickHandlerClient; import biomesoplenty.handlers.TickHandlerServer; @@ -101,6 +102,7 @@ public class BiomesOPlenty MinecraftForge.EVENT_BUS.register(new EntityEventHandler()); MinecraftForge.EVENT_BUS.register(new BOPLiquidHelper()); MinecraftForge.EVENT_BUS.register(new BreakSpeedHandler()); + MinecraftForge.EVENT_BUS.register(new MovementHandler()); proxy.registerRenderers(); diff --git a/src/minecraft/biomesoplenty/handlers/MovementHandler.java b/src/minecraft/biomesoplenty/handlers/MovementHandler.java new file mode 100644 index 000000000..209011ec5 --- /dev/null +++ b/src/minecraft/biomesoplenty/handlers/MovementHandler.java @@ -0,0 +1,52 @@ +package biomesoplenty.handlers; + +import biomesoplenty.api.Blocks; +import net.minecraft.block.Block; +import net.minecraft.block.BlockFlower; +import net.minecraft.entity.EntityLiving; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.event.ForgeSubscribe; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; + +public class MovementHandler +{ + @ForgeSubscribe + public void onEntityLivingUpdate(LivingUpdateEvent event) + { + EntityLiving entity = event.entityLiving; + + World world = entity.worldObj; + + int x = MathHelper.floor_double(entity.posX); + int y = MathHelper.floor_double(entity.boundingBox.minY); + int z = MathHelper.floor_double(entity.posZ); + + int blockID = world.getBlockId(x, y, z); + + if (blockID == Blocks.puddle.get().blockID) + { + if ((entity.motionX > 0 || entity.motionX < 0) || (entity.motionZ > 0 || entity.motionZ < 0)) + { + if (event.entityLiving.isCollidedVertically) + { + if (world.rand.nextInt(2) == 0) + { + if (world.rand.nextInt(2) == 0) + { + float f = MathHelper.sqrt_double(entity.motionX * entity.motionX * 0.20000000298023224D + entity.motionY * entity.motionY + entity.motionZ * entity.motionZ * 0.20000000298023224D) * 0.2F; + + if (f > 1.0F) + { + f = 1.0F; + } + + entity.playSound("liquid.splash", f, 1.0F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.4F); + } + world.spawnParticle("splash", entity.posX + ((double)world.rand.nextFloat() - 0.5D) * (double)entity.width, entity.boundingBox.minY + 0.1D, entity.posZ + ((double)world.rand.nextFloat() - 0.5D) * (double)entity.width, -entity.motionX, 0.6D, -entity.motionZ); + } + } + } + } + } +}