/** * This happens when the block is placed in the world. */ public override void PlaceBlock(WorldBase _world, BlockPlacement.Result _result, EntityAlive _ea) { Block block = Block.list[_result.blockValue.type]; if (block.shape.IsTerrain()) { _world.SetBlockRPC(_result.clrIdx, _result.blockPos, _result.blockValue, this.Density); } else if (!block.IsTerrainDecoration) { _world.SetBlockRPC(_result.clrIdx, _result.blockPos, _result.blockValue, MarchingCubes.DensityAir); } else { _world.SetBlockRPC(_result.clrIdx, _result.blockPos, _result.blockValue); } TileEntityBlockTransformer tileEntityBlockTransformer = _world.GetTileEntity(_result.clrIdx, _result.blockPos) as TileEntityBlockTransformer; if (tileEntityBlockTransformer == null) { Log.Warning("Failed to create tile entity"); return; } if (_ea != null && _ea.entityType == EntityType.Player) { tileEntityBlockTransformer.bPlayerStorage = true; tileEntityBlockTransformer.worldTimeTouched = _world.GetWorldTime(); tileEntityBlockTransformer.SetEmpty(); } Log.Out("Created successfullly."); }
public override void PlaceBlock(WorldBase _world, BlockPlacement.Result _result, EntityAlive _ea) { base.PlaceBlock(_world, _result, _ea); TileEntityPoweredWorkstationSDX tileEntityWorkstation = (TileEntityPoweredWorkstationSDX)_world.GetTileEntity(_result.clrIdx, _result.blockPos); if (tileEntityWorkstation != null) { tileEntityWorkstation.IsPlayerPlaced = true; } }
/** * Will be ran when this method is executedm **/ static bool Prefix(EntityAlive _ea, BlockPlacement.Result _result) { Block block = Block.list[_result.blockValue.type]; if (block.CanPickup) { return(true); } EntityPlayerLocal player = _ea as EntityPlayerLocal; ProgressionValue masterProgression = player.Progression.GetProgressionValue("LModMaster"); //set in progression.xml ProgressionValue perkProgression = player.Progression.GetProgressionValue("LModPlaceBlock"); //set in progression.xml if (masterProgression == null || perkProgression == null || perkProgression.Level == 0) { return(true); } float multiplier = 1 + ((masterProgression.Level / 10) + ((Math.Max(1, perkProgression.Level) * 2) / 10)); player.Progression.AddLevelExp(Mathf.FloorToInt(LMod_Block_PlaceBlock.expAmount * multiplier)); return(true); }
public override void OnBlockPlaceBefore(WorldBase _world, ref BlockPlacement.Result _bpResult, EntityAlive _ea, Random _rnd) { DisplayChatAreaText("Gonna put ON water"); // save the current block type (water or watermoving) base.OnBlockPlaceBefore(_world, ref _bpResult, _ea, _rnd); }