From 5e707876d8051a25c5855de349bdbd3d0604883d Mon Sep 17 00:00:00 2001 From: Ross L Date: Fri, 8 May 2015 18:18:07 -0400 Subject: [PATCH] Added support for placing redstone dust, part 2 --- TrueCraft.Core/Logic/Items/RedstoneItem.cs | 24 +++------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/TrueCraft.Core/Logic/Items/RedstoneItem.cs b/TrueCraft.Core/Logic/Items/RedstoneItem.cs index 076c4bc..0e2fe12 100644 --- a/TrueCraft.Core/Logic/Items/RedstoneItem.cs +++ b/TrueCraft.Core/Logic/Items/RedstoneItem.cs @@ -10,11 +10,6 @@ namespace TrueCraft.Core.Logic.Items { public class RedstoneItem : ItemProvider { - /// - /// Redstone cannot be placed on any of the following BlockIDs - /// - protected static byte[] cannotPlace = { RedstoneDustBlock.BlockID, GlassBlock.BlockID, AirBlock.BlockID }; - public static readonly short ItemID = 0x14B; public override short ID { get { return 0x14B; } } @@ -23,24 +18,11 @@ namespace TrueCraft.Core.Logic.Items public override void ItemUsedOnBlock(Coordinates3D coordinates, ItemStack item, BlockFace face, IWorld world, IRemoteClient user) { - // TODO: Running backwards and spamming redstone dust sometimes causes redstone to be placed on redstone + coordinates += MathHelper.BlockFaceToCoordinates(face); + IBlockProvider supportingBlock = world.BlockRepository.GetBlockProvider(world.GetBlockID(coordinates + Coordinates3D.Down)); - if (face != BlockFace.PositiveY) + if (supportingBlock.Opaque) { - // Redstone dust cannot be placed anywhere but the top of a block - return; - } - - IBlockProvider clickedBlock = world.BlockRepository.GetBlockProvider(world.GetBlockID(coordinates)); - if (null != clickedBlock) - { - if (cannotPlace.Any(b => b == clickedBlock.ID)) - { - return; - } - - coordinates += MathHelper.BlockFaceToCoordinates(face); - world.SetBlockID(coordinates, RedstoneDustBlock.BlockID); item.Count--; user.Inventory[user.SelectedSlot] = item;