Example #1
0
        public void HighlightIncompleteParts(IWorldAccessor world, IPlayer player, BlockPos centerPos)
        {
            List <BlockPos> blocks = new List <BlockPos>();
            List <int>      colors = new List <int>();

            for (int i = 0; i < TransformedOffsets.Count; i++)
            {
                Vec4i offset = TransformedOffsets[i];

                Block         block          = world.BlockAccessor.GetBlock(centerPos.X + offset.X, centerPos.Y + offset.Y, centerPos.Z + offset.Z);
                AssetLocation desireBlockLoc = BlockCodes[offset.W];

                if (!WildcardUtil.Match(BlockCodes[offset.W], block.Code))
                {
                    blocks.Add(new BlockPos(offset.X, offset.Y, offset.Z).Add(centerPos));

                    if (block.Id != 0)
                    {
                        colors.Add(ColorUtil.ColorFromRgba(215, 94, 94, 64));
                    }
                    else
                    {
                        int col = world.SearchBlocks(desireBlockLoc)[0].GetColor(world.Api as ICoreClientAPI, centerPos);

                        col &= ~(255 << 24);
                        col |= 96 << 24;

                        colors.Add(col);
                    }
                }
            }

            world.HighlightBlocks(player, HighlightSlotId, blocks, colors);
        }
Example #2
0
        public void ResendBlockHighlights(WorldEdit we)
        {
            var player = world.PlayerByUid(PlayerUID);

            HighlightSelectedArea();

            if (ToolsEnabled)
            {
                EnumHighlightBlocksMode mode = EnumHighlightBlocksMode.CenteredToSelectedBlock;
                if (ToolOffsetMode == EnumToolOffsetMode.Attach)
                {
                    mode = EnumHighlightBlocksMode.AttachedToSelectedBlock;
                }
                if (ToolInstance != null)
                {
                    world.HighlightBlocks(player, (int)EnumHighlightSlot.Brush, ToolInstance.GetBlockHighlights(we), ToolInstance.GetBlockHighlightColors(we), mode, EnumHighlightShape.Arbitrary);
                }
            }
            else
            {
                world.HighlightBlocks(player, (int)EnumHighlightSlot.Brush, new List <BlockPos>(), new List <int>());
            }
        }
Example #3
0
 public void ClearHighlights(IWorldAccessor world, IPlayer player)
 {
     world.HighlightBlocks(player, HighlightSlotId, new List <BlockPos>(), new List <int>());
 }